[llvm] 4ceb487 - [AArch64] Improve scheduling info for WHILE instruction (#219122)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 3 06:51:26 PDT 2026
Author: David Green
Date: 2026-09-03T14:51:21+01:00
New Revision: 4ceb4872398a2395a4eb78f2d73eec4cdba6ac08
URL: https://github.com/llvm/llvm-project/commit/4ceb4872398a2395a4eb78f2d73eec4cdba6ac08
DIFF: https://github.com/llvm/llvm-project/commit/4ceb4872398a2395a4eb78f2d73eec4cdba6ac08.diff
LOG: [AArch64] Improve scheduling info for WHILE instruction (#219122)
They should have a throughput of 2, only using a single M microop.
Added:
Modified:
llvm/lib/Target/AArch64/AArch64SchedNeoverseV3AE.td
llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-sve-instructions.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV3AE.td b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV3AE.td
index 29b7b16195871..d825535606564 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV3AE.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV3AE.td
@@ -159,11 +159,6 @@ def V3AEWrite_1c_2M : SchedWriteRes<[V3AEUnitM, V3AEUnitM]> {
let NumMicroOps = 2;
}
-def V3AEWrite_3c_2M : SchedWriteRes<[V3AEUnitM, V3AEUnitM]> {
- let Latency = 3;
- let NumMicroOps = 2;
-}
-
def V3AEWrite_4c_2M : SchedWriteRes<[V3AEUnitM, V3AEUnitM]> {
let Latency = 4;
let NumMicroOps = 2;
@@ -1891,9 +1886,9 @@ def : InstRW<[V3AEWrite_2or3c_1M], (instrs BRKNS_PPzP, BRKPAS_PPzPP,
BRKPBS_PPzPP)>;
// Loop control, based on GPR
-def : InstRW<[V3AEWrite_3c_2M],
+def : InstRW<[V3AEWrite_2c_1M],
(instregex "^WHILE(GE|GT|HI|HS|LE|LO|LS|LT)_P(WW|XX)_[BHSD]")>;
-def : InstRW<[V3AEWrite_3c_2M], (instregex "^WHILE(RW|WR)_PXX_[BHSD]")>;
+def : InstRW<[V3AEWrite_2c_1M], (instregex "^WHILE(RW|WR)_PXX_[BHSD]")>;
// Loop terminate
def : InstRW<[V3AEWrite_1c_2M], (instregex "^CTERM(EQ|NE)_(WW|XX)")>;
diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-sve-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-sve-instructions.s
index d7a90a8252a07..b6e7995950e65 100644
--- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-sve-instructions.s
+++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-sve-instructions.s
@@ -3369,24 +3369,24 @@
# CHECK-NEXT: 1 2 0.50 uzp2 z31.d, z31.d, z31.d
# CHECK-NEXT: 1 2 0.50 uzp2 z31.h, z31.h, z31.h
# CHECK-NEXT: 1 2 0.50 uzp2 z31.s, z31.s, z31.s
-# CHECK-NEXT: 2 3 1.00 whilege p15.b, w0, wzr
-# CHECK-NEXT: 2 3 1.00 whilege p15.b, wzr, w0
-# CHECK-NEXT: 2 3 1.00 whilege p15.b, x0, xzr
-# CHECK-NEXT: 2 3 1.00 whilege p15.b, xzr, x0
-# CHECK-NEXT: 2 3 1.00 whilege p15.d, w0, wzr
-# CHECK-NEXT: 2 3 1.00 whilege p15.d, x0, xzr
-# CHECK-NEXT: 2 3 1.00 whilege p15.h, w0, wzr
-# CHECK-NEXT: 2 3 1.00 whilege p15.h, x0, xzr
-# CHECK-NEXT: 2 3 1.00 whilege p15.s, w0, wzr
-# CHECK-NEXT: 2 3 1.00 whilege p15.s, x0, xzr
-# CHECK-NEXT: 2 3 1.00 whilerw p15.b, x30, x30
-# CHECK-NEXT: 2 3 1.00 whilerw p15.d, x30, x30
-# CHECK-NEXT: 2 3 1.00 whilerw p15.h, x30, x30
-# CHECK-NEXT: 2 3 1.00 whilerw p15.s, x30, x30
-# CHECK-NEXT: 2 3 1.00 whilewr p15.b, x30, x30
-# CHECK-NEXT: 2 3 1.00 whilewr p15.d, x30, x30
-# CHECK-NEXT: 2 3 1.00 whilewr p15.h, x30, x30
-# CHECK-NEXT: 2 3 1.00 whilewr p15.s, x30, x30
+# CHECK-NEXT: 1 2 0.50 whilege p15.b, w0, wzr
+# CHECK-NEXT: 1 2 0.50 whilege p15.b, wzr, w0
+# CHECK-NEXT: 1 2 0.50 whilege p15.b, x0, xzr
+# CHECK-NEXT: 1 2 0.50 whilege p15.b, xzr, x0
+# CHECK-NEXT: 1 2 0.50 whilege p15.d, w0, wzr
+# CHECK-NEXT: 1 2 0.50 whilege p15.d, x0, xzr
+# CHECK-NEXT: 1 2 0.50 whilege p15.h, w0, wzr
+# CHECK-NEXT: 1 2 0.50 whilege p15.h, x0, xzr
+# CHECK-NEXT: 1 2 0.50 whilege p15.s, w0, wzr
+# CHECK-NEXT: 1 2 0.50 whilege p15.s, x0, xzr
+# CHECK-NEXT: 1 2 0.50 whilerw p15.b, x30, x30
+# CHECK-NEXT: 1 2 0.50 whilerw p15.d, x30, x30
+# CHECK-NEXT: 1 2 0.50 whilerw p15.h, x30, x30
+# CHECK-NEXT: 1 2 0.50 whilerw p15.s, x30, x30
+# CHECK-NEXT: 1 2 0.50 whilewr p15.b, x30, x30
+# CHECK-NEXT: 1 2 0.50 whilewr p15.d, x30, x30
+# CHECK-NEXT: 1 2 0.50 whilewr p15.h, x30, x30
+# CHECK-NEXT: 1 2 0.50 whilewr p15.s, x30, x30
# CHECK-NEXT: 1 2 1.00 * U wrffr p0.b
# CHECK-NEXT: 1 2 1.00 * U wrffr p15.b
# CHECK-NEXT: 1 2 0.50 xar z0.b, z0.b, z1.b, #1
@@ -3457,7 +3457,7 @@
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15]
-# CHECK-NEXT: - - - - - - - - - 245.00 245.00 651.00 401.88 303.88 41.88 41.88 41.88 41.88 41.88 41.88 406.00 2380.50 1905.50
+# CHECK-NEXT: - - - - - - - - - 245.00 245.00 651.00 392.88 294.88 41.88 41.88 41.88 41.88 41.88 41.88 406.00 2380.50 1905.50
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] Instructions:
@@ -6820,24 +6820,24 @@
# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uzp2 z31.d, z31.d, z31.d
# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uzp2 z31.h, z31.h, z31.h
# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uzp2 z31.s, z31.s, z31.s
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilege p15.b, w0, wzr
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilege p15.b, wzr, w0
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilege p15.b, x0, xzr
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilege p15.b, xzr, x0
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilege p15.d, w0, wzr
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilege p15.d, x0, xzr
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilege p15.h, w0, wzr
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilege p15.h, x0, xzr
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilege p15.s, w0, wzr
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilege p15.s, x0, xzr
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilerw p15.b, x30, x30
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilerw p15.d, x30, x30
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilerw p15.h, x30, x30
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilerw p15.s, x30, x30
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilewr p15.b, x30, x30
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilewr p15.d, x30, x30
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilewr p15.h, x30, x30
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 1.00 - - - - - - - - - whilewr p15.s, x30, x30
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilege p15.b, w0, wzr
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilege p15.b, wzr, w0
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilege p15.b, x0, xzr
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilege p15.b, xzr, x0
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilege p15.d, w0, wzr
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilege p15.d, x0, xzr
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilege p15.h, w0, wzr
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilege p15.h, x0, xzr
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilege p15.s, w0, wzr
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilege p15.s, x0, xzr
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilerw p15.b, x30, x30
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilerw p15.d, x30, x30
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilerw p15.h, x30, x30
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilerw p15.s, x30, x30
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilewr p15.b, x30, x30
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilewr p15.d, x30, x30
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilewr p15.h, x30, x30
+# CHECK-NEXT: - - - - - - - - - - - - 0.50 0.50 - - - - - - - - - whilewr p15.s, x30, x30
# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - - - - - - - - - wrffr p0.b
# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - - - - - - - - - wrffr p15.b
# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 xar z0.b, z0.b, z1.b, #1
More information about the llvm-commits
mailing list