From 8c6f2fef1b4e338d13f67f27563da20c7487f754 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 7 Nov 2024 14:45:54 +0100 Subject: [PATCH] aco: use scalar buffer stores for dumping SGPRS from the trap on GFX8 This avoids using any VGPRs on GFX8. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/compiler/aco_instruction_selection.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 9c5ea4bd120..dbce229ed43 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -12518,12 +12518,17 @@ select_trap_handler_shader(Program* program, struct nir_shader* shader, ac_shade /* Dump all SGPRs. */ for (uint32_t i = 0; i < program->dev.sgpr_limit; i++) { - bld.copy(Definition(PhysReg{256}, v1) /* v0 */, Operand(PhysReg{i}, s1)); + if (ctx.program->gfx_level >= GFX9) { + bld.copy(Definition(PhysReg{256}, v1) /* v0 */, Operand(PhysReg{i}, s1)); - bld.mubuf(aco_opcode::buffer_store_dword, Operand(tma_rsrc, s4), Operand(v1), - Operand::c32(0u), Operand(PhysReg{256}, v1) /* v0 */, offset, false /* offen */, - false /* idxen */, /* addr64 */ false, - /* disable_wqm */ false, cache_glc); + bld.mubuf(aco_opcode::buffer_store_dword, Operand(tma_rsrc, s4), Operand(v1), + Operand::c32(0u), Operand(PhysReg{256}, v1) /* v0 */, offset, false /* offen */, + false /* idxen */, /* addr64 */ false, + /* disable_wqm */ false, cache_glc); + } else { + bld.smem(aco_opcode::s_buffer_store_dword, Operand(tma_rsrc, s4), Operand::c32(offset), + Operand(PhysReg{i}, s1), memory_sync_info(), cache_glc); + } offset += 4; }