Skip to content

Commit 15abe09

Browse files
[RISCV] Fix and refactor Zvk sched classes (#86519)
* VPseudoVALU_V_NoMask_Zvk, VPseudoVALU_S_NoMask_Zvk, VPseudoVALU_VV_NoMask_Zvk, and VPseudoVALU_VI_NoMask_Zvk do not read a merge op * VPseudoUnaryV_V is a unary read instead of a binary read * Convert all other cases `Sched<[...]>` to the equivalent SchedUnary, SchedBinary, or SchedTernary.
1 parent 0cd44ff commit 15abe09

File tree

2 files changed

+22
-41
lines changed

2 files changed

+22
-41
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2985,12 +2985,6 @@ multiclass VPseudoVWALU_VV_VX {
29852985
}
29862986
}
29872987

2988-
multiclass VPseudoVWALU_VV_VX_VI<Operand ImmType> : VPseudoVWALU_VV_VX {
2989-
foreach m = MxListW in {
2990-
defm "" : VPseudoBinaryW_VI<ImmType, m>;
2991-
}
2992-
}
2993-
29942988
multiclass VPseudoVWMUL_VV_VX {
29952989
foreach m = MxListW in {
29962990
defvar mx = m.MX;

llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td

Lines changed: 22 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -269,22 +269,16 @@ multiclass VPseudoBinaryV_S_NoMask_Zvk<LMULInfo m> {
269269
multiclass VPseudoVALU_V_NoMask_Zvk {
270270
foreach m = MxListVF4 in {
271271
defvar mx = m.MX;
272-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
273-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
274-
275272
defm "" : VPseudoBinaryV_V_NoMask_Zvk<m>,
276-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
273+
SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
277274
}
278275
}
279276

280277
multiclass VPseudoVALU_S_NoMask_Zvk {
281278
foreach m = MxListVF4 in {
282279
defvar mx = m.MX;
283-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
284-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
285-
286280
defm "" : VPseudoBinaryV_S_NoMask_Zvk<m>,
287-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
281+
SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
288282
}
289283
}
290284

@@ -294,59 +288,46 @@ multiclass VPseudoVALU_V_S_NoMask_Zvk
294288
multiclass VPseudoVALU_VV_NoMask_Zvk {
295289
foreach m = MxListVF4 in {
296290
defvar mx = m.MX;
297-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
298-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
299-
300291
defm _VV : VPseudoTernaryNoMask_Zvk<m.vrclass, m.vrclass, m.vrclass, m>,
301-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
292+
SchedTernary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
302293
}
303294
}
304295

305296
multiclass VPseudoVALU_VI_NoMask_Zvk {
306297
foreach m = MxListVF4 in {
307298
defvar mx = m.MX;
308-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
309-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
310-
311299
defm _VI : VPseudoTernaryNoMask_Zvk<m.vrclass, m.vrclass, uimm5, m>,
312-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
300+
SchedTernary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
313301
}
314302
}
315303

316304
multiclass VPseudoVALU_VI_NoMaskTU_Zvk {
317305
foreach m = MxListVF4 in {
318306
defvar mx = m.MX;
319-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
320-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
321-
322307
defm _VI : VPseudoBinaryNoMaskTU_Zvk<m.vrclass, m.vrclass, uimm5, m>,
323-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
308+
SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx,
309+
forceMergeOpRead=true>;
324310
}
325311
}
326312

327313
multiclass VPseudoVALU_VV_NoMaskTU_Zvk {
328314
foreach m = MxListVF4 in {
329315
defvar mx = m.MX;
330-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
331-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
332-
333316
defm _VV : VPseudoBinaryNoMaskTU_Zvk<m.vrclass, m.vrclass, m.vrclass, m>,
334-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
317+
SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx,
318+
forceMergeOpRead=true>;
335319
}
336320
}
337321

338322
multiclass VPseudoVCLMUL_VV_VX {
339323
foreach m = MxList in {
340324
defvar mx = m.MX;
341-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
342-
defvar WriteVIALUX_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
343-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
344-
defvar ReadVIALUX_MX = !cast<SchedRead>("ReadVIALUX_" # mx);
345-
346325
defm "" : VPseudoBinaryV_VV<m>,
347-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
326+
SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx,
327+
forceMergeOpRead=true>;
348328
defm "" : VPseudoBinaryV_VX<m>,
349-
Sched<[WriteVIALUX_MX, ReadVIALUV_MX, ReadVIALUX_MX, ReadVMask]>;
329+
SchedBinary<"WriteVIALUX", "ReadVIALUV", "ReadVIALUX", mx,
330+
forceMergeOpRead=true>;
350331
}
351332
}
352333

@@ -362,11 +343,17 @@ multiclass VPseudoUnaryV_V<LMULInfo m> {
362343
multiclass VPseudoVALU_V {
363344
foreach m = MxList in {
364345
defvar mx = m.MX;
365-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
366-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
367-
368346
defm "" : VPseudoUnaryV_V<m>,
369-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
347+
SchedUnary<"WriteVIALUV", "ReadVIALUV", mx,
348+
forceMergeOpRead=true>;
349+
}
350+
}
351+
352+
multiclass VPseudoVWALU_VV_VX_VI<Operand ImmType> : VPseudoVWALU_VV_VX {
353+
foreach m = MxListW in {
354+
defm "" : VPseudoBinaryW_VI<ImmType, m>,
355+
SchedUnary<"WriteVIWALUV", "ReadVIWALUV", m.MX,
356+
forceMergeOpRead=true>;
370357
}
371358
}
372359

0 commit comments

Comments
 (0)