Skip to content

Commit 6111860

Browse files
[RISCV] Fix and refactor Zvk sched classes
* VPseudoVALU_V_NoMask_Zvk, VPseudoVALU_S_NoMask_Zvk, VPseudoVALU_VV_NoMask_Zvk, VPseudoVALU_VI_NoMask_Zvk, VPseudoVALU_VI_NoMaskTU_Zvk, and VPseudoVALU_VV_NoMaskTU_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 7344e99 commit 6111860

File tree

2 files changed

+20
-41
lines changed

2 files changed

+20
-41
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2996,12 +2996,6 @@ multiclass VPseudoVWALU_VV_VX {
29962996
}
29972997
}
29982998

2999-
multiclass VPseudoVWALU_VV_VX_VI<Operand ImmType> : VPseudoVWALU_VV_VX {
3000-
foreach m = MxListW in {
3001-
defm "" : VPseudoBinaryW_VI<ImmType, m>;
3002-
}
3003-
}
3004-
30052999
multiclass VPseudoVWMUL_VV_VX {
30063000
foreach m = MxListW in {
30073001
defvar mx = m.MX;

llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td

Lines changed: 20 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -256,22 +256,16 @@ multiclass VPseudoBinaryV_S_NoMask_Zvk<LMULInfo m> {
256256
multiclass VPseudoVALU_V_NoMask_Zvk {
257257
foreach m = MxListVF4 in {
258258
defvar mx = m.MX;
259-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
260-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
261-
262259
defm "" : VPseudoBinaryV_V_NoMask_Zvk<m>,
263-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
260+
SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
264261
}
265262
}
266263

267264
multiclass VPseudoVALU_S_NoMask_Zvk {
268265
foreach m = MxListVF4 in {
269266
defvar mx = m.MX;
270-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
271-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
272-
273267
defm "" : VPseudoBinaryV_S_NoMask_Zvk<m>,
274-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
268+
SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
275269
}
276270
}
277271

@@ -281,59 +275,44 @@ multiclass VPseudoVALU_V_S_NoMask_Zvk
281275
multiclass VPseudoVALU_VV_NoMask_Zvk {
282276
foreach m = MxListVF4 in {
283277
defvar mx = m.MX;
284-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
285-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
286-
287278
defm _VV : VPseudoTernaryNoMask_Zvk<m.vrclass, m.vrclass, m.vrclass, m>,
288-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
279+
SchedTernary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
289280
}
290281
}
291282

292283
multiclass VPseudoVALU_VI_NoMask_Zvk {
293284
foreach m = MxListVF4 in {
294285
defvar mx = m.MX;
295-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
296-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
297-
298286
defm _VI : VPseudoTernaryNoMask_Zvk<m.vrclass, m.vrclass, uimm5, m>,
299-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
287+
SchedTernary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
300288
}
301289
}
302290

303291
multiclass VPseudoVALU_VI_NoMaskTU_Zvk {
304292
foreach m = MxListVF4 in {
305293
defvar mx = m.MX;
306-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
307-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
308-
309294
defm _VI : VPseudoBinaryNoMask<m.vrclass, m.vrclass, uimm5, m>,
310-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
295+
SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
311296
}
312297
}
313298

314299
multiclass VPseudoVALU_VV_NoMaskTU_Zvk {
315300
foreach m = MxListVF4 in {
316301
defvar mx = m.MX;
317-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
318-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
319-
320302
defm _VV : VPseudoBinaryNoMask<m.vrclass, m.vrclass, m.vrclass, m>,
321-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
303+
SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
322304
}
323305
}
324306

325307
multiclass VPseudoVCLMUL_VV_VX {
326308
foreach m = MxList in {
327309
defvar mx = m.MX;
328-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
329-
defvar WriteVIALUX_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
330-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
331-
defvar ReadVIALUX_MX = !cast<SchedRead>("ReadVIALUX_" # mx);
332-
333310
defm "" : VPseudoBinaryV_VV<m>,
334-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
311+
SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx,
312+
forceMergeOpRead=true>;
335313
defm "" : VPseudoBinaryV_VX<m>,
336-
Sched<[WriteVIALUX_MX, ReadVIALUV_MX, ReadVIALUX_MX, ReadVMask]>;
314+
SchedBinary<"WriteVIALUX", "ReadVIALUV", "ReadVIALUX", mx,
315+
forceMergeOpRead=true>;
337316
}
338317
}
339318

@@ -349,11 +328,17 @@ multiclass VPseudoUnaryV_V<LMULInfo m> {
349328
multiclass VPseudoVALU_V {
350329
foreach m = MxList in {
351330
defvar mx = m.MX;
352-
defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
353-
defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
354-
355331
defm "" : VPseudoUnaryV_V<m>,
356-
Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
332+
SchedUnary<"WriteVIALUV", "ReadVIALUV", mx,
333+
forceMergeOpRead=true>;
334+
}
335+
}
336+
337+
multiclass VPseudoVWALU_VV_VX_VI<Operand ImmType> : VPseudoVWALU_VV_VX {
338+
foreach m = MxListW in {
339+
defm "" : VPseudoBinaryW_VI<ImmType, m>,
340+
SchedUnary<"WriteVIWALUV", "ReadVIWALUV", m.MX,
341+
forceMergeOpRead=true>;
357342
}
358343
}
359344

0 commit comments

Comments
 (0)