@@ -24,11 +24,9 @@ def tuimm5 : RISCVOp, TImmLeaf<XLenVT, [{return isUInt<5>(Imm);}]>;
24
24
let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
25
25
multiclass VCLMUL_MV_V_X<string opcodestr, bits<6> funct6> {
26
26
def V : VALUVV<funct6, OPMVV, opcodestr # "." # "vv">,
27
- Sched<[WriteVIALUV_WorstCase, ReadVIALUV_WorstCase,
28
- ReadVIALUV_WorstCase, ReadVMask]>;
27
+ SchedBinaryMC<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV">;
29
28
def X : VALUVX<funct6, OPMVX, opcodestr # "." # "vx">,
30
- Sched<[WriteVIALUX_WorstCase, ReadVIALUV_WorstCase,
31
- ReadVIALUX_WorstCase, ReadVMask]>;
29
+ SchedBinaryMC<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV">;
32
30
}
33
31
34
32
class RVInstIVI_VROR<bits<6> funct6, dag outs, dag ins, string opcodestr,
@@ -57,29 +55,31 @@ multiclass VROR_IV_V_X_I<string opcodestr, bits<6> funct6>
57
55
def I : RVInstIVI_VROR<funct6, (outs VR:$vd),
58
56
(ins VR:$vs2, uimm6:$imm, VMaskOp:$vm),
59
57
opcodestr # ".vi", "$vd, $vs2, $imm$vm">,
60
- Sched<[WriteVIALUI_WorstCase, ReadVIALUV_WorstCase,
61
- ReadVMask]>;
58
+ SchedUnaryMC<"WriteVIALUI", "ReadVIALUV">;
62
59
}
63
60
64
61
// op vd, vs2, vs1
65
62
class PALUVVNoVm<bits<6> funct6, RISCVVFormat opv, string opcodestr>
66
- : VALUVVNoVm<funct6, opv, opcodestr> {
63
+ : VALUVVNoVm<funct6, opv, opcodestr>,
64
+ SchedUnaryMC<"WriteVIALUI", "ReadVIALUV"> {
67
65
let Inst{6-0} = OPC_OP_VE.Value;
68
66
}
69
67
70
68
// op vd, vs2, vs1
71
69
class PALUVVNoVmTernary<bits<6> funct6, RISCVVFormat opv, string opcodestr>
72
70
: RVInstVV<funct6, opv, (outs VR:$vd_wb),
73
71
(ins VR:$vd, VR:$vs2, VR:$vs1),
74
- opcodestr, "$vd, $vs2, $vs1"> {
72
+ opcodestr, "$vd, $vs2, $vs1">,
73
+ SchedBinaryMC<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV"> {
75
74
let Constraints = "$vd = $vd_wb";
76
75
let vm = 1;
77
76
let Inst{6-0} = OPC_OP_VE.Value;
78
77
}
79
78
80
79
// op vd, vs2, imm
81
80
class PALUVINoVm<bits<6> funct6, string opcodestr, Operand optype>
82
- : VALUVINoVm<funct6, opcodestr, optype> {
81
+ : VALUVINoVm<funct6, opcodestr, optype>,
82
+ SchedUnaryMC<"WriteVIALUV", "ReadVIALUV"> {
83
83
let Inst{6-0} = OPC_OP_VE.Value;
84
84
let Inst{14-12} = OPMVV.Value;
85
85
}
@@ -88,7 +88,8 @@ class PALUVINoVm<bits<6> funct6, string opcodestr, Operand optype>
88
88
class PALUVINoVmBinary<bits<6> funct6, string opcodestr, Operand optype>
89
89
: RVInstIVI<funct6, (outs VR:$vd_wb),
90
90
(ins VR:$vd, VR:$vs2, optype:$imm),
91
- opcodestr, "$vd, $vs2, $imm"> {
91
+ opcodestr, "$vd, $vs2, $imm">,
92
+ SchedBinaryMC<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV"> {
92
93
let Constraints = "$vd = $vd_wb";
93
94
let vm = 1;
94
95
let Inst{6-0} = OPC_OP_VE.Value;
@@ -100,7 +101,8 @@ class PALUVINoVmBinary<bits<6> funct6, string opcodestr, Operand optype>
100
101
class PALUVs2NoVmBinary<bits<6> funct6, bits<5> vs1, RISCVVFormat opv,
101
102
string opcodestr>
102
103
: RVInstV<funct6, vs1, opv, (outs VR:$vd_wb), (ins VR:$vd, VR:$vs2),
103
- opcodestr, "$vd, $vs2"> {
104
+ opcodestr, "$vd, $vs2">,
105
+ SchedBinaryMC<"WriteVIALUV", "ReadVIALUV", "ReadVIALUV"> {
104
106
let Constraints = "$vd = $vd_wb";
105
107
let vm = 1;
106
108
let Inst{6-0} = OPC_OP_VE.Value;
0 commit comments