@@ -404,7 +404,7 @@ def : WriteRes<WriteVSETVL, [AscalonV]>;
404404foreach mx = SchedMxList in {
405405 defvar Cycles = AscalonGetCyclesDefault<mx>.c;
406406 defvar IsWorstCase = AscalonIsWorstCaseMX<mx, SchedMxList>.c;
407- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
407+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
408408 defm "" : LMULWriteResMX<"WriteVIALUV", [AscalonFX, AscalonV], mx, IsWorstCase>;
409409 defm "" : LMULWriteResMX<"WriteVIALUX", [AscalonFX, AscalonV], mx, IsWorstCase>;
410410 defm "" : LMULWriteResMX<"WriteVIALUI", [AscalonFX, AscalonV], mx, IsWorstCase>;
@@ -438,7 +438,7 @@ foreach mx = SchedMxList in {
438438 foreach sew = SchedSEWSet<mx>.val in {
439439 defvar Cycles = AscalonGetCyclesDivOrSqrt<mx, sew>.c;
440440 defvar IsWorstCase = AscalonIsWorstCaseMXSEW<mx, sew, SchedMxList>.c;
441- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
441+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
442442 defm "" : LMULSEWWriteResMXSEW<"WriteVIDivV", [AscalonFX, AscalonV], mx, sew, IsWorstCase>;
443443 defm "" : LMULSEWWriteResMXSEW<"WriteVIDivX", [AscalonFX, AscalonV], mx, sew, IsWorstCase>;
444444 }
@@ -449,7 +449,7 @@ foreach mx = SchedMxList in {
449449foreach mx = SchedMxListW in {
450450 defvar Cycles = AscalonGetCyclesDefault<mx>.c;
451451 defvar IsWorstCase = AscalonIsWorstCaseMX<mx, SchedMxListW>.c;
452- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
452+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
453453 defm "" : LMULWriteResMX<"WriteVIWALUV", [AscalonFX, AscalonV], mx, IsWorstCase>;
454454 defm "" : LMULWriteResMX<"WriteVIWALUX", [AscalonFX, AscalonV], mx, IsWorstCase>;
455455 defm "" : LMULWriteResMX<"WriteVIWALUI", [AscalonFX, AscalonV], mx, IsWorstCase>;
@@ -463,7 +463,7 @@ foreach mx = SchedMxListW in {
463463foreach mx = SchedMxListW in {
464464 defvar Cycles = AscalonGetCyclesNarrowing<mx>.c;
465465 defvar IsWorstCase = AscalonIsWorstCaseMX<mx, SchedMxListW>.c;
466- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
466+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
467467 defm "" : LMULWriteResMX<"WriteVNShiftV", [AscalonFX, AscalonV], mx, IsWorstCase>;
468468 defm "" : LMULWriteResMX<"WriteVNShiftX", [AscalonFX, AscalonV], mx, IsWorstCase>;
469469 defm "" : LMULWriteResMX<"WriteVNShiftI", [AscalonFX, AscalonV], mx, IsWorstCase>;
@@ -475,7 +475,7 @@ foreach mx = SchedMxListF in {
475475 foreach sew = SchedSEWSet<mx, isF=1>.val in {
476476 defvar Cycles = AscalonGetCyclesDefault<mx>.c;
477477 defvar IsWorstCase = AscalonIsWorstCaseMXSEW<mx, sew, SchedMxListF, isF=1>.c;
478- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
478+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
479479 defm "" : LMULSEWWriteResMXSEW<"WriteVFALUV", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
480480 defm "" : LMULSEWWriteResMXSEW<"WriteVFALUF", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
481481 defm "" : LMULSEWWriteResMXSEW<"WriteVFMulV", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
@@ -484,8 +484,6 @@ foreach mx = SchedMxListF in {
484484 defm "" : LMULSEWWriteResMXSEW<"WriteVFMulAddF", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
485485 defm "" : LMULSEWWriteResMXSEW<"WriteVFRecpV", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
486486 defm "" : LMULSEWWriteResMXSEW<"WriteVFCvtIToFV", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
487- }
488- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
489487 defm "" : LMULSEWWriteResMXSEW<"WriteVFMinMaxV", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
490488 defm "" : LMULSEWWriteResMXSEW<"WriteVFMinMaxF", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
491489 defm "" : LMULSEWWriteResMXSEW<"WriteVFSgnjV", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
@@ -496,15 +494,15 @@ foreach mx = SchedMxListF in {
496494foreach mx = SchedMxList in {
497495 defvar Cycles = AscalonGetCyclesDefault<mx>.c;
498496 defvar IsWorstCase = AscalonIsWorstCaseMX<mx, SchedMxList>.c;
499- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
497+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
500498 defm "" : LMULWriteResMX<"WriteVFCvtFToIV", [AscalonFPA, AscalonV], mx, IsWorstCase>;
501499 }
502- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
500+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
503501 defm "" : LMULWriteResMX<"WriteVFClassV", [AscalonFP, AscalonV], mx, IsWorstCase>;
504502 defm "" : LMULWriteResMX<"WriteVFMergeV", [AscalonFP, AscalonV], mx, IsWorstCase>;
505503 defm "" : LMULWriteResMX<"WriteVFMovV", [AscalonFP, AscalonV], mx, IsWorstCase>;
506504 }
507- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
505+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
508506 defm "" : LMULWriteResMX<"WriteVFCmpV", [AscalonFP, AscalonV], mx, IsWorstCase>;
509507 defm "" : LMULWriteResMX<"WriteVFCmpF", [AscalonFP, AscalonV], mx, IsWorstCase>;
510508 }
@@ -513,7 +511,7 @@ foreach mx = SchedMxListF in {
513511 foreach sew = SchedSEWSet<mx, isF=1>.val in {
514512 defvar Cycles = AscalonGetCyclesDivOrSqrt<mx, sew>.c;
515513 defvar IsWorstCase = AscalonIsWorstCaseMXSEW<mx, sew, SchedMxListF, 1>.c;
516- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
514+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
517515 defm "" : LMULSEWWriteResMXSEW<"WriteVFSqrtV", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
518516 defm "" : LMULSEWWriteResMXSEW<"WriteVFDivV", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
519517 defm "" : LMULSEWWriteResMXSEW<"WriteVFDivF", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
@@ -526,15 +524,15 @@ foreach mx = SchedMxListW in {
526524 foreach sew = SchedSEWSet<mx, isF=0, isWidening=1>.val in {
527525 defvar Cycles = AscalonGetCyclesDefault<mx>.c;
528526 defvar IsWorstCase = AscalonIsWorstCaseMXSEW<mx, sew, SchedMxListW>.c;
529- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in
527+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in
530528 defm "" : LMULSEWWriteResMXSEW<"WriteVFWCvtIToFV", [AscalonFXB, AscalonV], mx, sew, IsWorstCase>;
531529 }
532530}
533531foreach mx = SchedMxListFW in {
534532 foreach sew = SchedSEWSet<mx, isF=1, isWidening=1>.val in {
535533 defvar Cycles = AscalonGetCyclesDefault<mx>.c;
536534 defvar IsWorstCase = AscalonIsWorstCaseMXSEW<mx, sew, SchedMxListFW, isF=1>.c;
537- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
535+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
538536 defm "" : LMULSEWWriteResMXSEW<"WriteVFWALUV", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
539537 defm "" : LMULSEWWriteResMXSEW<"WriteVFWALUF", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
540538 defm "" : LMULSEWWriteResMXSEW<"WriteVFWMulV", [AscalonFP, AscalonV], mx, sew, IsWorstCase>;
@@ -546,22 +544,22 @@ foreach mx = SchedMxListFW in {
546544 }
547545 defvar Cycles = AscalonGetCyclesDefault<mx>.c;
548546 defvar IsWorstCase = AscalonIsWorstCaseMX<mx, SchedMxListFW>.c;
549- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in
547+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in
550548 defm "" : LMULWriteResMX<"WriteVFWCvtFToIV", [AscalonFPA, AscalonV], mx, IsWorstCase>;
551549}
552550// Narrowing
553551foreach mx = SchedMxListW in {
554552 defvar Cycles = AscalonGetCyclesNarrowing<mx>.c;
555553 defvar IsWorstCase = AscalonIsWorstCaseMX<mx, SchedMxListW>.c;
556- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
554+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
557555 defm "" : LMULWriteResMX<"WriteVFNCvtFToIV", [AscalonFPA, AscalonV], mx, IsWorstCase>;
558556 }
559557}
560558foreach mx = SchedMxListFW in {
561559 foreach sew = SchedSEWSet<mx, isF=1, isWidening=1>.val in {
562560 defvar Cycles = AscalonGetCyclesNarrowing<mx>.c;
563561 defvar IsWorstCase = AscalonIsWorstCaseMXSEW<mx, sew, SchedMxListFW, isF=1>.c;
564- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
562+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
565563 defm "" : LMULSEWWriteResMXSEW<"WriteVFNCvtIToFV", [AscalonFXB, AscalonV], mx, sew, IsWorstCase>;
566564 defm "" : LMULSEWWriteResMXSEW<"WriteVFNCvtFToFV", [AscalonFXB, AscalonV], mx, sew, IsWorstCase>;
567565 }
@@ -573,7 +571,7 @@ foreach mx = SchedMxList in {
573571 foreach sew = SchedSEWSet<mx>.val in {
574572 defvar Cycles = AscalonGetCyclesDefault<mx>.c;
575573 defvar IsWorstCase = AscalonIsWorstCaseMXSEW<mx, sew, SchedMxList>.c;
576- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in {
574+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in {
577575 defm "" : LMULSEWWriteResMXSEW<"WriteVIRedV_From", [AscalonFX, AscalonV],
578576 mx, sew, IsWorstCase>;
579577 defm "" : LMULSEWWriteResMXSEW<"WriteVIRedMinMaxV_From", [AscalonFX, AscalonV],
@@ -586,7 +584,7 @@ foreach mx = SchedMxListWRed in {
586584 foreach sew = SchedSEWSet<mx, 0, 1>.val in {
587585 defvar Cycles = AscalonGetCyclesDefault<mx>.c;
588586 defvar IsWorstCase = AscalonIsWorstCaseMXSEW<mx, sew, SchedMxListWRed>.c;
589- let Latency = Cycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, Cycles] in
587+ let Latency = Cycles, ReleaseAtCycles = [1, !sub( Cycles, 1) ] in
590588 defm "" : LMULSEWWriteResMXSEW<"WriteVIWRedV_From", [AscalonFX, AscalonV],
591589 mx, sew, IsWorstCase>;
592590 }
@@ -596,14 +594,14 @@ foreach mx = SchedMxListF in {
596594 foreach sew = SchedSEWSet<mx, 1>.val in {
597595 defvar RedCycles = AscalonGetCyclesDefault<mx>.c;
598596 defvar IsWorstCase = AscalonIsWorstCaseMXSEW<mx, sew, SchedMxListF, 1>.c;
599- let Latency = RedCycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, RedCycles] in {
597+ let Latency = RedCycles, ReleaseAtCycles = [1, !sub( RedCycles, 1) ] in {
600598 defm "" : LMULSEWWriteResMXSEW<"WriteVFRedV_From", [AscalonFX, AscalonV],
601599 mx, sew, IsWorstCase>;
602600 defm "" : LMULSEWWriteResMXSEW<"WriteVFRedMinMaxV_From", [AscalonFX, AscalonV],
603601 mx, sew, IsWorstCase>;
604602 }
605603 defvar OrdRedCycles = AscalonGetCyclesLMUL<mx, 18>.c;
606- let Latency = OrdRedCycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, OrdRedCycles] in
604+ let Latency = OrdRedCycles, ReleaseAtCycles = [1, !sub( OrdRedCycles, 1) ] in
607605 defm "" : LMULSEWWriteResMXSEW<"WriteVFRedOV_From", [AscalonFX, AscalonV],
608606 mx, sew, IsWorstCase>;
609607 }
@@ -613,11 +611,11 @@ foreach mx = SchedMxListFWRed in {
613611 foreach sew = SchedSEWSet<mx, 1, 1>.val in {
614612 defvar RedCycles = AscalonGetCyclesDefault<mx>.c;
615613 defvar IsWorstCase = AscalonIsWorstCaseMXSEW<mx, sew, SchedMxListFWRed, 1>.c;
616- let Latency = RedCycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, RedCycles] in
614+ let Latency = RedCycles, ReleaseAtCycles = [1, !sub( RedCycles, 1) ] in
617615 defm "" : LMULSEWWriteResMXSEW<"WriteVFWRedV_From", [AscalonFX, AscalonV],
618616 mx, sew, IsWorstCase>;
619617 defvar OrdRedCycles = AscalonGetCyclesLMUL<mx, 18>.c;
620- let Latency = OrdRedCycles, AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, OrdRedCycles] in
618+ let Latency = OrdRedCycles, ReleaseAtCycles = [1, !sub( OrdRedCycles, 1) ] in
621619 defm "" : LMULSEWWriteResMXSEW<"WriteVFWRedOV_From", [AscalonFX, AscalonV],
622620 mx, sew, IsWorstCase>;
623621 }
0 commit comments