Skip to content

Commit 26e44d4

Browse files
[RISCV][CodeGen] Account for LMUL for Vector Fixed-Point Arithmetic Instructions
It is likley that subtargets act differently for vector fixed-point arithmetic instructions based on the LMUL. This patch creates seperate SchedRead, SchedWrite, WriteRes, ReadAdvance for each relevant LMUL. Differential Revision: https://reviews.llvm.org/D137342
1 parent 43db7cb commit 26e44d4

File tree

3 files changed

+157
-91
lines changed

3 files changed

+157
-91
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoV.td

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -782,50 +782,65 @@ multiclass VDIV_MV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
782782

783783
multiclass VSALU_IV_V_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5, string vw = "v"> {
784784
def V : VALUVV<funct6, OPIVV, opcodestr # "." # vw # "v">,
785-
Sched<[WriteVSALUV, ReadVSALUV, ReadVSALUV, ReadVMask]>;
785+
Sched<[WriteVSALUV_UpperBound, ReadVSALUV_UpperBound,
786+
ReadVSALUV_UpperBound, ReadVMask]>;
786787
def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
787-
Sched<[WriteVSALUX, ReadVSALUV, ReadVSALUX, ReadVMask]>;
788+
Sched<[WriteVSALUX_UpperBound, ReadVSALUV_UpperBound,
789+
ReadVSALUX_UpperBound, ReadVMask]>;
788790
def I : VALUVI<funct6, opcodestr # "." # vw # "i", optype>,
789-
Sched<[WriteVSALUI, ReadVSALUV, ReadVMask]>;
791+
Sched<[WriteVSALUI_UpperBound, ReadVSALUV_UpperBound,
792+
ReadVMask]>;
790793
}
791794

792795
multiclass VSALU_IV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
793796
def V : VALUVV<funct6, OPIVV, opcodestr # "." # vw # "v">,
794-
Sched<[WriteVSALUV, ReadVSALUV, ReadVSALUV, ReadVMask]>;
797+
Sched<[WriteVSALUV_UpperBound, ReadVSALUV_UpperBound,
798+
ReadVSALUV_UpperBound, ReadVMask]>;
795799
def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
796-
Sched<[WriteVSALUX, ReadVSALUV, ReadVSALUX, ReadVMask]>;
800+
Sched<[WriteVSALUX_UpperBound, ReadVSALUV_UpperBound,
801+
ReadVSALUX_UpperBound, ReadVMask]>;
797802
}
798803

799804
multiclass VAALU_MV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
800805
def V : VALUVV<funct6, OPMVV, opcodestr # "." # vw # "v">,
801-
Sched<[WriteVAALUV, ReadVAALUV, ReadVAALUV, ReadVMask]>;
806+
Sched<[WriteVAALUV_UpperBound, ReadVAALUV_UpperBound,
807+
ReadVAALUV_UpperBound, ReadVMask]>;
802808
def X : VALUVX<funct6, OPMVX, opcodestr # "." # vw # "x">,
803-
Sched<[WriteVAALUX, ReadVAALUV, ReadVAALUX, ReadVMask]>;
809+
Sched<[WriteVAALUX_UpperBound, ReadVAALUV_UpperBound,
810+
ReadVAALUX_UpperBound, ReadVMask]>;
804811
}
805812

806813
multiclass VSMUL_IV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
807814
def V : VALUVV<funct6, OPIVV, opcodestr # "." # vw # "v">,
808-
Sched<[WriteVSMulV, ReadVSMulV, ReadVSMulV, ReadVMask]>;
815+
Sched<[WriteVSMulV_UpperBound, ReadVSMulV_UpperBound,
816+
ReadVSMulV_UpperBound, ReadVMask]>;
809817
def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
810-
Sched<[WriteVSMulX, ReadVSMulV, ReadVSMulX, ReadVMask]>;
818+
Sched<[WriteVSMulX_UpperBound, ReadVSMulV_UpperBound,
819+
ReadVSMulX_UpperBound, ReadVMask]>;
811820
}
812821

