1010//
1111//===----------------------------------------------------------------------===//
1212
13- class RVInstVXI <bits<6> funct6, RISCVVFormat opv, dag outs, dag ins,
13+ class CustomRivosVXI <bits<6> funct6, RISCVVFormat opv, dag outs, dag ins,
1414 string opcodestr, string argstr>
1515 : RVInst<outs, ins, opcodestr, argstr, [], InstFormatR> {
1616 bits<5> imm;
1717 bits<5> rs1;
1818 bits<5> vd;
19- bit vm;
19+ bit vm = 0 ;
2020
2121 let Inst{31-26} = funct6;
2222 let Inst{25} = vm;
2323 let Inst{24-20} = imm;
2424 let Inst{19-15} = rs1;
2525 let Inst{14-12} = opv.Value;
2626 let Inst{11-7} = vd;
27- let Inst{6-0} = OPC_OP_V .Value;
27+ let Inst{6-0} = OPC_CUSTOM_2 .Value;
2828
2929 let Uses = [VTYPE, VL];
30- let RVVConstraint = VMConstraint;
30+ let RVVConstraint = NoConstraint;
31+ let Constraints = "$vd = $vd_wb";
3132}
3233
33- class RVInstXVI <bits<6> funct6, RISCVVFormat opv, dag outs, dag ins,
34+ class CustomRivosXVI <bits<6> funct6, RISCVVFormat opv, dag outs, dag ins,
3435 string opcodestr, string argstr>
3536 : RVInst<outs, ins, opcodestr, argstr, [], InstFormatR> {
3637 bits<5> imm;
3738 bits<5> vs2;
3839 bits<5> rd;
39- bit vm;
40+ bit vm = 1 ;
4041
4142 let Inst{31-26} = funct6;
4243 let Inst{25} = vm;
4344 let Inst{24-20} = vs2;
4445 let Inst{19-15} = imm;
4546 let Inst{14-12} = opv.Value;
4647 let Inst{11-7} = rd;
47- let Inst{6-0} = OPC_OP_V .Value;
48+ let Inst{6-0} = OPC_CUSTOM_2 .Value;
4849
4950 let Uses = [VTYPE, VL];
50- let RVVConstraint = VMConstraint ;
51+ let RVVConstraint = NoConstraint ;
5152}
5253
5354//===----------------------------------------------------------------------===//
@@ -71,21 +72,18 @@ defm RI_VUNZIP2B_V : VALU_IV_V<"ri.vunzip2b", 0b011000>;
7172//===----------------------------------------------------------------------===//
7273
7374let Predicates = [HasVendorXRivosVisni], DecoderNamespace = "XRivos",
74- Inst<6-0> = OPC_CUSTOM_2.Value, mayLoad = false, mayStore = false,
75- hasSideEffects = false in {
75+ mayLoad = false, mayStore = false, hasSideEffects = false in {
7676
77- let isReMaterializable = 1, isAsCheapAsAMove = 1, vm = 0, vs2=0 in
77+ let vm = 0, vs2=0, Inst<6-0> = OPC_CUSTOM_2.Value,
78+ isReMaterializable = 1, isAsCheapAsAMove = 1 in
7879def RI_VZERO : RVInstV<0b000000, 0b00000, OPCFG, (outs VR:$vd),
7980 (ins), "ri.vzero.v", "$vd">;
8081
81- let vm = 0, Constraints = "$vd = $vd_wb", RVVConstraint = NoConstraint in
82- def RI_VINSERT : RVInstVXI<0b010000, OPMVX, (outs VR:$vd_wb),
83- (ins VR:$vd, GPR:$rs1, uimm5:$imm),
84- "ri.vinsert.v.x", "$vd, $rs1, $imm">;
85-
86- let vm = 1, RVVConstraint = NoConstraint in
87- def RI_VEXTRACT : RVInstXVI<0b010111, OPMVV, (outs GPR:$rd),
88- (ins VR:$vs2, uimm5:$imm),
89- "ri.vextract.x.v", "$rd, $vs2, $imm">;
82+ def RI_VINSERT : CustomRivosVXI<0b010000, OPMVX, (outs VR:$vd_wb),
83+ (ins VR:$vd, GPR:$rs1, uimm5:$imm),
84+ "ri.vinsert.v.x", "$vd, $rs1, $imm">;
9085
86+ def RI_VEXTRACT : CustomRivosXVI<0b010111, OPMVV, (outs GPR:$rd),
87+ (ins VR:$vs2, uimm5:$imm),
88+ "ri.vextract.x.v", "$rd, $vs2, $imm">;
9189}
0 commit comments