@@ -256,22 +256,16 @@ multiclass VPseudoBinaryV_S_NoMask_Zvk<LMULInfo m> {
256
256
multiclass VPseudoVALU_V_NoMask_Zvk {
257
257
foreach m = MxListVF4 in {
258
258
defvar mx = m.MX;
259
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
260
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
261
-
262
259
defm "" : VPseudoBinaryV_V_NoMask_Zvk<m>,
263
- Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask] >;
260
+ SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx >;
264
261
}
265
262
}
266
263
267
264
multiclass VPseudoVALU_S_NoMask_Zvk {
268
265
foreach m = MxListVF4 in {
269
266
defvar mx = m.MX;
270
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
271
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
272
-
273
267
defm "" : VPseudoBinaryV_S_NoMask_Zvk<m>,
274
- Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask] >;
268
+ SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx >;
275
269
}
276
270
}
277
271
@@ -281,59 +275,44 @@ multiclass VPseudoVALU_V_S_NoMask_Zvk
281
275
multiclass VPseudoVALU_VV_NoMask_Zvk {
282
276
foreach m = MxListVF4 in {
283
277
defvar mx = m.MX;
284
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
285
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
286
-
287
278
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 >;
289
280
}
290
281
}
291
282
292
283
multiclass VPseudoVALU_VI_NoMask_Zvk {
293
284
foreach m = MxListVF4 in {
294
285
defvar mx = m.MX;
295
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
296
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
297
-
298
286
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 >;
300
288
}
301
289
}
302
290
303
291
multiclass VPseudoVALU_VI_NoMaskTU_Zvk {
304
292
foreach m = MxListVF4 in {
305
293
defvar mx = m.MX;
306
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
307
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
308
-
309
294
defm _VI : VPseudoBinaryNoMask<m.vrclass, m.vrclass, uimm5, m>,
310
- Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask] >;
295
+ SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx >;
311
296
}
312
297
}
313
298
314
299
multiclass VPseudoVALU_VV_NoMaskTU_Zvk {
315
300
foreach m = MxListVF4 in {
316
301
defvar mx = m.MX;
317
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
318
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
319
-
320
302
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 >;
322
304
}
323
305
}
324
306
325
307
multiclass VPseudoVCLMUL_VV_VX {
326
308
foreach m = MxList in {
327
309
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
-
333
310
defm "" : VPseudoBinaryV_VV<m>,
334
- Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
311
+ SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx,
312
+ forceMergeOpRead=true>;
335
313
defm "" : VPseudoBinaryV_VX<m>,
336
- Sched<[WriteVIALUX_MX, ReadVIALUV_MX, ReadVIALUX_MX, ReadVMask]>;
314
+ SchedBinary<"WriteVIALUX", "ReadVIALUV", "ReadVIALUX", mx,
315
+ forceMergeOpRead=true>;
337
316
}
338
317
}
339
318
@@ -349,11 +328,17 @@ multiclass VPseudoUnaryV_V<LMULInfo m> {
349
328
multiclass VPseudoVALU_V {
350
329
foreach m = MxList in {
351
330
defvar mx = m.MX;
352
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
353
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
354
-
355
331
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>;
357
342
}
358
343
}
359
344
0 commit comments