813822
multiclass VSSHF_IV_V_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5, string vw = "v"> {
814823
def V : VALUVV<funct6, OPIVV, opcodestr # "." # vw # "v">,
815-
Sched<[WriteVSShiftV, ReadVSShiftV, ReadVSShiftV, ReadVMask]>;
824+
Sched<[WriteVSShiftV_UpperBound, ReadVSShiftV_UpperBound,
825+
ReadVSShiftV_UpperBound, ReadVMask]>;
816826
def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
817-
Sched<[WriteVSShiftX, ReadVSShiftV, ReadVSShiftX, ReadVMask]>;
827+
Sched<[WriteVSShiftX_UpperBound, ReadVSShiftV_UpperBound,
828+
ReadVSShiftX_UpperBound, ReadVMask]>;
818829
def I : VALUVI<funct6, opcodestr # "." # vw # "i", optype>,
819-
Sched<[WriteVSShiftI, ReadVSShiftV, ReadVMask]>;
830+
Sched<[WriteVSShiftI_UpperBound, ReadVSShiftV_UpperBound,
831+
ReadVMask]>;
820832
}
821833

822834
multiclass VNCLP_IV_V_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5, string vw = "v"> {
823835
def V : VALUVV<funct6, OPIVV, opcodestr # "." # vw # "v">,
824-
Sched<[WriteVNClipV, ReadVNClipV, ReadVNClipV, ReadVMask]>;
836+
Sched<[WriteVNClipV_UpperBound, ReadVNClipV_UpperBound,
837+
ReadVNClipV_UpperBound, ReadVMask]>;
825838
def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
826-
Sched<[WriteVNClipX, ReadVNClipV, ReadVNClipX, ReadVMask]>;
839+
Sched<[WriteVNClipX_UpperBound, ReadVNClipV_UpperBound,
840+
ReadVNClipX_UpperBound, ReadVMask]>;
827841
def I : VALUVI<funct6, opcodestr # "." # vw # "i", optype>,
828-
Sched<[WriteVNClipI, ReadVNClipV, ReadVMask]>;
842+
Sched<[WriteVNClipI_UpperBound, ReadVNClipV_UpperBound,
843+
ReadVMask]>;
829844
}
830845

831846
multiclass VSLD_IV_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5, string vw = "v"> {

llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td

Lines changed: 81 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2379,12 +2379,21 @@ multiclass VPseudoVGTR_VV_VX_VI<Operand ImmType = simm5, string Constraint = "">
23792379
}
23802380

