<div dir="auto">s/init/create/ ?<div dir="auto"><br></div><div dir="auto">Anyway, patch 1-3: </div><div dir="auto">Reviewed-by: Marek Olšák <<a href="mailto:marek.olsak@amd.com">marek.olsak@amd.com</a>></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Jul 2, 2018, 8:48 PM Dave Airlie <<a href="mailto:airlied@gmail.com">airlied@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Dave Airlie <<a href="mailto:airlied@redhat.com" target="_blank" rel="noreferrer">airlied@redhat.com</a>><br>
<br>
---<br>
src/amd/common/ac_llvm_util.c | 30 ++++++++++++++++++++++++++<br>
src/amd/common/ac_llvm_util.h | 2 ++<br>
src/gallium/drivers/radeonsi/si_pipe.c | 27 ++---------------------<br>
3 files changed, 34 insertions(+), 25 deletions(-)<br>
<br>
diff --git a/src/amd/common/ac_llvm_util.c b/src/amd/common/ac_llvm_util.c<br>
index 25ff4a8c22a..adcdc730856 100644<br>
--- a/src/amd/common/ac_llvm_util.c<br>
+++ b/src/amd/common/ac_llvm_util.c<br>
@@ -28,6 +28,11 @@<br>
#include "util/bitscan.h"<br>
#include <llvm-c/Core.h><br>
#include <llvm-c/Support.h><br>
+#include <llvm-c/Transforms/IPO.h><br>
+#include <llvm-c/Transforms/Scalar.h><br>
+#if HAVE_LLVM >= 0x0700<br>
+#include <llvm-c/Transforms/Utils.h><br>
+#endif<br>
#include "c11/threads.h"<br>
#include "util/u_math.h"<br>
<br>
@@ -160,6 +165,31 @@ LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family,<br>
return tm;<br>
}<br>
<br>
+LLVMPassManagerRef ac_init_passmgr(LLVMTargetLibraryInfoRef target_library_info,<br>
+ bool check_ir)<br>
+{<br>
+ LLVMPassManagerRef passmgr = LLVMCreatePassManager();<br>
+ if (!passmgr)<br>
+ return NULL;<br>
+<br>
+ LLVMAddTargetLibraryInfo(target_library_info,<br>
+ passmgr);<br>
+<br>
+ if (check_ir)<br>
+ LLVMAddVerifierPass(passmgr);<br>
+ LLVMAddAlwaysInlinerPass(passmgr);<br>
+ /* This pass should eliminate all the load and store instructions. */<br>
+ LLVMAddPromoteMemoryToRegisterPass(passmgr);<br>
+ LLVMAddScalarReplAggregatesPass(passmgr);<br>
+ LLVMAddLICMPass(passmgr);<br>
+ LLVMAddAggressiveDCEPass(passmgr);<br>
+ LLVMAddCFGSimplificationPass(passmgr);<br>
+ /* This is recommended by the instruction combining pass. */<br>
+ LLVMAddEarlyCSEMemSSAPass(passmgr);<br>
+ LLVMAddInstructionCombiningPass(passmgr);<br>
+ return passmgr;<br>
+}<br>
+<br>
static const char *attr_to_str(enum ac_func_attr attr)<br>
{<br>
switch (attr) {<br>
diff --git a/src/amd/common/ac_llvm_util.h b/src/amd/common/ac_llvm_util.h<br>
index 4311c5ea8a4..1c0e975aec3 100644<br>
--- a/src/amd/common/ac_llvm_util.h<br>
+++ b/src/amd/common/ac_llvm_util.h<br>
@@ -111,6 +111,8 @@ ac_get_store_intr_attribs(bool writeonly_memory)<br>
unsigned<br>
ac_count_scratch_private_memory(LLVMValueRef function);<br>
<br>
+LLVMPassManagerRef ac_init_passmgr(LLVMTargetLibraryInfoRef target_library_info,<br>
+ bool check_ir);<br>
void ac_init_llvm_once(void);<br>
<br>
#ifdef __cplusplus<br>
diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c<br>
index 0d6d93a7358..c815c7fc013 100644<br>
--- a/src/gallium/drivers/radeonsi/si_pipe.c<br>
+++ b/src/gallium/drivers/radeonsi/si_pipe.c<br>
@@ -41,12 +41,6 @@<br>
#include "vl/vl_decoder.h"<br>
#include "driver_ddebug/dd_util.h"<br>
<br>
-#include <llvm-c/Transforms/IPO.h><br>
-#include <llvm-c/Transforms/Scalar.h><br>
-#if HAVE_LLVM >= 0x0700<br>
-#include <llvm-c/Transforms/Utils.h><br>
-#endif<br>
-<br>
static const struct debug_named_value debug_options[] = {<br>
/* Shader logging options: */<br>
{ "vs", DBG(VS), "Print vertex shaders" },<br>
@@ -131,27 +125,10 @@ static void si_init_compiler(struct si_screen *sscreen,<br>
if (!compiler->target_library_info)<br>
return;<br>
<br>
- compiler->passmgr = LLVMCreatePassManager();<br>
+ compiler->passmgr = ac_init_passmgr(compiler->target_library_info,<br>
+ (sscreen->debug_flags & DBG(CHECK_IR)));<br>
if (!compiler->passmgr)<br>
return;<br>
-<br>
- LLVMAddTargetLibraryInfo(compiler->target_library_info,<br>
- compiler->passmgr);<br>
-<br>
- /* Add LLVM passes into the pass manager. */<br>
- if (sscreen->debug_flags & DBG(CHECK_IR))<br>
- LLVMAddVerifierPass(compiler->passmgr);<br>
-<br>
- LLVMAddAlwaysInlinerPass(compiler->passmgr);<br>
- /* This pass should eliminate all the load and store instructions. */<br>
- LLVMAddPromoteMemoryToRegisterPass(compiler->passmgr);<br>
- LLVMAddScalarReplAggregatesPass(compiler->passmgr);<br>
- LLVMAddLICMPass(compiler->passmgr);<br>
- LLVMAddAggressiveDCEPass(compiler->passmgr);<br>
- LLVMAddCFGSimplificationPass(compiler->passmgr);<br>
- /* This is recommended by the instruction combining pass. */<br>
- LLVMAddEarlyCSEMemSSAPass(compiler->passmgr);<br>
- LLVMAddInstructionCombiningPass(compiler->passmgr);<br>
}<br>
<br>
static void si_destroy_compiler(struct si_compiler *compiler)<br>
-- <br>
2.17.1<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank" rel="noreferrer">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>