Module: Mesa
Branch: master
Commit: cde664ab81dba8c7f0fa15ef6e28aac463719ac5
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cde664ab81dba8c7f0fa15ef6e28aac463719ac5

Author: Marek Olšák <marek.ol...@amd.com>
Date:   Tue Nov  7 03:50:19 2017 +0100

radeonsi: use ac_create_target_machine

Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>

---

 src/amd/common/ac_llvm_util.c          |  7 +++++--
 src/amd/common/ac_llvm_util.h          |  3 +++
 src/gallium/drivers/radeonsi/si_pipe.c | 22 +++++++---------------
 3 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/src/amd/common/ac_llvm_util.c b/src/amd/common/ac_llvm_util.c
index fb2bc11874..429904c040 100644
--- a/src/amd/common/ac_llvm_util.c
+++ b/src/amd/common/ac_llvm_util.c
@@ -128,8 +128,11 @@ LLVMTargetMachineRef ac_create_target_machine(enum 
radeon_family family, enum ac
        LLVMTargetRef target = ac_get_llvm_target(triple);
 
        snprintf(features, sizeof(features),
-                "+DumpCode,+vgpr-spilling,-fp32-denormals%s",
-                tm_options & AC_TM_SISCHED ? ",+si-scheduler" : "");
+                
"+DumpCode,+vgpr-spilling,-fp32-denormals,+fp64-denormals%s%s%s%s",
+                tm_options & AC_TM_SISCHED ? ",+si-scheduler" : "",
+                tm_options & AC_TM_FORCE_ENABLE_XNACK ? ",+xnack" : "",
+                tm_options & AC_TM_FORCE_DISABLE_XNACK ? ",-xnack" : "",
+                tm_options & AC_TM_PROMOTE_ALLOCA_TO_SCRATCH ? 
",-promote-alloca" : "");
        
        LLVMTargetMachineRef tm = LLVMCreateTargetMachine(
                                     target,
diff --git a/src/amd/common/ac_llvm_util.h b/src/amd/common/ac_llvm_util.h
index d4b3915ffa..7c8b6b0a13 100644
--- a/src/amd/common/ac_llvm_util.h
+++ b/src/amd/common/ac_llvm_util.h
@@ -57,6 +57,9 @@ enum ac_func_attr {
 enum ac_target_machine_options {
        AC_TM_SUPPORTS_SPILL = (1 << 0),
        AC_TM_SISCHED = (1 << 1),
+       AC_TM_FORCE_ENABLE_XNACK = (1 << 2),
+       AC_TM_FORCE_DISABLE_XNACK = (1 << 3),
+       AC_TM_PROMOTE_ALLOCA_TO_SCRATCH = (1 << 4),
 };
 
 const char *ac_get_llvm_processor_name(enum radeon_family family);
diff --git a/src/gallium/drivers/radeonsi/si_pipe.c 
b/src/gallium/drivers/radeonsi/si_pipe.c
index e96380ce40..1ca5ca38df 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -145,21 +145,13 @@ static void si_emit_string_marker(struct pipe_context 
*ctx,
 static LLVMTargetMachineRef
 si_create_llvm_target_machine(struct si_screen *sscreen)
 {
-       const char *triple = "amdgcn--";
-       char features[256];
-
-       snprintf(features, sizeof(features),
-                
"+DumpCode,+vgpr-spilling,-fp32-denormals,+fp64-denormals%s%s%s",
-                sscreen->b.chip_class >= GFX9 ? ",+xnack" : ",-xnack",
-                sscreen->llvm_has_working_vgpr_indexing ? "" : 
",-promote-alloca",
-                sscreen->b.debug_flags & DBG(SI_SCHED) ? ",+si-scheduler" : 
"");
-
-       return LLVMCreateTargetMachine(ac_get_llvm_target(triple), triple,
-                                      
ac_get_llvm_processor_name(sscreen->b.family),
-                                      features,
-                                      LLVMCodeGenLevelDefault,
-                                      LLVMRelocDefault,
-                                      LLVMCodeModelDefault);
+       enum ac_target_machine_options tm_options =
+               (sscreen->b.debug_flags & DBG(SI_SCHED) ? AC_TM_SISCHED : 0) |
+               (sscreen->b.chip_class >= GFX9 ? AC_TM_FORCE_ENABLE_XNACK : 0) |
+               (sscreen->b.chip_class < GFX9 ? AC_TM_FORCE_DISABLE_XNACK : 0) |
+               (!sscreen->llvm_has_working_vgpr_indexing ? 
AC_TM_PROMOTE_ALLOCA_TO_SCRATCH : 0);
+
+       return ac_create_target_machine(sscreen->b.family, tm_options);
 }
 
 static void si_set_log_context(struct pipe_context *ctx,

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

Reply via email to