gallivm: guess CPU features also on ARM

getHostCPUFeatures() is also available on ARM, for even longer time than
for x86. Use it -- it potentially enables instructions that may speed
things up.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Cc: <mesa-stable@lists.freedesktop.org>
Closes: https://gitlab.freedesktop.org/mesa/mesa/merge_requests/518
Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
Lubomir Rintel 2019-03-11 19:16:40 +01:00 committed by Matt Turner
parent 36478b9f77
commit bc6bfc861f

View file

@ -556,11 +556,11 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
llvm::SmallVector<std::string, 16> MAttrs; llvm::SmallVector<std::string, 16> MAttrs;
#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) #if HAVE_LLVM >= 0x0400 && (defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) || defined(PIPE_ARCH_ARM))
#if HAVE_LLVM >= 0x0400 /* llvm-3.3+ implements sys::getHostCPUFeatures for Arm
/* llvm-3.7+ implements sys::getHostCPUFeatures for x86, * and llvm-3.7+ for x86, which allows us to enable/disable
* which allows us to enable/disable code generation based * code generation based on the results of cpuid on these
* on the results of cpuid. * architectures.
*/ */
llvm::StringMap<bool> features; llvm::StringMap<bool> features;
llvm::sys::getHostCPUFeatures(features); llvm::sys::getHostCPUFeatures(features);
@ -570,7 +570,7 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
++f) { ++f) {
MAttrs.push_back(((*f).second ? "+" : "-") + (*f).first().str()); MAttrs.push_back(((*f).second ? "+" : "-") + (*f).first().str());
} }
#else #elif defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)
/* /*
* We need to unset attributes because sometimes LLVM mistakenly assumes * We need to unset attributes because sometimes LLVM mistakenly assumes
* certain features are present given the processor name. * certain features are present given the processor name.
@ -625,7 +625,6 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
MAttrs.push_back("-avx512vl"); MAttrs.push_back("-avx512vl");
#endif #endif
#endif #endif
#endif
#if defined(PIPE_ARCH_PPC) #if defined(PIPE_ARCH_PPC)
MAttrs.push_back(util_cpu_caps.has_altivec ? "+altivec" : "-altivec"); MAttrs.push_back(util_cpu_caps.has_altivec ? "+altivec" : "-altivec");