radeonsi: use ac_create_target_machine
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
81f81fdb54
commit
cde664ab81
|
@ -128,8 +128,11 @@ LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, enum ac
|
||||||
LLVMTargetRef target = ac_get_llvm_target(triple);
|
LLVMTargetRef target = ac_get_llvm_target(triple);
|
||||||
|
|
||||||
snprintf(features, sizeof(features),
|
snprintf(features, sizeof(features),
|
||||||
"+DumpCode,+vgpr-spilling,-fp32-denormals%s",
|
"+DumpCode,+vgpr-spilling,-fp32-denormals,+fp64-denormals%s%s%s%s",
|
||||||
tm_options & AC_TM_SISCHED ? ",+si-scheduler" : "");
|
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(
|
LLVMTargetMachineRef tm = LLVMCreateTargetMachine(
|
||||||
target,
|
target,
|
||||||
|
|
|
@ -57,6 +57,9 @@ enum ac_func_attr {
|
||||||
enum ac_target_machine_options {
|
enum ac_target_machine_options {
|
||||||
AC_TM_SUPPORTS_SPILL = (1 << 0),
|
AC_TM_SUPPORTS_SPILL = (1 << 0),
|
||||||
AC_TM_SISCHED = (1 << 1),
|
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);
|
const char *ac_get_llvm_processor_name(enum radeon_family family);
|
||||||
|
|
|
@ -145,21 +145,13 @@ static void si_emit_string_marker(struct pipe_context *ctx,
|
||||||
static LLVMTargetMachineRef
|
static LLVMTargetMachineRef
|
||||||
si_create_llvm_target_machine(struct si_screen *sscreen)
|
si_create_llvm_target_machine(struct si_screen *sscreen)
|
||||||
{
|
{
|
||||||
const char *triple = "amdgcn--";
|
enum ac_target_machine_options tm_options =
|
||||||
char features[256];
|
(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);
|
||||||
|
|
||||||
snprintf(features, sizeof(features),
|
return ac_create_target_machine(sscreen->b.family, tm_options);
|
||||||
"+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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void si_set_log_context(struct pipe_context *ctx,
|
static void si_set_log_context(struct pipe_context *ctx,
|
||||||
|
|
Loading…
Reference in New Issue