llvm-project
18136039 - [AMDGPU] Fix GFX1250 hazard: S_SET_VGPR_MSB dropped (#184904)

Commit
90 days ago
[AMDGPU] Fix GFX1250 hazard: S_SET_VGPR_MSB dropped (#184904) [AMDGPU] Fix GFX1250 hazard: S_SET_VGPR_MSB dropped after S_SETREG_IMM32_B32 (MODE) On GFX1250, S_SET_VGPR_MSB immediately after S_SETREG_IMM32_B32 targeting the MODE register is silently dropped by hardware. AMDGPULowerVGPREncoding may insert S_SET_VGPR_MSB after a setreg(MODE) in Case 2 (size > 12) when imm32[12:19] doesn't match current VGPR MSBs, or when the next VALU instruction needs different MSBs. Fix by inserting S_NOP between the setreg and S_SET_VGPR_MSB to prevent the hazard. The fix handles two scenarios: - Case 2 mismatch: S_NOP is inserted directly before S_SET_VGPR_MSB in handleSetregMode. - Case 2 match followed by a VALU with different MSBs: a flag (NeedNopBeforeSetVGPRMSB) is set, and setMode inserts S_NOP before the next S_SET_VGPR_MSB. Also adds vcmpx-permlane-vgpr-msb-gfx1250.mir to verify that VGPR lowering must run after the hazard recognizer: fixVcmpxPermlaneHazards creates V_MOV_B32 using high VGPRs that need correct S_SET_VGPR_MSB from the lowering pass.
Author
Parents
Loading