From c712555a9fc4767c2725ada03a7853e408cfe5f4 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 13 Nov 2024 12:23:19 +0100 Subject: [PATCH] aco: save/restore VGPRS on GFX8 in the trap handler shader This will be needed for dumping VGPRs. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/compiler/aco_instruction_selection.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 3dea6316b44..7385f410ae7 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -12385,6 +12385,9 @@ select_trap_handler_shader(Program* program, ac_shader_config* config, bld.smem(aco_opcode::s_load_dwordx4, Definition(tma_rsrc, s4), Operand(PhysReg{tma_lo}, s2), Operand::zero()); + /* Save VGPRS that needs to be restored. */ + save_vgprs_to_mem(&ctx, Operand(tma_rsrc, s4)); + /* Store TTMP0-TTMP1. */ bld.smem(aco_opcode::s_buffer_store_dwordx2, Operand(tma_rsrc, s4), Operand::c32(offset), Operand(ttmp0_reg, s2), memory_sync_info(), cache_glc); @@ -12433,10 +12436,8 @@ select_trap_handler_shader(Program* program, ac_shader_config* config, offset += 4; } - if (ctx.program->gfx_level >= GFX9) { - /* Restore VGPRS. */ - restore_vgprs_from_mem(&ctx, Operand(tma_rsrc, s4)); - } + /* Restore VGPRS. */ + restore_vgprs_from_mem(&ctx, Operand(tma_rsrc, s4)); /* Restore m0 and exec. */ bld.copy(Definition(m0, s1), Operand(save_m0, s1));