23812381
multiclass VPseudoVSALU_VV_VX_VI<Operand ImmType = simm5, string Constraint = ""> {
2382-
defm "" : VPseudoBinaryV_VV<Constraint>,
2383-
Sched<[WriteVSALUV, ReadVSALUV, ReadVSALUV, ReadVMask]>;
2384-
defm "" : VPseudoBinaryV_VX<Constraint>,
2385-
Sched<[WriteVSALUX, ReadVSALUV, ReadVSALUX, ReadVMask]>;
2386-
defm "" : VPseudoBinaryV_VI<ImmType, Constraint>,
2387-
Sched<[WriteVSALUI, ReadVSALUV, ReadVMask]>;
2382+
foreach m = MxList in {
2383+
defvar mx = m.MX;
2384+
defvar WriteVSALUV_MX = !cast<SchedWrite>("WriteVSALUV_" # mx);
2385+
defvar WriteVSALUX_MX = !cast<SchedWrite>("WriteVSALUX_" # mx);
2386+
defvar WriteVSALUI_MX = !cast<SchedWrite>("WriteVSALUI_" # mx);
2387+
defvar ReadVSALUV_MX = !cast<SchedRead>("ReadVSALUV_" # mx);
2388+
defvar ReadVSALUX_MX = !cast<SchedRead>("ReadVSALUX_" # mx);
2389+
2390+
defm "" : VPseudoBinaryV_VV_LMUL<m, Constraint>,
2391+
Sched<[WriteVSALUV_MX, ReadVSALUV_MX, ReadVSALUV_MX, ReadVMask]>;
2392+
defm "" : VPseudoBinaryV_VX_LMUL<m, Constraint>,
2393+
Sched<[WriteVSALUX_MX, ReadVSALUV_MX, ReadVSALUX_MX, ReadVMask]>;
2394+
defm "" : VPseudoBinaryV_VI_LMUL<ImmType, m, Constraint>,
2395+
Sched<[WriteVSALUI_MX, ReadVSALUV_MX, ReadVMask]>;
2396+
}
23882397
}
23892398

23902399

@@ -2407,12 +2416,21 @@ multiclass VPseudoVSHT_VV_VX_VI<Operand ImmType = simm5, string Constraint = "">
24072416
}
24082417

24092418
multiclass VPseudoVSSHT_VV_VX_VI<Operand ImmType = simm5, string Constraint = ""> {
2410-
defm "" : VPseudoBinaryV_VV<Constraint>,
2411-
Sched<[WriteVSShiftV, ReadVSShiftV, ReadVSShiftV, ReadVMask]>;
2412-
defm "" : VPseudoBinaryV_VX<Constraint>,
2413-
Sched<[WriteVSShiftX, ReadVSShiftV, ReadVSShiftX, ReadVMask]>;
2414-
defm "" : VPseudoBinaryV_VI<ImmType, Constraint>,
2415-
Sched<[WriteVSShiftI, ReadVSShiftV, ReadVMask]>;
2419+
foreach m = MxList in {
2420+
defvar mx = m.MX;
2421+
defvar WriteVSShiftV_MX = !cast<SchedWrite>("WriteVSShiftV_" # mx);
2422+
defvar WriteVSShiftX_MX = !cast<SchedWrite>("WriteVSShiftX_" # mx);
2423+
defvar WriteVSShiftI_MX = !cast<SchedWrite>("WriteVSShiftI_" # mx);
2424+
defvar ReadVSShiftV_MX = !cast<SchedRead>("ReadVSShiftV_" # mx);
2425+
defvar ReadVSShiftX_MX = !cast<SchedRead>("ReadVSShiftX_" # mx);
2426+
2427+
defm "" : VPseudoBinaryV_VV_LMUL<m, Constraint>,
2428+
Sched<[WriteVSShiftV_MX, ReadVSShiftV_MX, ReadVSShiftV_MX, ReadVMask]>;
2429+
defm "" : VPseudoBinaryV_VX_LMUL<m, Constraint>,
2430+
Sched<[WriteVSShiftX_MX, ReadVSShiftV_MX, ReadVSShiftX_MX, ReadVMask]>;
2431+
defm "" : VPseudoBinaryV_VI_LMUL<ImmType, m, Constraint>,
2432+
Sched<[WriteVSShiftI_MX, ReadVSShiftV_MX, ReadVMask]>;
2433+
}
24162434
}
24172435

24182436
multiclass VPseudoVALU_VV_VX_VI<Operand ImmType = simm5, string Constraint = ""> {
@@ -2434,24 +2452,48 @@ multiclass VPseudoVALU_VV_VX_VI<Operand ImmType = simm5, string Constraint = "">
24342452
}
24352453

24362454
multiclass VPseudoVSALU_VV_VX {
2437-
defm "" : VPseudoBinaryV_VV,
2438-
Sched<[WriteVSALUV, ReadVSALUV, ReadVSALUV, ReadVMask]>;
2439-
defm "" : VPseudoBinaryV_VX,
2440-
Sched<[WriteVSALUX, ReadVSALUV, ReadVSALUX, ReadVMask]>;
2455+
foreach m = MxList in {
2456+
defvar mx = m.MX;
2457+
defvar WriteVSALUV_MX = !cast<SchedWrite>("WriteVSALUV_" # mx);
2458+
defvar WriteVSALUX_MX = !cast<SchedWrite>("WriteVSALUX_" # mx);
2459+
defvar ReadVSALUV_MX = !cast<SchedRead>("ReadVSALUV_" # mx);
2460+
defvar ReadVSALUX_MX = !cast<SchedRead>("ReadVSALUX_" # mx);
2461+
2462+
defm "" : VPseudoBinaryV_VV_LMUL<m>,
2463+
Sched<[WriteVSALUV_MX, ReadVSALUV_MX, ReadVSALUV_MX, ReadVMask]>;
2464+
defm "" : VPseudoBinaryV_VX_LMUL<m>,
2465+
Sched<[WriteVSALUX_MX, ReadVSALUV_MX, ReadVSALUX_MX, ReadVMask]>;
2466+
}
24412467
}
24422468

24432469
multiclass VPseudoVSMUL_VV_VX {
2444-
defm "" : VPseudoBinaryV_VV,
2445-
Sched<[WriteVSMulV, ReadVSMulV, ReadVSMulV, ReadVMask]>;
2446-
defm "" : VPseudoBinaryV_VX,
2447-
Sched<[WriteVSMulX, ReadVSMulV, ReadVSMulX, ReadVMask]>;
2470+
foreach m = MxList in {
2471+
defvar mx = m.MX;
2472+
defvar WriteVSMulV_MX = !cast<SchedWrite>("WriteVSMulV_" # mx);
2473+
defvar WriteVSMulX_MX = !cast<SchedWrite>("WriteVSMulX_" # mx);
2474+
defvar ReadVSMulV_MX = !cast<SchedRead>("ReadVSMulV_" # mx);
2475+
defvar ReadVSMulX_MX = !cast<SchedRead>("ReadVSMulX_" # mx);
2476+
2477+
defm "" : VPseudoBinaryV_VV_LMUL<m>,
2478+
Sched<[WriteVSMulV_MX, ReadVSMulV_MX, ReadVSMulV_MX, ReadVMask]>;
2479+
defm "" : VPseudoBinaryV_VX_LMUL<m>,
2480+
Sched<[WriteVSMulX_MX, ReadVSMulV_MX, ReadVSMulX_MX, ReadVMask]>;
2481+
}
24482482
}
24492483

24502484
multiclass VPseudoVAALU_VV_VX {
2451-
defm "" : VPseudoBinaryV_VV,
2452-
Sched<[WriteVAALUV, ReadVAALUV, ReadVAALUV, ReadVMask]>;
2453-
defm "" : VPseudoBinaryV_VX,
2454-
Sched<[WriteVAALUX, ReadVAALUV, ReadVAALUX, ReadVMask]>;
2485+
foreach m = MxList in {
2486+
defvar mx = m.MX;
2487+
defvar WriteVAALUV_MX = !cast<SchedWrite>("WriteVAALUV_" # mx);
2488+
defvar WriteVAALUX_MX = !cast<SchedWrite>("WriteVAALUX_" # mx);
2489+
defvar ReadVAALUV_MX = !cast<SchedRead>("ReadVAALUV_" # mx);
2490+
defvar ReadVAALUX_MX = !cast<SchedRead>("ReadVAALUX_" # mx);
2491+
2492+
defm "" : VPseudoBinaryV_VV_LMUL<m>,
2493+
Sched<[WriteVAALUV_MX, ReadVAALUV_MX, ReadVAALUV_MX, ReadVMask]>;
2494+
defm "" : VPseudoBinaryV_VX_LMUL<m>,
2495+
Sched<[WriteVAALUX_MX, ReadVAALUV_MX, ReadVAALUX_MX, ReadVMask]>;
2496+
}
24552497
}
24562498

24572499
multiclass VPseudoVMINMAX_VV_VX {
@@ -2777,12 +2819,21 @@ multiclass VPseudoVCALUM_V_X<string Constraint> {
27772819
}
27782820

27792821
multiclass VPseudoVNCLP_WV_WX_WI {
2780-
defm "" : VPseudoBinaryV_WV,
2781-
Sched<[WriteVNClipV, ReadVNClipV, ReadVNClipV, ReadVMask]>;
2782-
defm "" : VPseudoBinaryV_WX,
2783-
Sched<[WriteVNClipX, ReadVNClipV, ReadVNClipX, ReadVMask]>;
2784-
defm "" : VPseudoBinaryV_WI,
2785-
Sched<[WriteVNClipI, ReadVNClipV, ReadVMask]>;
2822+
foreach m = MxListW in {
2823+
defvar mx = m.MX;
2824+
defvar WriteVNClipV_MX = !cast<SchedWrite>("WriteVNClipV_" # mx);
2825+
defvar WriteVNClipX_MX = !cast<SchedWrite>("WriteVNClipX_" # mx);
2826+
defvar WriteVNClipI_MX = !cast<SchedWrite>("WriteVNClipI_" # mx);
2827+
defvar ReadVNClipV_MX = !cast<SchedRead>("ReadVNClipV_" # mx);
2828+
defvar ReadVNClipX_MX = !cast<SchedRead>("ReadVNClipX_" # mx);
2829+
2830+
defm "" : VPseudoBinaryV_WV_LMUL<m>,
2831+
Sched<[WriteVNClipV_MX, ReadVNClipV_MX, ReadVNClipV_MX, ReadVMask]>;
2832+
defm "" : VPseudoBinaryV_WX_LMUL<m>,
2833+
Sched<[WriteVNClipX_MX, ReadVNClipV_MX, ReadVNClipX_MX, ReadVMask]>;
2834+
defm "" : VPseudoBinaryV_WI_LMUL<m>,
2835+
Sched<[WriteVNClipI_MX, ReadVNClipV_MX, ReadVMask]>;
2836+
}
27862837
}
27872838

27882839
multiclass VPseudoVNSHT_WV_WX_WI {

llvm/lib/Target/RISCV/RISCVScheduleV.td

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -166,23 +166,23 @@ defm "" : LMULSchedWrites<"WriteVIMovI">;
166166

167167
// 12. Vector Fixed-Point Arithmetic Instructions
168168
// 12.1. Vector Single-Width Saturating Add and Subtract
169-
def WriteVSALUV : SchedWrite;
170-
def WriteVSALUX : SchedWrite;
171-
def WriteVSALUI : SchedWrite;
169+
defm "" : LMULSchedWrites<"WriteVSALUV">;
170+
defm "" : LMULSchedWrites<"WriteVSALUX">;
171+
defm "" : LMULSchedWrites<"WriteVSALUI">;
172172
// 12.2. Vector Single-Width Averaging Add and Subtract
173-
def WriteVAALUV : SchedWrite;
174-
def WriteVAALUX : SchedWrite;
173+
defm "" : LMULSchedWrites<"WriteVAALUV">;
174+
defm "" : LMULSchedWrites<"WriteVAALUX">;
175175
// 12.3. Vector Single-Width Fractional Multiply with Rounding and Saturation
176-
def WriteVSMulV : SchedWrite;
177-
def WriteVSMulX : SchedWrite;
176+
defm "" : LMULSchedWrites<"WriteVSMulV">;
177+
defm "" : LMULSchedWrites<"WriteVSMulX">;
178178
// 12.4. Vector Single-Width Scaling Shift Instructions
179-
def WriteVSShiftV : SchedWrite;
180-
def WriteVSShiftX : SchedWrite;
181-
def WriteVSShiftI : SchedWrite;
179+
defm "" : LMULSchedWrites<"WriteVSShiftV">;
180+
defm "" : LMULSchedWrites<"WriteVSShiftX">;
181+
defm "" : LMULSchedWrites<"WriteVSShiftI">;
182182
// 12.5. Vector Narrowing Fixed-Point Clip Instructions
183-
def WriteVNClipV : SchedWrite;
184-
def WriteVNClipX : SchedWrite;
185-
def WriteVNClipI : SchedWrite;
183+
defm "" : LMULSchedWrites<"WriteVNClipV", SchedMxListW>;
184+
defm "" : LMULSchedWrites<"WriteVNClipX", SchedMxListW>;
185+
defm "" : LMULSchedWrites<"WriteVNClipI", SchedMxListW>;
186186

187187
// 13. Vector Floating-Point Instructions
188188
// 13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
@@ -382,20 +382,20 @@ defm "" : LMULSchedReads<"ReadVIMovX">;
382382

383383
// 12. Vector Fixed-Point Arithmetic Instructions
384384
// 12.1. Vector Single-Width Saturating Add and Subtract
385-
def ReadVSALUV : SchedRead;
386-
def ReadVSALUX : SchedRead;
385+
defm "" : LMULSchedReads<"ReadVSALUV">;
386+
defm "" : LMULSchedReads<"ReadVSALUX">;
387387
// 12.2. Vector Single-Width Averaging Add and Subtract
388-
def ReadVAALUV : SchedRead;
389-
def ReadVAALUX : SchedRead;
388+
defm "" : LMULSchedReads<"ReadVAALUV">;
389+
defm "" : LMULSchedReads<"ReadVAALUX">;
390390
// 12.3. Vector Single-Width Fractional Multiply with Rounding and Saturation
391-
def ReadVSMulV : SchedRead;
392-
def ReadVSMulX : SchedRead;
391+
defm "" : LMULSchedReads<"ReadVSMulV">;
392+
defm "" : LMULSchedReads<"ReadVSMulX">;
393393
// 12.4. Vector Single-Width Scaling Shift Instructions
394-
def ReadVSShiftV : SchedRead;
395-
def ReadVSShiftX : SchedRead;
394+
defm "" : LMULSchedReads<"ReadVSShiftV">;
395+
defm "" : LMULSchedReads<"ReadVSShiftX">;
396396
// 12.5. Vector Narrowing Fixed-Point Clip Instructions
397-
def ReadVNClipV : SchedRead;
398-
def ReadVNClipX : SchedRead;
397+
defm "" : LMULSchedReads<"ReadVNClipV", SchedMxListW>;
398+
defm "" : LMULSchedReads<"ReadVNClipX", SchedMxListW>;
399399

400400
// 13. Vector Floating-Point Instructions
401401
// 13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
@@ -614,19 +614,19 @@ defm "" : LMULWriteRes<"WriteVIMovX", []>;
614614
defm "" : LMULWriteRes<"WriteVIMovI", []>;
615615

616616
// 12. Vector Fixed-Point Arithmetic Instructions
617-
def : WriteRes<WriteVSALUV, []>;
618-
def : WriteRes<WriteVSALUX, []>;
619-
def : WriteRes<WriteVSALUI, []>;
620-
def : WriteRes<WriteVAALUV, []>;
621-
def : WriteRes<WriteVAALUX, []>;
622-
def : WriteRes<WriteVSMulV, []>;
623-
def : WriteRes<WriteVSMulX, []>;
624-
def : WriteRes<WriteVSShiftV, []>;
625-
def : WriteRes<WriteVSShiftX, []>;
626-
def : WriteRes<WriteVSShiftI, []>;
627-
def : WriteRes<WriteVNClipV, []>;
628-
def : WriteRes<WriteVNClipX, []>;
629-
def : WriteRes<WriteVNClipI, []>;
617+
defm "" : LMULWriteRes<"WriteVSALUV", []>;
618+
defm "" : LMULWriteRes<"WriteVSALUX", []>;
619+
defm "" : LMULWriteRes<"WriteVSALUI", []>;
620+
defm "" : LMULWriteRes<"WriteVAALUV", []>;
621+
defm "" : LMULWriteRes<"WriteVAALUX", []>;
622+
defm "" : LMULWriteRes<"WriteVSMulV", []>;
623+
defm "" : LMULWriteRes<"WriteVSMulX", []>;
624+
defm "" : LMULWriteRes<"WriteVSShiftV", []>;
625+
defm "" : LMULWriteRes<"WriteVSShiftX", []>;
626+
defm "" : LMULWriteRes<"WriteVSShiftI", []>;
627+
defm "" : LMULWriteRes<"WriteVNClipV", [], SchedMxListW>;
628+
defm "" : LMULWriteRes<"WriteVNClipX", [], SchedMxListW>;
629+
defm "" : LMULWriteRes<"WriteVNClipI", [], SchedMxListW>;
630630

631631
// 13. Vector Floating-Point Instructions
632632
def : WriteRes<WriteVFALUV, []>;
@@ -765,16 +765,16 @@ defm "" : LMULReadAdvance<"ReadVIMovV", 0>;
765765
defm "" : LMULReadAdvance<"ReadVIMovX", 0>;
766766

767767
// 12. Vector Fixed-Point Arithmetic Instructions
768-
def : ReadAdvance<ReadVSALUV, 0>;
769-
def : ReadAdvance<ReadVSALUX, 0>;
770-
def : ReadAdvance<ReadVAALUV, 0>;
771-
def : ReadAdvance<ReadVAALUX, 0>;
772-
def : ReadAdvance<ReadVSMulV, 0>;
773-
def : ReadAdvance<ReadVSMulX, 0>;
774-
def : ReadAdvance<ReadVSShiftV, 0>;
775-
def : ReadAdvance<ReadVSShiftX, 0>;
776-
def : ReadAdvance<ReadVNClipV, 0>;
777-
def : ReadAdvance<ReadVNClipX, 0>;
768+
defm "" : LMULReadAdvance<"ReadVSALUV", 0>;
769+
defm "" : LMULReadAdvance<"ReadVSALUX", 0>;
770+
defm "" : LMULReadAdvance<"ReadVAALUV", 0>;
771+
defm "" : LMULReadAdvance<"ReadVAALUX", 0>;
772+
defm "" : LMULReadAdvance<"ReadVSMulV", 0>;
773+
defm "" : LMULReadAdvance<"ReadVSMulX", 0>;
774+
defm "" : LMULReadAdvance<"ReadVSShiftV", 0>;
775+
defm "" : LMULReadAdvance<"ReadVSShiftX", 0>;
776+
defm "" : LMULReadAdvance<"ReadVNClipV", 0, SchedMxListW>;
777+
defm "" : LMULReadAdvance<"ReadVNClipX", 0, SchedMxListW>;
778778

779779
// 13. Vector Floating-Point Instructions
780780
def : ReadAdvance<ReadVFALUV, 0>;

0 commit comments

Comments
 (0)