From: Marek Olšák <marek.ol...@amd.com>

---
 src/gallium/drivers/radeonsi/si_pipe.c | 32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_pipe.c 
b/src/gallium/drivers/radeonsi/si_pipe.c
index 633d4bb..2e8d846 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -103,14 +103,29 @@ si_amdgpu_get_reset_status(struct pipe_context *ctx)
        return sctx->b.ws->ctx_query_reset_status(sctx->b.ctx);
 }
 
+static LLVMTargetMachineRef
+si_create_llvm_target_machine(struct si_screen *sscreen)
+{
+       const char *triple = "amdgcn--";
+
+       return LLVMCreateTargetMachine(radeon_llvm_get_r600_target(triple), 
triple,
+                                      
r600_get_llvm_processor_name(sscreen->b.family),
+#if HAVE_LLVM >= 0x0308
+                                      sscreen->b.debug_flags & DBG_SI_SCHED ?
+                                              SI_LLVM_DEFAULT_FEATURES 
",+si-scheduler" :
+#endif
+                                              SI_LLVM_DEFAULT_FEATURES,
+                                      LLVMCodeGenLevelDefault,
+                                      LLVMRelocDefault,
+                                      LLVMCodeModelDefault);
+}
+
 static struct pipe_context *si_create_context(struct pipe_screen *screen,
                                               void *priv, unsigned flags)
 {
        struct si_context *sctx = CALLOC_STRUCT(si_context);
        struct si_screen* sscreen = (struct si_screen *)screen;
        struct radeon_winsys *ws = sscreen->b.ws;
-       LLVMTargetRef r600_target;
-       const char *triple = "amdgcn--";
        int shader, i;
 
        if (!sctx)
@@ -255,18 +270,7 @@ static struct pipe_context *si_create_context(struct 
pipe_screen *screen,
        sctx->scratch_waves = MAX2(32 * sscreen->b.info.num_good_compute_units,
                                   max_threads_per_block / 64);
 
-       /* Initialize LLVM TargetMachine */
-       r600_target = radeon_llvm_get_r600_target(triple);
-       sctx->tm = LLVMCreateTargetMachine(r600_target, triple,
-                                          
r600_get_llvm_processor_name(sscreen->b.family),
-#if HAVE_LLVM >= 0x0308
-                                          sscreen->b.debug_flags & 
DBG_SI_SCHED ?
-                                               SI_LLVM_DEFAULT_FEATURES 
",+si-scheduler" :
-#endif
-                                               SI_LLVM_DEFAULT_FEATURES,
-                                          LLVMCodeGenLevelDefault,
-                                          LLVMRelocDefault,
-                                          LLVMCodeModelDefault);
+       sctx->tm = si_create_llvm_target_machine(sscreen);
 
        return &sctx->b.b;
 fail:
-- 
2.7.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to