[llvm] [AArch64] Neoverse V1 scheduling info (PR #126707)
Ash Dobrescu via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 11 07:46:39 PST 2025
================
@@ -525,33 +640,48 @@ def V1Rd_BFMLA : SchedReadAdvance<2, [V1Wr_BFMLA]>;
def V1Wr_CRC : SchedWriteRes<[V1UnitM0]> { let Latency = 2; }
def V1Rd_CRC : SchedReadAdvance<1, [V1Wr_CRC]>;
-def V1Wr_ZDOTB : SchedWriteRes<[V1UnitV01]> { let Latency = 3; }
+def V1Wr_ZDOTB : SchedWriteRes<[V1UnitSVE01]> { let Latency = 3;
+ let NumMicroOps = 2;
+ let ReleaseAtCycles = [2]; }
def V1Rd_ZDOTB : SchedReadAdvance<2, [V1Wr_ZDOTB]>;
-def V1Wr_ZUDOTB : SchedWriteRes<[V1UnitV]> { let Latency = 3; }
+def V1Wr_ZUDOTB : SchedWriteRes<[V1UnitV]> { let Latency = 3; let ReleaseAtCycles = [2]; }
def V1Rd_ZUDOTB : SchedReadAdvance<2, [V1Wr_ZUDOTB]>;
-def V1Wr_ZDOTH : SchedWriteRes<[V1UnitV0]> { let Latency = 4; }
+def V1Wr_ZDOTH : SchedWriteRes<[V1UnitSVE0]> { let Latency = 4;
+ let NumMicroOps = 2;
+ let ReleaseAtCycles = [2]; }
def V1Rd_ZDOTH : SchedReadAdvance<3, [V1Wr_ZDOTH]>;
def V1Wr_ZMMA : SchedWriteRes<[V1UnitV01]> { let Latency = 3; }
def V1Rd_ZMMA : SchedReadAdvance<2, [V1Wr_ZMMA]>;
-let Latency = 5, NumMicroOps = 2 in
-def V1Wr_ZMAD : SchedWriteRes<[V1UnitV0, V1UnitV0]>;
+def V1Wr_ZMABHS : SchedWriteRes<[V1UnitSVE0]> { let Latency = 4;
+ let NumMicroOps = 2;
+ let ReleaseAtCycles = [2]; }
+def V1Rd_ZMABHS : SchedReadAdvance<2, [V1Wr_ZMABHS]>;
+
+def V1Wr_ZMAD : SchedWriteRes<[V1UnitSVE0]> { let Latency = 5;
+ let NumMicroOps = 2;
+ let ReleaseAtCycles = [4]; }
def V1Rd_ZMAD : SchedReadAdvance<3, [V1Wr_ZMAD]>;
-def V1Wr_ZFCMA : SchedWriteRes<[V1UnitV01]> { let Latency = 5; }
+def V1Wr_ZFCMA : SchedWriteRes<[V1UnitSVE01,V1UnitSVE01]> { let Latency = 5;
+ let NumMicroOps = 2; }
def V1Rd_ZFCMA : SchedReadAdvance<3, [V1Wr_ZFCMA]>;
-def V1Wr_ZFMA : SchedWriteRes<[V1UnitV01]> { let Latency = 4; }
+def V1Wr_ZFMA : SchedWriteRes<[V1UnitSVE01,V1UnitSVE01]> { let Latency = 4;
+ let NumMicroOps = 2; }
----------------
Rin18 wrote:
>From what I can see you have aded `let NumMicroOps = 2` to most SVE forwarded types. Could you explain where this comes from? I'd expect those instructions to use one microOp.
https://github.com/llvm/llvm-project/pull/126707
More information about the llvm-commits
mailing list