Skip to content

Commit 62d109e

Browse files
committed
Specialize instruction classes
1 parent ffbba48 commit 62d109e

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoXRivos.td

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,44 +10,45 @@
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

7374
let 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
7879
def 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

Comments
 (0)