summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--volk/tmpl/volk.tmpl.c44
1 files changed, 24 insertions, 20 deletions
diff --git a/volk/tmpl/volk.tmpl.c b/volk/tmpl/volk.tmpl.c
index f915f157f6..eb22435314 100644
--- a/volk/tmpl/volk.tmpl.c
+++ b/volk/tmpl/volk.tmpl.c
@@ -32,28 +32,32 @@
static size_t __alignment = 0;
static intptr_t __alignment_mask = 0;
-struct volk_machine *get_machine(void) {
- extern struct volk_machine *volk_machines[];
- extern unsigned int n_volk_machines;
- static struct volk_machine *machine = NULL;
-
- if(machine != NULL) return machine;
- else {
- unsigned int max_score = 0;
- unsigned int i;
- for(i=0; i<n_volk_machines; i++) {
- if(!(volk_machines[i]->caps & (~volk_get_lvarch()))) {
- if(volk_machines[i]->caps > max_score) {
- max_score = volk_machines[i]->caps;
- machine = volk_machines[i];
- }
- }
+struct volk_machine *get_machine(void)
+{
+ extern struct volk_machine *volk_machines[];
+ extern unsigned int n_volk_machines;
+ static struct volk_machine *machine = NULL;
+
+ if(machine != NULL)
+ return machine;
+ else {
+ unsigned int max_score = 0;
+ unsigned int i;
+ struct volk_machine *max_machine = NULL;
+ for(i=0; i<n_volk_machines; i++) {
+ if(!(volk_machines[i]->caps & (~volk_get_lvarch()))) {
+ if(volk_machines[i]->caps > max_score) {
+ max_score = volk_machines[i]->caps;
+ max_machine = volk_machines[i];
}
- printf("Using Volk machine: %s\n", machine->name);
- __alignment = machine->alignment;
- __alignment_mask = (intptr_t)(__alignment-1);
- return machine;
+ }
}
+ machine = max_machine;
+ printf("Using Volk machine: %s\n", machine->name);
+ __alignment = machine->alignment;
+ __alignment_mask = (intptr_t)(__alignment-1);
+ return machine;
+ }
}
size_t volk_get_alignment(void)