From 9d9f0513905af4c916bb01253b324218fccb4272 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 6 Jul 2017 02:56:21 +0100 Subject: [PATCH] ac/radv: change api to create target machine This just modifies the API to make it easier to add other flags to target machine creation. Reviewed-by: Bas Nieuwenhuizen Signed-off-by: Dave Airlie --- src/amd/common/ac_llvm_util.c | 4 ++-- src/amd/common/ac_llvm_util.h | 5 ++++- src/amd/vulkan/radv_pipeline.c | 12 ++++++++---- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/amd/common/ac_llvm_util.c b/src/amd/common/ac_llvm_util.c index d9d8d91..088f01f 100644 --- a/src/amd/common/ac_llvm_util.c +++ b/src/amd/common/ac_llvm_util.c @@ -118,11 +118,11 @@ static const char *ac_get_llvm_processor_name(enum radeon_family family) } } -LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, bool supports_spill) +LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, enum ac_target_machine_options tm_options) { assert(family >= CHIP_TAHITI); - const char *triple = supports_spill ? "amdgcn-mesa-mesa3d" : "amdgcn--"; + const char *triple = (tm_options & AC_TM_SUPPORTS_SPILL) ? "amdgcn-mesa-mesa3d" : "amdgcn--"; LLVMTargetRef target = ac_get_llvm_target(triple); LLVMTargetMachineRef tm = LLVMCreateTargetMachine( target, diff --git a/src/amd/common/ac_llvm_util.h b/src/amd/common/ac_llvm_util.h index 4ce59ec..06208a4 100644 --- a/src/amd/common/ac_llvm_util.h +++ b/src/amd/common/ac_llvm_util.h @@ -54,7 +54,10 @@ enum ac_func_attr { AC_FUNC_ATTR_LEGACY = (1u << 31), }; -LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, bool supports_spill); +enum ac_target_machine_options { + AC_TM_SUPPORTS_SPILL = (1 << 0), +}; +LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, enum ac_target_machine_options tm_options); void ac_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes); bool ac_is_sgpr_param(LLVMValueRef param); diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index 061121b..71a5cce 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -460,12 +460,14 @@ static struct radv_shader_variant *radv_shader_variant_create(struct radv_device options.key = *key; struct ac_shader_binary binary; - + enum ac_target_machine_options tm_options = 0; options.unsafe_math = !!(device->debug_flags & RADV_DEBUG_UNSAFE_MATH); options.family = chip_family; options.chip_class = device->physical_device->rad_info.chip_class; options.supports_spill = device->llvm_supports_spill; - tm = ac_create_target_machine(chip_family, options.supports_spill); + if (options.supports_spill) + tm_options |= AC_TM_SUPPORTS_SPILL; + tm = ac_create_target_machine(chip_family, tm_options); ac_compile_nir_shader(tm, &binary, &variant->config, &variant->info, shader, &options, dump); LLVMDisposeTargetMachine(tm); @@ -501,10 +503,12 @@ radv_pipeline_create_gs_copy_shader(struct radv_pipeline *pipeline, struct ac_nir_compiler_options options = {0}; struct ac_shader_binary binary; + enum ac_target_machine_options tm_options = 0; options.family = chip_family; options.chip_class = pipeline->device->physical_device->rad_info.chip_class; - options.supports_spill = pipeline->device->llvm_supports_spill; - tm = ac_create_target_machine(chip_family, options.supports_spill); + if (options.supports_spill) + tm_options |= AC_TM_SUPPORTS_SPILL; + tm = ac_create_target_machine(chip_family, tm_options); ac_create_gs_copy_shader(tm, nir, &binary, &variant->config, &variant->info, &options, dump_shader); LLVMDisposeTargetMachine(tm); -- 2.7.4