Am 05.12.2016 um 18:39 schrieb Tim Rowley: > Use llvm provided API based on cpuid rather than our own > manually mantained list of mattr enabling/disabling. > --- > src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp > b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp > index a68428d..21d9e15 100644 > --- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp > +++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp > @@ -542,6 +542,20 @@ > lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT, > llvm::SmallVector<std::string, 16> MAttrs; > > #if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) > +#if HAVE_LLVM >= 0x0400 > + /* llvm-3.7+ implements sys::getHostCPUFeatures for x86, > + * which allows us to enable/disable code generation based > + * on the results of cpuid. > + */ > + llvm::StringMap<bool> features; > + llvm::sys::getHostCPUFeatures(features); > + > + for (StringMapIterator<bool> f = features.begin(); > + f != features.end(); > + ++f) { > + MAttrs.push_back(((*f).second ? "+" : "-") + (*f).first().str()); > + } > +#else > /* > * We need to unset attributes because sometimes LLVM mistakenly assumes > * certain features are present given the processor name. > @@ -596,6 +610,7 @@ > lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT, > MAttrs.push_back("-avx512vl"); > #endif > #endif > +#endif > > #if defined(PIPE_ARCH_PPC) > MAttrs.push_back(util_cpu_caps.has_altivec ? "+altivec" : "-altivec"); >
Reviewed-by: Roland Scheidegger <srol...@vmware.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev