diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td index 8cdaa7f2e5ea4..9424c461b34f7 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td @@ -2985,12 +2985,6 @@ multiclass VPseudoVWALU_VV_VX { } } -multiclass VPseudoVWALU_VV_VX_VI : VPseudoVWALU_VV_VX { - foreach m = MxListW in { - defm "" : VPseudoBinaryW_VI; - } -} - multiclass VPseudoVWMUL_VV_VX { foreach m = MxListW in { defvar mx = m.MX; diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td index e66b061c760ac..51a7a0a15d97d 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td @@ -269,22 +269,16 @@ multiclass VPseudoBinaryV_S_NoMask_Zvk { multiclass VPseudoVALU_V_NoMask_Zvk { foreach m = MxListVF4 in { defvar mx = m.MX; - defvar WriteVIALUV_MX = !cast("WriteVIALUV_" # mx); - defvar ReadVIALUV_MX = !cast("ReadVIALUV_" # mx); - defm "" : VPseudoBinaryV_V_NoMask_Zvk, - Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>; + SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx>; } } multiclass VPseudoVALU_S_NoMask_Zvk { foreach m = MxListVF4 in { defvar mx = m.MX; - defvar WriteVIALUV_MX = !cast("WriteVIALUV_" # mx); - defvar ReadVIALUV_MX = !cast("ReadVIALUV_" # mx); - defm "" : VPseudoBinaryV_S_NoMask_Zvk, - Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>; + SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx>; } } @@ -294,59 +288,46 @@ multiclass VPseudoVALU_V_S_NoMask_Zvk multiclass VPseudoVALU_VV_NoMask_Zvk { foreach m = MxListVF4 in { defvar mx = m.MX; - defvar WriteVIALUV_MX = !cast("WriteVIALUV_" # mx); - defvar ReadVIALUV_MX = !cast("ReadVIALUV_" # mx); - defm _VV : VPseudoTernaryNoMask_Zvk, - 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("WriteVIALUV_" # mx); - defvar ReadVIALUV_MX = !cast("ReadVIALUV_" # mx); - defm _VI : VPseudoTernaryNoMask_Zvk, - Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>; + SchedTernary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", "ReadVIALUV", mx>; } } multiclass VPseudoVALU_VI_NoMaskTU_Zvk { foreach m = MxListVF4 in { defvar mx = m.MX; - defvar WriteVIALUV_MX = !cast("WriteVIALUV_" # mx); - defvar ReadVIALUV_MX = !cast("ReadVIALUV_" # mx); - defm _VI : VPseudoBinaryNoMaskTU_Zvk, - Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>; + SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx, + forceMergeOpRead=true>; } } multiclass VPseudoVALU_VV_NoMaskTU_Zvk { foreach m = MxListVF4 in { defvar mx = m.MX; - defvar WriteVIALUV_MX = !cast("WriteVIALUV_" # mx); - defvar ReadVIALUV_MX = !cast("ReadVIALUV_" # mx); - defm _VV : VPseudoBinaryNoMaskTU_Zvk, - Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>; + SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx, + forceMergeOpRead=true>; } } multiclass VPseudoVCLMUL_VV_VX { foreach m = MxList in { defvar mx = m.MX; - defvar WriteVIALUV_MX = !cast("WriteVIALUV_" # mx); - defvar WriteVIALUX_MX = !cast("WriteVIALUV_" # mx); - defvar ReadVIALUV_MX = !cast("ReadVIALUV_" # mx); - defvar ReadVIALUX_MX = !cast("ReadVIALUX_" # mx); - defm "" : VPseudoBinaryV_VV, - Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>; + SchedBinary<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV", mx, + forceMergeOpRead=true>; defm "" : VPseudoBinaryV_VX, - Sched<[WriteVIALUX_MX, ReadVIALUV_MX, ReadVIALUX_MX, ReadVMask]>; + SchedBinary<"WriteVIALUX", "ReadVIALUV", "ReadVIALUX", mx, + forceMergeOpRead=true>; } } @@ -362,11 +343,17 @@ multiclass VPseudoUnaryV_V { multiclass VPseudoVALU_V { foreach m = MxList in { defvar mx = m.MX; - defvar WriteVIALUV_MX = !cast("WriteVIALUV_" # mx); - defvar ReadVIALUV_MX = !cast("ReadVIALUV_" # mx); - defm "" : VPseudoUnaryV_V, - Sched<[WriteVIALUV_MX, ReadVIALUV_MX, ReadVIALUV_MX, ReadVMask]>; + SchedUnary<"WriteVIALUV", "ReadVIALUV", mx, + forceMergeOpRead=true>; + } +} + +multiclass VPseudoVWALU_VV_VX_VI : VPseudoVWALU_VV_VX { + foreach m = MxListW in { + defm "" : VPseudoBinaryW_VI, + SchedUnary<"WriteVIWALUV", "ReadVIWALUV", m.MX, + forceMergeOpRead=true>; } }