[llvm] [RISCV] Fix and refactor Zvk sched classes (PR #86519)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 29 09:09:39 PDT 2024
================
@@ -281,59 +275,44 @@ multiclass VPseudoVALU_V_S_NoMask_Zvk
multiclass VPseudoVALU_VV_NoMask_Zvk {
foreach m = MxListVF4 in {
defvar mx = m.MX;
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
-
defm _VV : VPseudoTernaryNoMask_Zvk<m.vrclass, m.vrclass, m.vrclass, m>,
- Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
+ SchedTernary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
}
}
multiclass VPseudoVALU_VI_NoMask_Zvk {
foreach m = MxListVF4 in {
defvar mx = m.MX;
- defvar WriteVIALUV_MX = !cast<SchedWrite>("WriteVIALUV_" # mx);
- defvar ReadVIALUV_MX = !cast<SchedRead>("ReadVIALUV_" # mx);
-
defm _VI : VPseudoTernaryNoMask_Zvk<m.vrclass, m.vrclass, uimm5, m>,
- Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>;
+ SchedTernary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", "ReadVIALUV", mx>;
}
}
multiclass VPseudoVALU_VI_NoMaskTU_Zvk {
----------------
topperc wrote:
There is a merge op already. The naming is just bad. It's instantiating this multiclass
```
multiclass VPseudoBinaryNoMask<VReg RetClass,
VReg Op1Class,
DAGOperand Op2Class,
LMULInfo MInfo,
string Constraint = "",
int sew = 0> {
let VLMul = MInfo.value, SEW=sew in {
defvar suffix = !if(sew, "_" # MInfo.MX # "_E" # sew, "_" # MInfo.MX);
def suffix : VPseudoBinaryNoMaskTU<RetClass, Op1Class, Op2Class,
Constraint>;
}
}
-
```
Not to be confused with the `class` that has the same name. The `VPseudoBinaryNoMaskTU` has a merge op.
https://github.com/llvm/llvm-project/pull/86519
More information about the llvm-commits
mailing list