[llvm] [AMDGPU] Fix simplification of VM_VSRC based on VMEM waits (PR #178711)
Krzysztof Drewniak via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 20 08:53:56 PDT 2026
================
@@ -1295,12 +1297,27 @@ void WaitcntBrackets::simplifyVmVsrc(const AMDGPU::Waitcnt &CheckWait,
// Waiting for some counters implies waiting for VM_VSRC, since an
// instruction that decrements a counter on completion would have
// decremented VM_VSRC once its VGPR operands had been read.
- if (CheckWait.get(AMDGPU::VM_VSRC) >=
- std::min({CheckWait.get(AMDGPU::LOAD_CNT),
- CheckWait.get(AMDGPU::STORE_CNT),
- CheckWait.get(AMDGPU::SAMPLE_CNT),
- CheckWait.get(AMDGPU::BVH_CNT), CheckWait.get(AMDGPU::DS_CNT)}))
- UpdateWait.set(AMDGPU::VM_VSRC, ~0u);
+ static constexpr AMDGPU::InstCounterType VmemCounters[] = {
+ AMDGPU::LOAD_CNT, AMDGPU::STORE_CNT, AMDGPU::SAMPLE_CNT, AMDGPU::BVH_CNT,
+ AMDGPU::DS_CNT};
+ HWEvents VmemEvents = llvm::accumulate(
+ VmemCounters, HWEvents(), [&](HWEvents Acc, AMDGPU::InstCounterType T) {
+ return Acc | Context->getWaitEvents(T);
+ });
+ HWEvents PendingVmemEvents = PendingEvents & VmemEvents;
+ auto Simplify = [&](AMDGPU::InstCounterType T) {
----------------
krzysz00 wrote:
Is "Simplify" the right name for this?
https://github.com/llvm/llvm-project/pull/178711
More information about the llvm-commits
mailing list