<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>