Skip to content

Commit 89245b6

Browse files
[RISCV] Split sched classes for vrgather.vv and vrgatherei16.vv (#92768)
These can behave different on a subtarget since EEW=16 and EMUL = (16/SEW)*LMUL for the indices in vs1.
1 parent 942a6af commit 89245b6

File tree

5 files changed

+18
-4
lines changed

5 files changed

+18
-4
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoV.td

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1680,8 +1680,9 @@ let Predicates = [HasVInstructions] in {
16801680
let Constraints = "@earlyclobber $vd", RVVConstraint = Vrgather in {
16811681
defm VRGATHER_V : VGTR_IV_V_X_I<"vrgather", 0b001100>;
16821682
def VRGATHEREI16_VV : VALUVV<0b001110, OPIVV, "vrgatherei16.vv">,
1683-
SchedBinaryMC<"WriteVRGatherVV", "ReadVRGatherVV_data",
1684-
"ReadVRGatherVV_index">;
1683+
SchedBinaryMC<"WriteVRGatherEI16VV",
1684+
"ReadVRGatherEI16VV_data",
1685+
"ReadVRGatherEI16VV_index">;
16851686
} // Constraints = "@earlyclobber $vd", RVVConstraint = Vrgather
16861687

16871688
// Vector Compress Instruction

llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2264,8 +2264,8 @@ multiclass VPseudoVGTR_VV_EEW<int eew, string Constraint = ""> {
22642264
defm _VV
22652265
: VPseudoBinaryEmul<m.vrclass, m.vrclass, emul.vrclass, m, emul,
22662266
Constraint, e>,
2267-
SchedBinary<"WriteVRGatherVV", "ReadVRGatherVV_data",
2268-
"ReadVRGatherVV_index", mx, e, forceMergeOpRead=true>;
2267+
SchedBinary<"WriteVRGatherEI16VV", "ReadVRGatherEI16VV_data",
2268+
"ReadVRGatherEI16VV_index", mx, e, forceMergeOpRead=true>;
22692269
}
22702270
}
22712271
}

llvm/lib/Target/RISCV/RISCVSchedSiFive7.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,7 @@ foreach mx = SchedMxList in {
928928
defvar IsWorstCase = SiFive7IsWorstCaseMXSEW<mx, sew, SchedMxList>.c;
929929
let Latency = !add(Cycles, 3), AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, !add(1, Cycles)] in {
930930
defm "" : LMULSEWWriteResMXSEW<"WriteVRGatherVV", [SiFive7VCQ, SiFive7VA], mx, sew, IsWorstCase>;
931+
defm "" : LMULSEWWriteResMXSEW<"WriteVRGatherEI16VV", [SiFive7VCQ, SiFive7VA], mx, sew, IsWorstCase>;
931932
defm "" : LMULSEWWriteResMXSEW<"WriteVCompressV", [SiFive7VCQ, SiFive7VA], mx, sew, IsWorstCase>;
932933
}
933934
}
@@ -1273,6 +1274,8 @@ defm "" : LMULReadAdvance<"ReadVFSlideV", 0>;
12731274
defm "" : LMULReadAdvance<"ReadVFSlideF", 0>;
12741275
defm "" : LMULSEWReadAdvance<"ReadVRGatherVV_data", 0>;
12751276
defm "" : LMULSEWReadAdvance<"ReadVRGatherVV_index", 0>;
1277+
defm "" : LMULSEWReadAdvance<"ReadVRGatherEI16VV_data", 0>;
1278+
defm "" : LMULSEWReadAdvance<"ReadVRGatherEI16VV_index", 0>;
12761279
defm "" : LMULReadAdvance<"ReadVRGatherVX_data", 0>;
12771280
defm "" : LMULReadAdvance<"ReadVRGatherVX_index", 0>;
12781281
defm "" : LMULReadAdvance<"ReadVRGatherVI_data", 0>;

llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,7 @@ foreach mx = ["MF8", "MF4", "MF2", "M1"] in {
716716
defvar IsWorstCase = SiFiveP600IsWorstCaseMX<mx, SchedMxList>.c;
717717
let Latency = 3, ReleaseAtCycles = [1] in {
718718
defm "" : LMULSEWWriteResMXSEW<"WriteVRGatherVV", [SiFiveP600VEXQ1], mx, sew, IsWorstCase>;
719+
defm "" : LMULSEWWriteResMXSEW<"WriteVRGatherEI16VV", [SiFiveP600VEXQ1], mx, sew, IsWorstCase>;
719720
defm "" : LMULSEWWriteResMXSEW<"WriteVCompressV", [SiFiveP600VEXQ1], mx, sew, IsWorstCase>;
720721
}
721722
}
@@ -736,6 +737,7 @@ foreach mx = ["M2", "M4", "M8"] in {
736737
defvar IsWorstCase = SiFiveP600IsWorstCaseMXSEW<mx, sew, SchedMxList>.c;
737738
let Latency = 6, ReleaseAtCycles = [LMulLat] in {
738739
defm "" : LMULSEWWriteResMXSEW<"WriteVRGatherVV", [SiFiveP600VEXQ1], mx, sew, IsWorstCase>;
740+
defm "" : LMULSEWWriteResMXSEW<"WriteVRGatherEI16VV", [SiFiveP600VEXQ1], mx, sew, IsWorstCase>;
739741
defm "" : LMULSEWWriteResMXSEW<"WriteVCompressV", [SiFiveP600VEXQ1], mx, sew, IsWorstCase>;
740742
}
741743
}
@@ -1071,6 +1073,8 @@ defm "" : LMULReadAdvance<"ReadVFSlideV", 0>;
10711073
defm "" : LMULReadAdvance<"ReadVFSlideF", 0>;
10721074
defm "" : LMULSEWReadAdvance<"ReadVRGatherVV_data", 0>;
10731075
defm "" : LMULSEWReadAdvance<"ReadVRGatherVV_index", 0>;
1076+
defm "" : LMULSEWReadAdvance<"ReadVRGatherEI16VV_data", 0>;
1077+
defm "" : LMULSEWReadAdvance<"ReadVRGatherEI16VV_index", 0>;
10741078
defm "" : LMULReadAdvance<"ReadVRGatherVX_data", 0>;
10751079
defm "" : LMULReadAdvance<"ReadVRGatherVX_index", 0>;
10761080
defm "" : LMULReadAdvance<"ReadVRGatherVI_data", 0>;

llvm/lib/Target/RISCV/RISCVScheduleV.td

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,7 @@ defm "" : LMULSchedWrites<"WriteVISlide1X">;
521521
defm "" : LMULSchedWrites<"WriteVFSlide1F">;
522522
// 16.4. Vector Register Gather Instructions
523523
defm "" : LMULSEWSchedWrites<"WriteVRGatherVV">;
524+
defm "" : LMULSEWSchedWrites<"WriteVRGatherEI16VV">;
524525
defm "" : LMULSchedWrites<"WriteVRGatherVX">;
525526
defm "" : LMULSchedWrites<"WriteVRGatherVI">;
526527
// 16.5. Vector Compress Instruction
@@ -749,6 +750,8 @@ defm "" : LMULSchedReads<"ReadVFSlideF">;
749750
// 16.4. Vector Register Gather Instructions
750751
defm "" : LMULSEWSchedReads<"ReadVRGatherVV_data">;
751752
defm "" : LMULSEWSchedReads<"ReadVRGatherVV_index">;
753+
defm "" : LMULSEWSchedReads<"ReadVRGatherEI16VV_data">;
754+
defm "" : LMULSEWSchedReads<"ReadVRGatherEI16VV_index">;
752755
defm "" : LMULSchedReads<"ReadVRGatherVX_data">;
753756
defm "" : LMULSchedReads<"ReadVRGatherVX_index">;
754757
defm "" : LMULSchedReads<"ReadVRGatherVI_data">;
@@ -956,6 +959,7 @@ defm "" : LMULWriteRes<"WriteVSlideI", []>;
956959
defm "" : LMULWriteRes<"WriteVISlide1X", []>;
957960
defm "" : LMULWriteRes<"WriteVFSlide1F", []>;
958961
defm "" : LMULSEWWriteRes<"WriteVRGatherVV", []>;
962+
defm "" : LMULSEWWriteRes<"WriteVRGatherEI16VV", []>;
959963
defm "" : LMULWriteRes<"WriteVRGatherVX", []>;
960964
defm "" : LMULWriteRes<"WriteVRGatherVI", []>;
961965
defm "" : LMULSEWWriteRes<"WriteVCompressV", []>;
@@ -1120,6 +1124,8 @@ defm "" : LMULReadAdvance<"ReadVFSlideV", 0>;
11201124
defm "" : LMULReadAdvance<"ReadVFSlideF", 0>;
11211125
defm "" : LMULSEWReadAdvance<"ReadVRGatherVV_data", 0>;
11221126
defm "" : LMULSEWReadAdvance<"ReadVRGatherVV_index", 0>;
1127+
defm "" : LMULSEWReadAdvance<"ReadVRGatherEI16VV_data", 0>;
1128+
defm "" : LMULSEWReadAdvance<"ReadVRGatherEI16VV_index", 0>;
11231129
defm "" : LMULReadAdvance<"ReadVRGatherVX_data", 0>;
11241130
defm "" : LMULReadAdvance<"ReadVRGatherVX_index", 0>;
11251131
defm "" : LMULReadAdvance<"ReadVRGatherVI_data", 0>;

0 commit comments

Comments
 (0)