[llvm] f15c6ff - [AMDGPU] Make use of SIInstrInfo::isWaitcnt. NFC. (#154087)

via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 18 08:18:49 PDT 2025


Author: Jay Foad
Date: 2025-08-18T16:18:46+01:00
New Revision: f15c6ff6cb15acf67ee5bd73ca6442c6abd0f063

URL: https://github.com/llvm/llvm-project/commit/f15c6ff6cb15acf67ee5bd73ca6442c6abd0f063
DIFF: https://github.com/llvm/llvm-project/commit/f15c6ff6cb15acf67ee5bd73ca6442c6abd0f063.diff

LOG: [AMDGPU] Make use of SIInstrInfo::isWaitcnt. NFC. (#154087)

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
    llvm/lib/Target/AMDGPU/SIInstrInfo.h

Removed: 
    


################################################################################
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