From c5d7b37fe7eb9c0b35b71a42f2bb5d408715108e Mon Sep 17 00:00:00 2001 From: George Kyriazis Date: Wed, 28 Mar 2018 14:31:20 -0500 Subject: [PATCH] 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 --- src/gallium/drivers/swr/swr_shader.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gallium/drivers/swr/swr_shader.cpp b/src/gallium/drivers/swr/swr_shader.cpp index 477fa7f..6ea021a 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); -- 2.7.4