[llvm] [AMDGPU] Make use of SIInstrInfo::isWaitcnt. NFC. (PR #154087)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 18 03:00:15 PDT 2025
https://github.com/jayfoad created https://github.com/llvm/llvm-project/pull/154087
None
>From 3c9bc9d3036e8252c6b73eb5fe1cc4339d7cf253 Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
Date: Mon, 18 Aug 2025 10:58:50 +0100
Subject: [PATCH] [AMDGPU] Make use of SIInstrInfo::isWaitcnt. NFC.
---
.../lib/Target/AMDGPU/GCNHazardRecognizer.cpp | 36 +++----------------
llvm/lib/Target/AMDGPU/SIInstrInfo.h | 2 +-
2 files changed, 5 insertions(+), 33 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
index 49a681efc79c7..a3b64aee297b2 100644
--- a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+++ b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
@@ -1357,17 +1357,10 @@ bool GCNHazardRecognizer::fixSMEMtoVectorWriteHazards(MachineInstr *MI) {
// DsCnt corresponds to LGKMCnt here.
return (Decoded.DsCnt == 0);
}
- case AMDGPU::S_WAIT_STORECNT:
- case AMDGPU::S_WAIT_STORECNT_DSCNT:
- case AMDGPU::S_WAIT_LOADCNT:
- case AMDGPU::S_WAIT_LOADCNT_DSCNT:
- case AMDGPU::S_WAIT_SAMPLECNT:
- case AMDGPU::S_WAIT_BVHCNT:
- case AMDGPU::S_WAIT_DSCNT:
- case AMDGPU::S_WAIT_EXPCNT:
- case AMDGPU::S_WAIT_KMCNT:
- llvm_unreachable("unexpected wait count instruction");
default:
+ assert((!SIInstrInfo::isWaitcnt(MI.getOpcode()) ||
+ MI.getOpcode() == AMDGPU::S_WAIT_IDLE) &&
+ "unexpected wait count instruction");
// SOPP instructions cannot mitigate the hazard.
if (TII->isSOPP(MI))
return false;
@@ -2257,28 +2250,7 @@ int GCNHazardRecognizer::checkFPAtomicToDenormModeHazard(MachineInstr *MI) {
if (WaitStates >= 3 || SIInstrInfo::isVALU(MI))
return true;
- switch (MI.getOpcode()) {
- case AMDGPU::S_WAITCNT:
- case AMDGPU::S_WAITCNT_VSCNT:
- case AMDGPU::S_WAITCNT_VMCNT:
- case AMDGPU::S_WAITCNT_EXPCNT:
- case AMDGPU::S_WAITCNT_LGKMCNT:
- case AMDGPU::S_WAIT_IDLE:
- case AMDGPU::S_WAIT_LOADCNT:
- case AMDGPU::S_WAIT_LOADCNT_DSCNT:
- case AMDGPU::S_WAIT_SAMPLECNT:
- case AMDGPU::S_WAIT_BVHCNT:
- case AMDGPU::S_WAIT_STORECNT:
- case AMDGPU::S_WAIT_STORECNT_DSCNT:
- case AMDGPU::S_WAIT_EXPCNT:
- case AMDGPU::S_WAIT_DSCNT:
- case AMDGPU::S_WAIT_KMCNT:
- return true;
- default:
- break;
- }
-
- return false;
+ return SIInstrInfo::isWaitcnt(MI.getOpcode());
};
return FPAtomicToDenormModeWaitStates -
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.h b/llvm/lib/Target/AMDGPU/SIInstrInfo.h
index 18f0e5b9b56bc..5cbf6f5ab0459 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.h
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.h
@@ -1056,7 +1056,7 @@ class SIInstrInfo final : public AMDGPUGenInstrInfo {
}
}
- bool isWaitcnt(unsigned Opcode) const {
+ static bool isWaitcnt(unsigned Opcode) {
switch (getNonSoftWaitcntOpcode(Opcode)) {
case AMDGPU::S_WAITCNT:
case AMDGPU::S_WAITCNT_VSCNT:
More information about the llvm-commits
mailing list