@@ -524,23 +524,29 @@ foreach mx = SchedMxListW in {
524
524
foreach mx = SchedMxList in {
525
525
defvar IsWorstCase = SMX60IsWorstCaseMX<mx, SchedMxList>.c;
526
526
527
- let Latency = Get458Latency <mx>.c, ReleaseAtCycles = [4 ] in {
527
+ let Latency = Get4458Latency <mx>.c, ReleaseAtCycles = [ConstOneUntilM1ThenDouble<mx>.c ] in {
528
528
defm "" : LMULWriteResMX<"WriteVSALUV", [SMX60_VIEU], mx, IsWorstCase>;
529
529
defm "" : LMULWriteResMX<"WriteVSALUX", [SMX60_VIEU], mx, IsWorstCase>;
530
530
defm "" : LMULWriteResMX<"WriteVSALUI", [SMX60_VIEU], mx, IsWorstCase>;
531
531
defm "" : LMULWriteResMX<"WriteVAALUV", [SMX60_VIEU], mx, IsWorstCase>;
532
532
defm "" : LMULWriteResMX<"WriteVAALUX", [SMX60_VIEU], mx, IsWorstCase>;
533
533
}
534
534
535
- // Pattern of vsmul: e8/e16 = 4/4/5/8, e32 = 5,5,5, 8, e64 = 7,8,16, 32
535
+ // Latency of vsmul: e8/e16 = 4/4/5/8, e32 = 5/5/5/ 8, e64 = 7/8/16/ 32
536
536
// We use the worst-case until we can split the SEW.
537
+ defvar VSMulLat = ConstValueUntilLMULThenDoubleBase<"M2", 7, 8, mx>.c;
538
+ // Latency of vsmul: e8/e16/e32 = 1/2/4/8, e64 = 4/8/16/32
539
+ // We use the worst-case until we can split the SEW.
540
+ defvar VSMulOcc = ConstValueUntilLMULThenDoubleBase<"M1", 1, 4, mx>.c;
537
541
// TODO: change WriteVSMulV/X to be defined with LMULSEWSchedWrites
538
- let Latency = Get781632Latency<mx>.c , ReleaseAtCycles = [7 ] in {
542
+ let Latency = VSMulLat , ReleaseAtCycles = [VSMulOcc ] in {
539
543
defm "" : LMULWriteResMX<"WriteVSMulV", [SMX60_VIEU], mx, IsWorstCase>;
540
544
defm "" : LMULWriteResMX<"WriteVSMulX", [SMX60_VIEU], mx, IsWorstCase>;
541
545
}
542
546
543
- let Latency = Get4816Latency<mx>.c, ReleaseAtCycles = [4] in {
547
+ defvar VSShiftLat = ConstValueUntilLMULThenDouble<"M2", 4, mx>.c;
548
+ defvar VSShiftOcc = ConstOneUntilMF2ThenDouble<mx>.c;
549
+ let Latency = VSShiftLat, ReleaseAtCycles = [VSShiftOcc] in {
544
550
defm "" : LMULWriteResMX<"WriteVSShiftV", [SMX60_VIEU], mx, IsWorstCase>;
545
551
defm "" : LMULWriteResMX<"WriteVSShiftX", [SMX60_VIEU], mx, IsWorstCase>;
546
552
defm "" : LMULWriteResMX<"WriteVSShiftI", [SMX60_VIEU], mx, IsWorstCase>;
0 commit comments