From 2c4926dfc81a2e3a753275a2d393bd475a872c76 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sat, 11 Dec 2021 23:56:20 -0500 Subject: [PATCH] radeonsi: use nir->scratch_size instead of ac_count_scratch_private_memory It's the same. Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/amd/llvm/ac_llvm_util.c | 28 --------------------------- src/amd/llvm/ac_llvm_util.h | 2 -- src/gallium/drivers/radeonsi/si_shader.c | 1 + src/gallium/drivers/radeonsi/si_shader_llvm.c | 4 ---- 4 files changed, 1 insertion(+), 34 deletions(-) diff --git a/src/amd/llvm/ac_llvm_util.c b/src/amd/llvm/ac_llvm_util.c index fd7895b..575b6e4 100644 --- a/src/amd/llvm/ac_llvm_util.c +++ b/src/amd/llvm/ac_llvm_util.c @@ -327,34 +327,6 @@ void ac_llvm_set_target_features(LLVMValueRef F, struct ac_llvm_context *ctx) LLVMAddTargetDependentFunctionAttr(F, "target-features", features); } -unsigned ac_count_scratch_private_memory(LLVMValueRef function) -{ - unsigned private_mem_vgprs = 0; - - /* Process all LLVM instructions. */ - LLVMBasicBlockRef bb = LLVMGetFirstBasicBlock(function); - while (bb) { - LLVMValueRef next = LLVMGetFirstInstruction(bb); - - while (next) { - LLVMValueRef inst = next; - next = LLVMGetNextInstruction(next); - - if (LLVMGetInstructionOpcode(inst) != LLVMAlloca) - continue; - - LLVMTypeRef type = LLVMGetElementType(LLVMTypeOf(inst)); - /* No idea why LLVM aligns allocas to 4 elements. */ - unsigned alignment = LLVMGetAlignment(inst); - unsigned dw_size = align(ac_get_type_size(type) / 4, alignment); - private_mem_vgprs += dw_size; - } - bb = LLVMGetNextBasicBlock(bb); - } - - return private_mem_vgprs; -} - bool ac_init_llvm_compiler(struct ac_llvm_compiler *compiler, enum radeon_family family, enum ac_target_machine_options tm_options) { diff --git a/src/amd/llvm/ac_llvm_util.h b/src/amd/llvm/ac_llvm_util.h index 455b5ea..3d069b1 100644 --- a/src/amd/llvm/ac_llvm_util.h +++ b/src/amd/llvm/ac_llvm_util.h @@ -118,8 +118,6 @@ static inline unsigned ac_get_load_intr_attribs(bool can_speculate) return can_speculate ? AC_FUNC_ATTR_READNONE : AC_FUNC_ATTR_READONLY; } -unsigned ac_count_scratch_private_memory(LLVMValueRef function); - LLVMTargetLibraryInfoRef ac_create_target_library_info(const char *triple); void ac_dispose_target_library_info(LLVMTargetLibraryInfoRef library_info); PUBLIC void ac_init_shared_llvm_once(void); /* Do not use directly, use ac_init_llvm_once */ diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index ab1ec34..9db4c31 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -1501,6 +1501,7 @@ bool si_compile_shader(struct si_screen *sscreen, struct ac_llvm_compiler *compi shader->info.vs_output_ps_input_cntl[VARYING_SLOT_COL0] = SI_PS_INPUT_CNTL_UNUSED_COLOR0; shader->info.uses_instanceid = sel->info.uses_instanceid; + shader->info.private_mem_vgprs = DIV_ROUND_UP(nir->scratch_size, 4); /* TODO: ACO could compile non-monolithic shaders here (starting * with PS and NGG VS), but monolithic shaders should be compiled diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm.c b/src/gallium/drivers/radeonsi/si_shader_llvm.c index 69c43f0..857af38 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm.c @@ -1293,10 +1293,6 @@ bool si_llvm_compile_shader(struct si_screen *sscreen, struct ac_llvm_compiler * /* Post-optimization transformations and analysis. */ si_optimize_vs_outputs(&ctx); - if ((debug && debug->debug_message) || si_can_dump_shader(sscreen, sel->info.stage)) { - ctx.shader->info.private_mem_vgprs = ac_count_scratch_private_memory(ctx.main_fn); - } - /* Make sure the input is a pointer and not integer followed by inttoptr. */ assert(LLVMGetTypeKind(LLVMTypeOf(LLVMGetParam(ctx.main_fn, 0))) == LLVMPointerTypeKind); -- 2.7.4