[llvm-branch-commits] [llvm] [AMDGPU] Insert wmma coexec aware anti-hints rules (PR #226397)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Sep 25 01:50:17 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-llvm-globalisel

Author: Syadus Sefat (mssefat)

<details>
<summary>Changes</summary>


This patch ports the downstream coexec anti-hint insertion to upstream as rule-based insertion in the AMDGPU pre-ra anti-hints framework. It adds gfx1250x anti-hint rules for wmma coexec hazards such as A/B source war, swmmac index war, dest waw), trans source war, memory-address war etc. Each rule builds anti-hints relationship for the register allocator to keep hazardous registers in different physical registers so the hazard recognizer and waitcnt inserter need less nop and waits.

Co-authored-by:  Jeffrey Byrnes <jrbyrnes1989@<!-- -->gmail.com>


---
Full diff: https://github.com/llvm/llvm-project/pull/226397.diff


56 Files Affected:

- (modified) llvm/lib/Target/AMDGPU/GCNPreRAAntiHints.cpp (+257-25) 
- (modified) llvm/lib/Target/AMDGPU/GCNPreRAAntiHints.h (+22-4) 
- (modified) llvm/test/CodeGen/AMDGPU/GlobalISel/fp64-atomics-gfx90a.ll (+24-36) 
- (modified) llvm/test/CodeGen/AMDGPU/GlobalISel/load-constant.96.ll (+10-10) 
- (modified) llvm/test/CodeGen/AMDGPU/GlobalISel/mul.ll (+12-12) 
- (added) llvm/test/CodeGen/AMDGPU/anti-hints-addr-xcnt.gfx1250.mir (+497) 
- (added) llvm/test/CodeGen/AMDGPU/anti-hints-multi-hazard.gfx1250.mir (+268) 
- (added) llvm/test/CodeGen/AMDGPU/anti-hints-multi-rule.gfx1250.mir (+351) 
- (added) llvm/test/CodeGen/AMDGPU/anti-hints-swmmac-war-index.gfx1250.mir (+54) 
- (added) llvm/test/CodeGen/AMDGPU/anti-hints-trans-src0.gfx1250.mir (+166) 
- (added) llvm/test/CodeGen/AMDGPU/anti-hints-va-vdst.gfx1250.mir (+137) 
- (added) llvm/test/CodeGen/AMDGPU/anti-hints-wmma-war.gfx1250.mir (+1610) 
- (added) llvm/test/CodeGen/AMDGPU/anti-hints-wmma-waw.gfx1250.mir (+2293) 
- (modified) llvm/test/CodeGen/AMDGPU/anyext-s16-to-s64.ll (+3-4) 
- (modified) llvm/test/CodeGen/AMDGPU/asyncmark-gfx12plus.ll (+84-91) 
- (modified) llvm/test/CodeGen/AMDGPU/atomic_optimizations_buffer.ll (+10-14) 
- (modified) llvm/test/CodeGen/AMDGPU/atomic_optimizations_raw_buffer.ll (+10-14) 
- (modified) llvm/test/CodeGen/AMDGPU/atomic_optimizations_struct_buffer.ll (+10-14) 
- (modified) llvm/test/CodeGen/AMDGPU/bf16.ll (+167-132) 
- (modified) llvm/test/CodeGen/AMDGPU/branch-relaxation-gfx1250.ll (+8-10) 
- (modified) llvm/test/CodeGen/AMDGPU/carryout-selection.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/coexec-scheduler.ll (+37-42) 
- (modified) llvm/test/CodeGen/AMDGPU/ds_read2-gfx1250.ll (+1-1) 
- (modified) llvm/test/CodeGen/AMDGPU/ds_write2.ll (+15-19) 
- (modified) llvm/test/CodeGen/AMDGPU/fcanonicalize.bf16.ll (+12-12) 
- (modified) llvm/test/CodeGen/AMDGPU/fcanonicalize.ll (+3-3) 
- (modified) llvm/test/CodeGen/AMDGPU/flat-load-saddr-to-vaddr.ll (+4-4) 
- (modified) llvm/test/CodeGen/AMDGPU/flat-saddr-load.ll (+193-177) 
- (modified) llvm/test/CodeGen/AMDGPU/flat-saddr-store.ll (+27-33) 
- (modified) llvm/test/CodeGen/AMDGPU/fp-min-max-buffer-ptr-atomics.ll (+10-10) 
- (modified) llvm/test/CodeGen/AMDGPU/fp64-atomics-gfx90a.ll (+24-36) 
- (modified) llvm/test/CodeGen/AMDGPU/fp64-min-max-buffer-ptr-atomics.ll (+4-6) 
- (modified) llvm/test/CodeGen/AMDGPU/global-load-xcnt.ll (+139-148) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.load.b128.ll (+148-167) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.store.b128.ll (+69-69) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.image.atomic.pk.add.ll (+42-22) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.image.dim.ll (+34-16) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.private.ll (+4-4) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.is.shared.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.gfx950.bf16.ll (+32-36) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.gfx950.ll (+114-132) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.scale.f32.32x32x64.f8f6f4.ll (+82-68) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ptr.s.buffer.load.ll (+24-20) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.raw.buffer.store.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rcp.bf16.ll (+18-18) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.amdgcn.struct.buffer.store.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.sqrt.bf16.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/load-constant-i1.ll (+354-392) 
- (modified) llvm/test/CodeGen/AMDGPU/load-constant-i32.ll (+81-90) 
- (modified) llvm/test/CodeGen/AMDGPU/lshl-add-u64.ll (+4-4) 
- (modified) llvm/test/CodeGen/AMDGPU/max.ll (+12-12) 
- (modified) llvm/test/CodeGen/AMDGPU/min.ll (+3-4) 
- (modified) llvm/test/CodeGen/AMDGPU/pk-lshl-add-u64.ll (+12-14) 
- (modified) llvm/test/CodeGen/AMDGPU/sad.ll (+34-42) 
- (modified) llvm/test/CodeGen/AMDGPU/trans-bf16-omod.ll (+8-8) 
- (modified) llvm/test/CodeGen/AMDGPU/vopd3-imm-fold.ll (+8-8) 


``````````diff
The server is unavailable at this time. Please wait a few minutes before you try again.
``````````

</details>


https://github.com/llvm/llvm-project/pull/226397


More information about the llvm-branch-commits mailing list