49 lines
1.9 KiB
Diff
49 lines
1.9 KiB
Diff
|
From: Roland Scheidegger <sroland@vmware.com>
|
||
|
Date: Sun May 8 00:40:07 2016 +0200
|
||
|
Subject: [PATCH]gallivm: disable avx512 features
|
||
|
Patch-mainline: Upstream
|
||
|
Git-repo: git://anongit.freedesktop.org/git/mesa/mesa
|
||
|
Git-commit: 8b66e2647d5e36e318177a460e6e586d6ca8c36b
|
||
|
References: bsc#980557
|
||
|
Signed-off-by: Egbert Eich <eich@suse.com>
|
||
|
|
||
|
We don't target this yet, and some llvm versions incorrectly enable it based
|
||
|
on cpu string, causing crashes.
|
||
|
(Albeit this is a losing battle, it is pretty much guaranteed when the next
|
||
|
new feature comes along llvm will mistakenly enable it on some future cpu,
|
||
|
thus we would have to proactively disable all new features as llvm adds them.)
|
||
|
|
||
|
This should fix https://bugs.freedesktop.org/show_bug.cgi?id=94291 (untested)
|
||
|
|
||
|
Tested-by: Timo Aaltonen <tjaalton@ubuntu.com>
|
||
|
Reviewed-by: Jose Fonseca <jfonseca@vmware.com
|
||
|
|
||
|
CC: <mesa-stable@lists.freedesktop.org>
|
||
|
---
|
||
|
src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 12 ++++++++++++
|
||
|
1 file changed, 12 insertions(+)
|
||
|
|
||
|
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
|
||
|
index bb08892..42a53ec 100644
|
||
|
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
|
||
|
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
|
||
|
@@ -571,6 +571,18 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
|
||
|
MAttrs.push_back(util_cpu_caps.has_avx ? "+avx" : "-avx");
|
||
|
MAttrs.push_back(util_cpu_caps.has_f16c ? "+f16c" : "-f16c");
|
||
|
MAttrs.push_back(util_cpu_caps.has_avx2 ? "+avx2" : "-avx2");
|
||
|
+ /* disable avx512 and all subvariants */
|
||
|
+#if HAVE_LLVM >= 0x0304
|
||
|
+ MAttrs.push_back("-avx512cd");
|
||
|
+ MAttrs.push_back("-avx512er");
|
||
|
+ MAttrs.push_back("-avx512f");
|
||
|
+ MAttrs.push_back("-avx512pf");
|
||
|
+#endif
|
||
|
+#if HAVE_LLVM >= 0x0305
|
||
|
+ MAttrs.push_back("-avx512bw");
|
||
|
+ MAttrs.push_back("-avx512dq");
|
||
|
+ MAttrs.push_back("-avx512vl");
|
||
|
+#endif
|
||
|
#endif
|
||
|
|
||
|
#if defined(PIPE_ARCH_PPC)
|