summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLubomir Rintel <[email protected]>2019-03-11 21:18:48 +0100
committerMatt Turner <[email protected]>2019-04-22 09:47:49 -0700
commite983a975c6843c307380d7caa083eee89e02bd3c (patch)
treeff16aa491fc4e87c94246a6b577ef31247e45872
parentbc6bfc861fd3484c4cc51f24ccb0bf64239fcfd7 (diff)
gallivm: disable NEON instructions if they are not supported
The LLVM project made some questionable decisions about defaults for armv7 (e.g. they enable NEON that is not there on NVIDIA and Marvell platforms). On top of that, getHostCPUFeatures() doesn't disable missing machine attributes. Finally, -neon alone is not sufficient to disable emmision of NEON instructions. Signed-off-by: Lubomir Rintel <[email protected]> Cc: <[email protected]> Reviewed-by: Matt Turner <[email protected]>
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_misc.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
index f3b5784fce7..f307c26d4f7 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
@@ -625,6 +625,13 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
MAttrs.push_back("-avx512vl");
#endif
#endif
+#if defined(PIPE_ARCH_ARM)
+ if (!util_cpu_caps.has_neon) {
+ MAttrs.push_back("-neon");
+ MAttrs.push_back("-crypto");
+ MAttrs.push_back("-vfp2");
+ }
+#endif
#if defined(PIPE_ARCH_PPC)
MAttrs.push_back(util_cpu_caps.has_altivec ? "+altivec" : "-altivec");