From a85ebe16b37fef0eeeff396bab03df735e2b6620 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Wed, 30 Apr 2025 16:11:52 +0100 Subject: [PATCH] aco: fix max_const_offset_plus_one overflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit smem_offset_max is UINT32_MAX on GFX7 and setting max_const_offset_plus_one to 0 causes divisions by zero later. Signed-off-by: Rhys Perry Fixes: c26851b80b9d ("aco: increase max_const_offset_plus_one for SMEM load_global") Reviewed-by: Georg Lehmann Tested-by: Michel Dänzer Part-of: --- src/amd/compiler/aco_instruction_selection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 79b6dc5c28f..7c9b2087c57 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -4230,7 +4230,7 @@ struct EmitLoadParameters { Temp dst_hint); Callback callback; - unsigned max_const_offset_plus_one; + uint64_t max_const_offset_plus_one; }; void @@ -6675,7 +6675,7 @@ visit_load_global(isel_context* ctx, nir_intrinsic_instr* instr) info.offset = Operand(bld.as_uniform(info.offset)); info.cache = get_cache_flags(ctx, access | ACCESS_TYPE_SMEM); EmitLoadParameters params = smem_load_params; - params.max_const_offset_plus_one = ctx->program->dev.smem_offset_max + 1; + params.max_const_offset_plus_one = ctx->program->dev.smem_offset_max + UINT64_C(1); emit_load(ctx, bld, info, params); } else { EmitLoadParameters params = global_load_params;