From: George Kyriazis Date: Wed, 28 Mar 2018 19:31:20 +0000 (-0500) Subject: swr: add x86 lowering pass to fragment shader X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c5d7b37fe7eb9c0b35b71a42f2bb5d408715108e;p=mesa.git swr: add x86 lowering pass to fragment shader Needed because some FP paths (namely stipple) use gather intrinsics that now need to be lowered to x86. v2: fix typo in commit message Reviewed-by: Bruce Cherniak --- diff --git a/src/gallium/drivers/swr/swr_shader.cpp b/src/gallium/drivers/swr/swr_shader.cpp index 477fa7f2db4..6ea021a987e 100644 --- a/src/gallium/drivers/swr/swr_shader.cpp +++ b/src/gallium/drivers/swr/swr_shader.cpp @@ -27,11 +27,13 @@ #include "JitManager.h" #include "llvm-c/Core.h" #include "llvm/Support/CBindingWrapping.h" +#include "llvm/IR/LegacyPassManager.h" #pragma pop_macro("DEBUG") #include "state.h" #include "gen_state_llvm.h" #include "builder.h" +#include "functionpasses/passes.h" #include "tgsi/tgsi_strings.h" #include "util/u_format.h" @@ -1389,6 +1391,11 @@ BuilderSWR::CompileFS(struct swr_context *ctx, swr_jit_fs_key &key) gallivm_compile_module(gallivm); + // after the gallivm passes, we have to lower the core's intrinsics + llvm::legacy::FunctionPassManager lowerPass(JM()->mpCurrentModule); + lowerPass.add(createLowerX86Pass(mpJitMgr, this)); + lowerPass.run(*pFunction); + PFN_PIXEL_KERNEL kernel = (PFN_PIXEL_KERNEL)gallivm_jit_function(gallivm, wrap(pFunction)); debug_printf("frag shader %p\n", kernel);