From dfa8ac6b914b0332c0d84860e893e9f3741bbdd9 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Mon, 6 Oct 2025 15:53:25 +0100 Subject: [PATCH] aco: remove buffer_load_lds instructions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit They don't exist See https://github.com/llvm/llvm-project/pull/132916 Signed-off-by: Rhys Perry Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14041 Reviewed-by: Georg Lehmann Reviewed-by: Timur Kristóf Part-of: --- src/amd/compiler/aco_assembler.cpp | 5 +-- src/amd/compiler/aco_opcodes.py | 6 ---- src/amd/compiler/tests/test_assembler.cpp | 39 ----------------------- 3 files changed, 1 insertion(+), 49 deletions(-) diff --git a/src/amd/compiler/aco_assembler.cpp b/src/amd/compiler/aco_assembler.cpp index 1dfac6eaec7..3e37b11970d 100644 --- a/src/amd/compiler/aco_assembler.cpp +++ b/src/amd/compiler/aco_assembler.cpp @@ -555,10 +555,7 @@ emit_mubuf_instruction(asm_context& ctx, std::vector& out, const Instr bool dlc = mubuf.cache.value & ac_dlc; uint32_t encoding = (0b111000 << 26); - if (ctx.gfx_level >= GFX11 && mubuf.lds) /* GFX11 has separate opcodes for LDS loads */ - opcode = opcode == 0 ? 0x32 : (opcode + 0x1d); - else - encoding |= (mubuf.lds ? 1 : 0) << 16; + encoding |= (mubuf.lds ? 1 : 0) << 16; encoding |= opcode << 18; encoding |= (glc ? 1 : 0) << 14; if (ctx.gfx_level <= GFX10_3) diff --git a/src/amd/compiler/aco_opcodes.py b/src/amd/compiler/aco_opcodes.py index 0a5ea3daf13..ef99f63cc45 100644 --- a/src/amd/compiler/aco_opcodes.py +++ b/src/amd/compiler/aco_opcodes.py @@ -1761,12 +1761,6 @@ MUBUF = { ("buffer_gl0_inv", op(gfx10=0x71, gfx11=0x2b, gfx12=-1)), ("buffer_gl1_inv", op(gfx10=0x72, gfx11=0x2c, gfx12=-1)), ("buffer_atomic_csub", op(gfx10=0x34, gfx11=0x37)), #GFX10.3+. seems glc must be set. buffer_atomic_csub_u32 in GFX11 - ("buffer_load_lds_b32", op(gfx11=0x31, gfx12=-1)), - ("buffer_load_lds_format_x", op(gfx11=0x32, gfx12=-1)), - ("buffer_load_lds_i8", op(gfx11=0x2e, gfx12=-1)), - ("buffer_load_lds_i16", op(gfx11=0x30, gfx12=-1)), - ("buffer_load_lds_u8", op(gfx11=0x2d, gfx12=-1)), - ("buffer_load_lds_u16", op(gfx11=0x2f, gfx12=-1)), ("buffer_atomic_add_f32", op(gfx11=0x56)), ("buffer_atomic_pk_add_f16", op(gfx12=0x59)), ("buffer_atomic_pk_add_bf16", op(gfx12=0x5a)), diff --git a/src/amd/compiler/tests/test_assembler.cpp b/src/amd/compiler/tests/test_assembler.cpp index f65ea317f6f..3295666136d 100644 --- a/src/amd/compiler/tests/test_assembler.cpp +++ b/src/amd/compiler/tests/test_assembler.cpp @@ -630,45 +630,6 @@ BEGIN_TEST(assembler.mubuf) ->mubuf() .tfe = true; - /* LDS */ - if (gfx == GFX11) { - //~gfx11! buffer_load_lds_b32 off, s[32:35], 0 ; e0c40000 80080080 - bld.mubuf(aco_opcode::buffer_load_dword, op_s4, Operand(v1), Operand::zero(), op_m0, 0, - false) - ->mubuf() - .lds = true; - - //~gfx11! buffer_load_lds_i8 off, s[32:35], 0 ; e0b80000 80080080 - bld.mubuf(aco_opcode::buffer_load_sbyte, op_s4, Operand(v1), Operand::zero(), op_m0, 0, - false) - ->mubuf() - .lds = true; - - //~gfx11! buffer_load_lds_i16 off, s[32:35], 0 ; e0c00000 80080080 - bld.mubuf(aco_opcode::buffer_load_sshort, op_s4, Operand(v1), Operand::zero(), op_m0, 0, - false) - ->mubuf() - .lds = true; - - //~gfx11! buffer_load_lds_u8 off, s[32:35], 0 ; e0b40000 80080080 - bld.mubuf(aco_opcode::buffer_load_ubyte, op_s4, Operand(v1), Operand::zero(), op_m0, 0, - false) - ->mubuf() - .lds = true; - - //~gfx11! buffer_load_lds_u16 off, s[32:35], 0 ; e0bc0000 80080080 - bld.mubuf(aco_opcode::buffer_load_ushort, op_s4, Operand(v1), Operand::zero(), op_m0, 0, - false) - ->mubuf() - .lds = true; - - //~gfx11! buffer_load_lds_format_x off, s[32:35], 0 ; e0c80000 80080080 - bld.mubuf(aco_opcode::buffer_load_format_x, op_s4, Operand(v1), Operand::zero(), op_m0, 0, - false) - ->mubuf() - .lds = true; - } - /* Stores */ //~gfx11! buffer_store_b32 v10, off, s[32:35], s30 ; e0680000 1e080a80 //~gfx12! buffer_store_b32 v10, off, s[32:35], s30 ; c406801e 0080400a 00000000