[Mesa-dev] [PATCH 04/11] radv: port to use common passmgr code.

Dave Airlie airlied at gmail.com
Wed Jun 27 03:58:38 UTC 2018


From: Dave Airlie <airlied at redhat.com>

This adds a inline always pass, but otherwise should work the
same.
---
 src/amd/common/ac_llvm_util.c     |  5 +++--
 src/amd/vulkan/radv_nir_to_llvm.c | 26 +++-----------------------
 2 files changed, 6 insertions(+), 25 deletions(-)

diff --git a/src/amd/common/ac_llvm_util.c b/src/amd/common/ac_llvm_util.c
index 06b79a3d1cb..dd2469d4606 100644
--- a/src/amd/common/ac_llvm_util.c
+++ b/src/amd/common/ac_llvm_util.c
@@ -169,8 +169,9 @@ LLVMPassManagerRef ac_init_passmgr(LLVMTargetLibraryInfoRef target_library_info,
 	if (!passmgr)
 		return NULL;
 
-	LLVMAddTargetLibraryInfo(target_library_info,
-				 passmgr);
+	if (target_library_info)
+		LLVMAddTargetLibraryInfo(target_library_info,
+					 passmgr);
 
 	if (check_ir)
 		LLVMAddVerifierPass(passmgr);
diff --git a/src/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c
index cd8d86603bc..1c9f58c6bcf 100644
--- a/src/amd/vulkan/radv_nir_to_llvm.c
+++ b/src/amd/vulkan/radv_nir_to_llvm.c
@@ -2996,30 +2996,10 @@ static void ac_llvm_finalize_module(struct radv_shader_context *ctx,
 				    const struct radv_nir_compiler_options *options)
 {
 	LLVMPassManagerRef passmgr;
-	/* Create the pass manager */
-	passmgr = LLVMCreateFunctionPassManagerForModule(
-							ctx->ac.module);
-
-	if (options->check_ir)
-		LLVMAddVerifierPass(passmgr);
-
-	/* This pass should eliminate all the load and store instructions */
-	LLVMAddPromoteMemoryToRegisterPass(passmgr);
-
-	/* Add some optimization passes */
-	LLVMAddScalarReplAggregatesPass(passmgr);
-	LLVMAddLICMPass(passmgr);
-	LLVMAddAggressiveDCEPass(passmgr);
-	LLVMAddCFGSimplificationPass(passmgr);
-	/* This is recommended by the instruction combining pass. */
-	LLVMAddEarlyCSEMemSSAPass(passmgr);
-	LLVMAddInstructionCombiningPass(passmgr);
-
-	/* Run the pass */
-	LLVMInitializeFunctionPassManager(passmgr);
-	LLVMRunFunctionPassManager(passmgr, ctx->main_function);
-	LLVMFinalizeFunctionPassManager(passmgr);
 
+	passmgr = ac_init_passmgr(NULL, options->check_ir);
+
+	LLVMRunPassManager(passmgr, ctx->ac.module);
 	LLVMDisposeBuilder(ctx->ac.builder);
 	LLVMDisposePassManager(passmgr);
 
-- 
2.17.1



More information about the mesa-dev mailing list