diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoV.td b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td --- a/llvm/lib/Target/RISCV/RISCVInstrInfoV.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td @@ -1615,12 +1615,11 @@ let vm = 1, RVVConstraint = NoConstraint in { def VMV_X_S : RVInstV<0b010000, 0b00000, OPMVV, (outs GPR:$vd), (ins VR:$vs2), "vmv.x.s", "$vd, $vs2">, - Sched<[WriteVIMovVX_WorstCase, ReadVIMovVX_WorstCase]>; + Sched<[WriteVIMovVX, ReadVIMovVX]>; let Constraints = "$vd = $vd_wb" in def VMV_S_X : RVInstV2<0b010000, 0b00000, OPMVX, (outs VR:$vd_wb), (ins VR:$vd, GPR:$rs1), "vmv.s.x", "$vd, $rs1">, - Sched<[WriteVIMovXV_WorstCase, ReadVIMovXV_WorstCase, - ReadVIMovXX_WorstCase]>; + Sched<[WriteVIMovXV, ReadVIMovXV, ReadVIMovXX]>; } } // hasSideEffects = 0, mayLoad = 0, mayStore = 0 @@ -1634,12 +1633,11 @@ // Floating-Point Scalar Move Instructions def VFMV_F_S : RVInstV<0b010000, 0b00000, OPFVV, (outs FPR32:$vd), (ins VR:$vs2), "vfmv.f.s", "$vd, $vs2">, - Sched<[WriteVFMovVF_WorstCase, ReadVFMovVF_WorstCase]>; + Sched<[WriteVFMovVF, ReadVFMovVF]>; let Constraints = "$vd = $vd_wb" in def VFMV_S_F : RVInstV2<0b010000, 0b00000, OPFVF, (outs VR:$vd_wb), (ins VR:$vd, FPR32:$rs1), "vfmv.s.f", "$vd, $rs1">, - Sched<[WriteVFMovFV_WorstCase, ReadVFMovFV_WorstCase, - ReadVFMovFX_WorstCase]>; + Sched<[WriteVFMovFV, ReadVFMovFV, ReadVFMovFX]>; } // hasSideEffects = 0, mayLoad = 0, mayStore = 0, vm = 1 diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td --- a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td @@ -6104,16 +6104,11 @@ let mayLoad = 0, mayStore = 0, hasSideEffects = 0 in { foreach m = MxList in { defvar mx = m.MX; - defvar WriteVIMovVX_MX = !cast("WriteVIMovVX_" # mx); - defvar WriteVIMovXV_MX = !cast("WriteVIMovXV_" # mx); - defvar ReadVIMovVX_MX = !cast("ReadVIMovVX_" # mx); - defvar ReadVIMovXV_MX = !cast("ReadVIMovXV_" # mx); - defvar ReadVIMovXX_MX = !cast("ReadVIMovXX_" # mx); let VLMul = m.value in { let HasSEWOp = 1, BaseInstr = VMV_X_S in def PseudoVMV_X_S # "_" # mx: Pseudo<(outs GPR:$rd), (ins m.vrclass:$rs2, ixlenimm:$sew), []>, - Sched<[WriteVIMovVX_MX, ReadVIMovVX_MX]>, + Sched<[WriteVIMovVX, ReadVIMovVX]>, RISCVVPseudo; let HasVLOp = 1, HasSEWOp = 1, BaseInstr = VMV_S_X, Constraints = "$rd = $rs1" in @@ -6121,7 +6116,7 @@ (ins m.vrclass:$rs1, GPR:$rs2, AVL:$vl, ixlenimm:$sew), []>, - Sched<[WriteVIMovXV_MX, ReadVIMovXV_MX, ReadVIMovXX_MX]>, + Sched<[WriteVIMovXV, ReadVIMovXV, ReadVIMovXX]>, RISCVVPseudo; } } @@ -6137,17 +6132,12 @@ foreach f = FPList in { foreach m = f.MxList in { defvar mx = m.MX; - defvar WriteVFMovVF_MX = !cast("WriteVFMovVF_" # mx); - defvar WriteVFMovFV_MX = !cast("WriteVFMovFV_" # mx); - defvar ReadVFMovVF_MX = !cast("ReadVFMovVF_" # mx); - defvar ReadVFMovFV_MX = !cast("ReadVFMovFV_" # mx); - defvar ReadVFMovFX_MX = !cast("ReadVFMovFX_" # mx); let VLMul = m.value in { let HasSEWOp = 1, BaseInstr = VFMV_F_S in def "PseudoVFMV_" # f.FX # "_S_" # mx : Pseudo<(outs f.fprclass:$rd), (ins m.vrclass:$rs2, ixlenimm:$sew), []>, - Sched<[WriteVFMovVF_MX, ReadVFMovVF_MX]>, + Sched<[WriteVFMovVF, ReadVFMovVF]>, RISCVVPseudo; let HasVLOp = 1, HasSEWOp = 1, BaseInstr = VFMV_S_F, Constraints = "$rd = $rs1" in @@ -6156,7 +6146,7 @@ (ins m.vrclass:$rs1, f.fprclass:$rs2, AVL:$vl, ixlenimm:$sew), []>, - Sched<[WriteVFMovFV_MX, ReadVFMovFV_MX, ReadVFMovFX_MX]>, + Sched<[WriteVFMovFV, ReadVFMovFV, ReadVFMovFX]>, RISCVVPseudo; } } diff --git a/llvm/lib/Target/RISCV/RISCVScheduleV.td b/llvm/lib/Target/RISCV/RISCVScheduleV.td --- a/llvm/lib/Target/RISCV/RISCVScheduleV.td +++ b/llvm/lib/Target/RISCV/RISCVScheduleV.td @@ -391,11 +391,11 @@ // 16. Vector Permutation Instructions // 16.1. Integer Scalar Move Instructions -defm "" : LMULSchedWrites<"WriteVIMovVX">; -defm "" : LMULSchedWrites<"WriteVIMovXV">; +def WriteVIMovVX : SchedWrite; +def WriteVIMovXV : SchedWrite; // 16.2. Floating-Point Scalar Move Instructions -defm "" : LMULSchedWrites<"WriteVFMovVF">; -defm "" : LMULSchedWrites<"WriteVFMovFV">; +def WriteVFMovVF : SchedWrite; +def WriteVFMovFV : SchedWrite; // 16.3. Vector Slide Instructions defm "" : LMULSchedWrites<"WriteVISlideX">; defm "" : LMULSchedWrites<"WriteVISlideI">; @@ -611,13 +611,13 @@ // 16. Vector Permutation Instructions // 16.1. Integer Scalar Move Instructions -defm "" : LMULSchedReads<"ReadVIMovVX">; -defm "" : LMULSchedReads<"ReadVIMovXV">; -defm "" : LMULSchedReads<"ReadVIMovXX">; +def ReadVIMovVX : SchedRead; +def ReadVIMovXV : SchedRead; +def ReadVIMovXX : SchedRead; // 16.2. Floating-Point Scalar Move Instructions -defm "" : LMULSchedReads<"ReadVFMovVF">; -defm "" : LMULSchedReads<"ReadVFMovFV">; -defm "" : LMULSchedReads<"ReadVFMovFX">; +def ReadVFMovVF : SchedRead; +def ReadVFMovFV : SchedRead; +def ReadVFMovFX : SchedRead; // 16.3. Vector Slide Instructions defm "" : LMULSchedReads<"ReadVISlideV">; defm "" : LMULSchedReads<"ReadVISlideX">; @@ -811,10 +811,10 @@ defm "" : LMULWriteRes<"WriteVMIdxV", []>; // 16. Vector Permutation Instructions -defm "" : LMULWriteRes<"WriteVIMovVX", []>; -defm "" : LMULWriteRes<"WriteVIMovXV", []>; -defm "" : LMULWriteRes<"WriteVFMovVF", []>; -defm "" : LMULWriteRes<"WriteVFMovFV", []>; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; defm "" : LMULWriteRes<"WriteVISlideX", []>; defm "" : LMULWriteRes<"WriteVISlideI", []>; defm "" : LMULWriteRes<"WriteVISlide1X", []>; @@ -967,12 +967,12 @@ defm "" : LMULReadAdvance<"ReadVMIotV", 0>; // 16. Vector Permutation Instructions -defm "" : LMULReadAdvance<"ReadVIMovVX", 0>; -defm "" : LMULReadAdvance<"ReadVIMovXV", 0>; -defm "" : LMULReadAdvance<"ReadVIMovXX", 0>; -defm "" : LMULReadAdvance<"ReadVFMovVF", 0>; -defm "" : LMULReadAdvance<"ReadVFMovFV", 0>; -defm "" : LMULReadAdvance<"ReadVFMovFX", 0>; +def : ReadAdvance; +def : ReadAdvance; +def : ReadAdvance; +def : ReadAdvance; +def : ReadAdvance; +def : ReadAdvance; defm "" : LMULReadAdvance<"ReadVISlideV", 0>; defm "" : LMULReadAdvance<"ReadVISlideX", 0>; defm "" : LMULReadAdvance<"ReadVFSlideV", 0>;