gallium: Restore VSX for llvm >= 4
authorAdam Jackson <ajax@redhat.com>
Thu, 12 Sep 2019 17:07:05 +0000 (13:07 -0400)
committerAdam Jackson <ajax@redhat.com>
Fri, 13 Sep 2019 00:09:12 +0000 (20:09 -0400)
Accidentally dropped in 4fdd455eeb7cffadee86f06c685005a3b64ce94b.

Fixes: 4fdd455e ("gallium: Require LLVM >= 3.4)
Reported-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/gallium/auxiliary/gallivm/lp_bld_misc.cpp

index 3580ea6dd4bc20840f6d32a78166e9f0d6dc9f99..52e9f7bc7707a7f68d73052ef70ff03746711be5 100644 (file)
@@ -410,6 +410,20 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
    if (util_cpu_caps.has_altivec) {
       MAttrs.push_back("-vsx");
    }
+#else
+   /*
+    * Bug 25503 is fixed, by the same fix that fixed
+    * bug 26775, in versions of LLVM later than 3.8 (starting with 3.8.1).
+    * BZ 33531 actually comprises more than one bug, all of
+    * which are fixed in LLVM 4.0.
+    *
+    * With LLVM 4.0 or higher:
+    * Make sure VSX instructions are ENABLED (if supported), unless
+    * VSX instructions are explicitly enabled/disabled via GALLIVM_VSX=1 or 0.
+    */
+   if (util_cpu_caps.has_altivec) {
+      MAttrs.push_back(util_cpu_caps.has_vsx ? "+vsx" : "-vsx");
+   }
 #endif
 #endif