@@ -524,23 +524,29 @@ foreach mx = SchedMxListW in {
524524foreach mx = SchedMxList in {
525525 defvar IsWorstCase = SMX60IsWorstCaseMX<mx, SchedMxList>.c;
526526
527- let Latency = Get458Latency <mx>.c, ReleaseAtCycles = [4 ] in {
527+ let Latency = Get4458Latency <mx>.c, ReleaseAtCycles = [ConstOneUntilM1ThenDouble<mx>.c ] in {
528528 defm "" : LMULWriteResMX<"WriteVSALUV", [SMX60_VIEU], mx, IsWorstCase>;
529529 defm "" : LMULWriteResMX<"WriteVSALUX", [SMX60_VIEU], mx, IsWorstCase>;
530530 defm "" : LMULWriteResMX<"WriteVSALUI", [SMX60_VIEU], mx, IsWorstCase>;
531531 defm "" : LMULWriteResMX<"WriteVAALUV", [SMX60_VIEU], mx, IsWorstCase>;
532532 defm "" : LMULWriteResMX<"WriteVAALUX", [SMX60_VIEU], mx, IsWorstCase>;
533533 }
534534
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
536536 // 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;
537541 // 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 {
539543 defm "" : LMULWriteResMX<"WriteVSMulV", [SMX60_VIEU], mx, IsWorstCase>;
540544 defm "" : LMULWriteResMX<"WriteVSMulX", [SMX60_VIEU], mx, IsWorstCase>;
541545 }
542546
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 {
544550 defm "" : LMULWriteResMX<"WriteVSShiftV", [SMX60_VIEU], mx, IsWorstCase>;
545551 defm "" : LMULWriteResMX<"WriteVSShiftX", [SMX60_VIEU], mx, IsWorstCase>;
546552 defm "" : LMULWriteResMX<"WriteVSShiftI", [SMX60_VIEU], mx, IsWorstCase>;
0 commit comments