Skip to content

Commit fce1328

Browse files
committed
Simplify release/acquire
Out of order cores don't necessarily need to chain acquire-at and release-at cycles.
1 parent 162020b commit fce1328

File tree

1 file changed

+20
-22
lines changed

1 file changed

+20
-22
lines changed

llvm/lib/Target/RISCV/RISCVSchedTTAscalonD8.td

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ def : WriteRes<WriteVSETVL, [AscalonV]>;
404404
foreach 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 {
449449
foreach 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 {
463463
foreach 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 {
496494
foreach 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
}
533531
foreach 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
553551
foreach 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
}
560558
foreach 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

Comments
 (0)