Mesa (master): gallivm: disable NEON instructions if they are not supported

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Apr 22 16:48:10 UTC 2019


Module: Mesa
Branch: master
Commit: e983a975c6843c307380d7caa083eee89e02bd3c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e983a975c6843c307380d7caa083eee89e02bd3c

Author: Lubomir Rintel <lkundrak at v3.sk>
Date:   Mon Mar 11 21:18:48 2019 +0100

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 <lkundrak at v3.sk>
Cc: <mesa-stable at lists.freedesktop.org>
Reviewed-by: Matt Turner <mattst88 at gmail.com>

---

 src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

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");




More information about the mesa-commit mailing list