@@ -269,22 +269,16 @@ multiclass VPseudoBinaryV_S_NoMask_Zvk<LMULInfo m> {
269
269
multiclass VPseudoVALU_V_NoMask_Zvk {
270
270
foreach m = MxListVF4 in {
271
271
defvar mx = m.MX;
272
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
273
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
274
-
275
272
defm "" : VPseudoBinaryV_V_NoMask_Zvk<m>,
276
- Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask] >;
273
+ SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx >;
277
274
}
278
275
}
279
276
280
277
multiclass VPseudoVALU_S_NoMask_Zvk {
281
278
foreach m = MxListVF4 in {
282
279
defvar mx = m.MX;
283
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
284
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
285
-
286
280
defm "" : VPseudoBinaryV_S_NoMask_Zvk<m>,
287
- Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask] >;
281
+ SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx >;
288
282
}
289
283
}
290
284
@@ -294,59 +288,46 @@ multiclass VPseudoVALU_V_S_NoMask_Zvk
294
288
multiclass VPseudoVALU_VV_NoMask_Zvk {
295
289
foreach m = MxListVF4 in {
296
290
defvar mx = m.MX;
297
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
298
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
299
-
300
291
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 >;
302
293
}
303
294
}
304
295
305
296
multiclass VPseudoVALU_VI_NoMask_Zvk {
306
297
foreach m = MxListVF4 in {
307
298
defvar mx = m.MX;
308
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
309
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
310
-
311
299
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 >;
313
301
}
314
302
}
315
303
316
304
multiclass VPseudoVALU_VI_NoMaskTU_Zvk {
317
305
foreach m = MxListVF4 in {
318
306
defvar mx = m.MX;
319
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
320
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
321
-
322
307
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>;
324
310
}
325
311
}
326
312
327
313
multiclass VPseudoVALU_VV_NoMaskTU_Zvk {
328
314
foreach m = MxListVF4 in {
329
315
defvar mx = m.MX;
330
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
331
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
332
-
333
316
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>;
335
319
}
336
320
}
337
321
338
322
multiclass VPseudoVCLMUL_VV_VX {
339
323
foreach m = MxList in {
340
324
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
-
346
325
defm "" : VPseudoBinaryV_VV<m>,
347
- Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
326
+ SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx,
327
+ forceMergeOpRead=true>;
348
328
defm "" : VPseudoBinaryV_VX<m>,
349
- Sched<[WriteVIALUX_MX, ReadVIALUV_MX, ReadVIALUX_MX, ReadVMask]>;
329
+ SchedBinary<"WriteVIALUX", "ReadVIALUV", "ReadVIALUX", mx,
330
+ forceMergeOpRead=true>;
350
331
}
351
332
}
352
333
@@ -362,11 +343,17 @@ multiclass VPseudoUnaryV_V<LMULInfo m> {
362
343
multiclass VPseudoVALU_V {
363
344
foreach m = MxList in {
364
345
defvar mx = m.MX;
365
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
366
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
367
-
368
346
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>;
370
357
}
371
358
}
372
359
0 commit comments