summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--volk/gen/archs.xml8
-rw-r--r--volk/gen/machines.xml4
-rw-r--r--volk/gen/volk_machine_defs.py2
-rw-r--r--volk/lib/CMakeLists.txt12
-rw-r--r--volk/tmpl/volk_machine_xxx.tmpl.c18
5 files changed, 20 insertions, 24 deletions
diff --git a/volk/gen/archs.xml b/volk/gen/archs.xml
index 59cc81cc5..2b0e8e508 100644
--- a/volk/gen/archs.xml
+++ b/volk/gen/archs.xml
@@ -89,7 +89,13 @@
</arch>
<arch name="orc" type="all">
- <flag>lorc-0.4</flag>
+ <flag>none</flag>
+ <overrule>LV_HAVE_ORC</overrule>
+ <overrule_val>no</overrule_val>
+</arch>
+
+<arch name="norc" type="all">
+ <flag>none</flag>
<overrule>LV_HAVE_ORC</overrule>
<overrule_val>no</overrule_val>
</arch>
diff --git a/volk/gen/machines.xml b/volk/gen/machines.xml
index 04ffef22b..6ce077e3c 100644
--- a/volk/gen/machines.xml
+++ b/volk/gen/machines.xml
@@ -48,10 +48,6 @@
<archs>generic 32|64| mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcount avx</archs>
</machine>
-<machine name="avx_only">
-<archs>generic mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcount avx</archs>
-</machine>
-
<machine name="altivec">
<archs>generic altivec</archs>
</machine>
diff --git a/volk/gen/volk_machine_defs.py b/volk/gen/volk_machine_defs.py
index b30a480ba..77ebe64f0 100644
--- a/volk/gen/volk_machine_defs.py
+++ b/volk/gen/volk_machine_defs.py
@@ -69,7 +69,7 @@ for machine_xml in machines_xml:
val = machine_xml.getElementsByTagName(name)[0].firstChild.data
kwargs[name] = val
except: pass
- kwargs['archs'] = kwargs['archs'].split()
+ kwargs['archs'] = kwargs['archs'].split() + ['orc|norc']
register_machine(**kwargs)
if __name__ == '__main__':
diff --git a/volk/lib/CMakeLists.txt b/volk/lib/CMakeLists.txt
index b45f89d02..6e80e99e8 100644
--- a/volk/lib/CMakeLists.txt
+++ b/volk/lib/CMakeLists.txt
@@ -72,6 +72,18 @@ foreach(line ${arch_flag_lines})
endforeach(line)
########################################################################
+# implement overruling in the ORC case,
+# since ORC always passes flag detection
+########################################################################
+if(ORC_FOUND)
+ message(STATUS "Overruled arch not orc")
+ list(REMOVE_ITEM available_archs norc)
+else()
+ message(STATUS "Overruled arch orc")
+ list(REMOVE_ITEM available_archs orc)
+endif()
+
+########################################################################
# implement overruling in the non-multilib case
# this makes things work when both -m32 and -m64 pass
########################################################################
diff --git a/volk/tmpl/volk_machine_xxx.tmpl.c b/volk/tmpl/volk_machine_xxx.tmpl.c
index 023eea502..1f6a77501 100644
--- a/volk/tmpl/volk_machine_xxx.tmpl.c
+++ b/volk/tmpl/volk_machine_xxx.tmpl.c
@@ -58,22 +58,6 @@ $(' | '.join(['(1 << LV_%s)'%a.name.upper() for a in $archs]))#slurp
{$(', '.join(['%s_%s'%($name, a) for a in $tags]))}#slurp
#end def
-#ifdef LV_HAVE_ORC
-struct volk_machine volk_machine_$(this_machine.name) = {
- $make_arch_have_list($this_machine.archs) | (1 << LV_ORC),
- "$this_machine.name",
- $this_machine.alignment,
- #for $kern in $kernels
- #set $taglist, $tagdeps = $kern.get_tags($arch_names + ["orc"])
- "$kern.name",
- $make_tag_str_list($taglist),
- $make_tag_have_list($tagdeps),
- $make_tag_kern_list($kern.name, $taglist),
- $(len($taglist)),
- #end for
-};
-
-#else
struct volk_machine volk_machine_$(this_machine.name) = {
$make_arch_have_list($this_machine.archs),
"$this_machine.name",
@@ -87,5 +71,3 @@ struct volk_machine volk_machine_$(this_machine.name) = {
$(len($taglist)),
#end for
};
-
-#endif