From: Qiang Yu Date: Fri, 14 Apr 2023 07:47:10 +0000 (+0800) Subject: aco: support 32bit address in nir_load_smem_amd X-Git-Tag: upstream/23.3.3~9847 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=31bfad83ecff8e76e6b6c0801833c55aa157079f;p=platform%2Fupstream%2Fmesa.git aco: support 32bit address in nir_load_smem_amd radeonsi uses 32bit address. Reviewed-by: Rhys Perry Signed-off-by: Qiang Yu Part-of: --- diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 7b685c3..0f09500 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -7179,6 +7179,12 @@ visit_load_smem(isel_context* ctx, nir_intrinsic_instr* instr) Temp base = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa)); Temp offset = bld.as_uniform(get_ssa_temp(ctx, instr->src[1].ssa)); + /* If base address is 32bit, convert to 64bit with the high 32bit part. */ + if (base.bytes() == 4) { + base = bld.pseudo(aco_opcode::p_create_vector, bld.def(s2), + base, Operand::c32(ctx->options->address32_hi)); + } + aco_opcode opcode = aco_opcode::s_load_dword; unsigned size = 1;