[llvm] [AMDGPU] Simplicy the logic in checkWMMACoexecutionHazards, NFC (PR #200717)
Shilei Tian via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 1 08:04:32 PDT 2026
================
@@ -2048,45 +2048,49 @@ static bool isCoexecutableVALUInst(const MachineInstr &MI) {
!SIInstrInfo::isSWMMAC(MI) && !SIInstrInfo::isLDSDMA(MI);
}
-static bool IsWMMAHazardInstInCategory(const MachineInstr &MI,
- const SIInstrInfo *TII, unsigned Latency,
- unsigned Category) {
- assert(TII->isXDLWMMA(MI) && (Latency == 8 || Latency == 16) &&
- "Handle me if the xdl wmma instruction latency changes");
-
- switch (Category) {
- case 0: // Dense WMMA Instructions:
- // WMMA_*F16, WMMA_*BF16
- // WMMA_*FP8FP8
- // WMMA_*FP8BF8
- // WMMA_*BF8FP8
- // WMMA_*BF8BF8
- // WMMA_*F8F6F4 if SRCA & SRCB != F8
- return Latency == 8 && SIInstrInfo::isWMMA(MI);
-
- case 1: // Dense WMMA Instructions:
- // WMMA_IU8
- // WMMA_IU4
- // WMMA_*F8F6F4 if SRCA OR SRCB == F8
- return Latency == 16 && SIInstrInfo::isWMMA(MI);
-
- case 2: // Dense SWMMAC Instructions
- // SWMMAC_*F16, SWMMAC_*BF16,
- // SWMMAC_*FP8FP8
- // SWMMAC_*BF8FP8
- // SWMMAC_*FP8BF8
- // SWMMAC_*BF8BF8
- return Latency == 8 && SIInstrInfo::isSWMMAC(MI);
-
- case 3: // Sparse WMMA Instructions:
- // SWMMAC_IU8
- // SWMMAC_IU4
- return Latency == 16 && SIInstrInfo::isSWMMAC(MI);
- default:
+// Classify XDL WMMA instructions into co-execution hazard categories
+// (Refer to SPG 4.6.12.1), mainly based on instruction latency.
+//
+// Category 0: WMMA with Latency 8
+// WMMA_*F16, WMMA_*BF16
+// WMMA_*FP8FP8
+// WMMA_*FP8BF8
+// WMMA_*BF8FP8
+// WMMA_*BF8BF8
+// WMMA_*F8F6F4 if SRCA & SRCB != F8
+//
+// Category 1: WMMA Latency 16
+// WMMA_IU8
+// WMMA_*F8F6F4 if SRCA OR SRCB == F8
+//
+// Category 2: SWMMAC with Latency 8
+// SWMMAC_*F16, SWMMAC_*BF16,
+// SWMMAC_*FP8FP8
+// SWMMAC_*BF8FP8
+// SWMMAC_*FP8BF8
+// SWMMAC_*BF8BF8
+//
+// Category 3: SWMMAC with Latency 16
+// SWMMAC_IU8
+static unsigned getWMMAHazardInstInCategory(const MachineInstr &MI,
----------------
shiltian wrote:
from interface's perspective, I'd do `computeInstrLatency` inside this function, if `Latency` is not used anywhere else in its caller.
https://github.com/llvm/llvm-project/pull/200717
More information about the llvm-commits
mailing list