[llvm] [AMDGPU][SIInsertWaitcnts][NFC] Refactor counterOutOfOrder() to use a WaitEventSet (PR #187758)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 23 11:48:27 PDT 2026
https://github.com/vporpo updated https://github.com/llvm/llvm-project/pull/187758
>From d7872d325790e3ee6816e58bd409dac70ff230eb Mon Sep 17 00:00:00 2001
From: Vasileios Porpodas <vasileios.porpodas at amd.com>
Date: Fri, 20 Mar 2026 17:38:57 +0000
Subject: [PATCH 1/2] [AMDGPU][SIInsertWaitcnts][NFC] Refactor
counterOutOfOrder() to use WaitEventSet
This is a follow-up to @piotrAMD's comment in #178511 about using a
`WaitEventSet` instead of an unsigned maksk in `counterOutOfOrder()`.
---
llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
index 522a520c2f50c..43c68a5d1a462 100644
--- a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
@@ -1676,13 +1676,15 @@ bool WaitcntBrackets::counterOutOfOrder(InstCounterType T) const {
// so having GLOBAL_INV_ACCESS mixed with other LOAD_CNT events doesn't cause
// out-of-order completion.
if (T == LOAD_CNT) {
- unsigned Events = hasPendingEvent(T);
+ WaitEventSet Events;
+ if (hasPendingEvent(T))
+ Events.insert(VMEM_ACCESS);
// Remove GLOBAL_INV_ACCESS from the event mask before checking for mixed
// events
- Events &= ~(1 << GLOBAL_INV_ACCESS);
+ Events.remove(GLOBAL_INV_ACCESS);
// Return true only if there are still multiple event types after removing
// GLOBAL_INV
- return Events & (Events - 1);
+ return Events.twoOrMore();
}
return hasMixedPendingEvents(T);
>From 90ee13da2ed3acde1b52c33b2f1850cefdce0bfa Mon Sep 17 00:00:00 2001
From: Vasileios Porpodas <vasileios.porpodas at amd.com>
Date: Mon, 23 Mar 2026 18:18:44 +0000
Subject: [PATCH 2/2] fixup! [AMDGPU][SIInsertWaitcnts][NFC] Refactor
counterOutOfOrder() to use WaitEventSet
---
llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
index 43c68a5d1a462..bb085b6ac786c 100644
--- a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
@@ -1676,9 +1676,7 @@ bool WaitcntBrackets::counterOutOfOrder(InstCounterType T) const {
// so having GLOBAL_INV_ACCESS mixed with other LOAD_CNT events doesn't cause
// out-of-order completion.
if (T == LOAD_CNT) {
- WaitEventSet Events;
- if (hasPendingEvent(T))
- Events.insert(VMEM_ACCESS);
+ WaitEventSet Events = PendingEvents & Context->getWaitEvents(T);
// Remove GLOBAL_INV_ACCESS from the event mask before checking for mixed
// events
Events.remove(GLOBAL_INV_ACCESS);
More information about the llvm-commits
mailing list