[llvm] 4c7ced2 - [RISCV] Use inheritance to simplify RVInstSet*VL* classes. NFC (#177797)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jan 25 20:32:11 PST 2026
Author: Craig Topper
Date: 2026-01-25T20:32:06-08:00
New Revision: 4c7ced218ed29c0197569e14b241c4008f853a41
URL: https://github.com/llvm/llvm-project/commit/4c7ced218ed29c0197569e14b241c4008f853a41
DIFF: https://github.com/llvm/llvm-project/commit/4c7ced218ed29c0197569e14b241c4008f853a41.diff
LOG: [RISCV] Use inheritance to simplify RVInstSet*VL* classes. NFC (#177797)
Rename classes to start with RVInstV to make it more clear they are
vector related.
Added:
Modified:
llvm/lib/Target/RISCV/RISCVInstrFormatsV.td
llvm/lib/Target/RISCV/RISCVInstrInfoV.td
llvm/lib/Target/RISCV/RISCVInstrInfoXSfmm.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVInstrFormatsV.td b/llvm/lib/Target/RISCV/RISCVInstrFormatsV.td
index 6ac6c5698ef27..a19cd6450ebce 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrFormatsV.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrFormatsV.td
@@ -54,53 +54,32 @@ def LSWidth16 : RISCVWidth<0b0101>;
def LSWidth32 : RISCVWidth<0b0110>;
def LSWidth64 : RISCVWidth<0b0111>;
-class RVInstSetiVLi<dag outs, dag ins, string opcodestr, string argstr>
- : RVInst<outs, ins, opcodestr, argstr, [], InstFormatI> {
+class RVInstVSetiVLi<dag outs, dag ins, string opcodestr, string argstr>
+ : RVInstIBase<OPCFG.Value, OPC_OP_V, outs, ins, opcodestr, argstr> {
bits<5> uimm;
- bits<5> rd;
bits<10> vtypei;
+ let rs1 = uimm;
+
let Inst{31} = 1;
let Inst{30} = 1;
- let Inst{29-20} = vtypei{9-0};
- let Inst{19-15} = uimm;
- let Inst{14-12} = OPCFG.Value;
- let Inst{11-7} = rd;
- let Inst{6-0} = OPC_OP_V.Value;
+ let Inst{29-20} = vtypei;
let Defs = [VL, VTYPE];
}
-class RVInstSetVLi<dag outs, dag ins, string opcodestr, string argstr>
- : RVInst<outs, ins, opcodestr, argstr, [], InstFormatI> {
- bits<5> rs1;
- bits<5> rd;
+class RVInstVSetVLi<dag outs, dag ins, string opcodestr, string argstr>
+ : RVInstIBase<OPCFG.Value, OPC_OP_V, outs, ins, opcodestr, argstr> {
bits<11> vtypei;
let Inst{31} = 0;
let Inst{30-20} = vtypei;
- let Inst{19-15} = rs1;
- let Inst{14-12} = OPCFG.Value;
- let Inst{11-7} = rd;
- let Inst{6-0} = OPC_OP_V.Value;
let Defs = [VL, VTYPE];
}
-class RVInstSetVL<dag outs, dag ins, string opcodestr, string argstr>
- : RVInst<outs, ins, opcodestr, argstr, [], InstFormatR> {
- bits<5> rs2;
- bits<5> rs1;
- bits<5> rd;
-
- let Inst{31} = 1;
- let Inst{30-25} = 0b000000;
- let Inst{24-20} = rs2;
- let Inst{19-15} = rs1;
- let Inst{14-12} = OPCFG.Value;
- let Inst{11-7} = rd;
- let Inst{6-0} = OPC_OP_V.Value;
-
+class RVInstVSetVL<dag outs, dag ins, string opcodestr, string argstr>
+ : RVInstR<0b1000000, OPCFG.Value, OPC_OP_V, outs, ins, opcodestr, argstr> {
let Defs = [VL, VTYPE];
}
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoV.td b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
index cace8b14af720..de46bcdd51c4f 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
@@ -1079,16 +1079,16 @@ multiclass VWholeLoadN<int l, bits<3> nf, string opcodestr, RegisterClass VRC> {
let Predicates = [HasVInstructions] in {
let hasSideEffects = 1, mayLoad = 0, mayStore = 0 in {
-def VSETVLI : RVInstSetVLi<(outs GPR:$rd), (ins GPR:$rs1, VTypeIOp11:$vtypei),
- "vsetvli", "$rd, $rs1, $vtypei">,
- Sched<[WriteVSETVLI, ReadVSETVLI]>;
-def VSETIVLI : RVInstSetiVLi<(outs GPR:$rd), (ins uimm5:$uimm, VTypeIOp10:$vtypei),
- "vsetivli", "$rd, $uimm, $vtypei">,
- Sched<[WriteVSETIVLI]>;
-
-def VSETVL : RVInstSetVL<(outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2),
- "vsetvl", "$rd, $rs1, $rs2">,
- Sched<[WriteVSETVL, ReadVSETVL, ReadVSETVL]>;
+def VSETVLI : RVInstVSetVLi<(outs GPR:$rd), (ins GPR:$rs1, VTypeIOp11:$vtypei),
+ "vsetvli", "$rd, $rs1, $vtypei">,
+ Sched<[WriteVSETVLI, ReadVSETVLI]>;
+def VSETIVLI : RVInstVSetiVLi<(outs GPR:$rd), (ins uimm5:$uimm, VTypeIOp10:$vtypei),
+ "vsetivli", "$rd, $uimm, $vtypei">,
+ Sched<[WriteVSETIVLI]>;
+
+def VSETVL : RVInstVSetVL<(outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2),
+ "vsetvl", "$rd, $rs1, $rs2">,
+ Sched<[WriteVSETVL, ReadVSETVL, ReadVSETVL]>;
} // hasSideEffects = 1, mayLoad = 0, mayStore = 0
} // Predicates = [HasVInstructions]
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoXSfmm.td b/llvm/lib/Target/RISCV/RISCVInstrInfoXSfmm.td
index fc973f5d657a6..952428e5c76e2 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoXSfmm.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoXSfmm.td
@@ -37,16 +37,10 @@ def twiden : RISCVOp {
let hasSideEffects = 1, mayLoad = 0, mayStore = 0 in
class SFInstSetSingle<dag outs, dag ins, bits<5> rs2, string opcodestr,
string argstr>
- : RVInst<outs, ins, opcodestr, argstr, [], InstFormatI> {
- bits<5> rs1;
- bits<5> rd;
+ : RVInstIBase<OPCFG.Value, OPC_OP_V, outs, ins, opcodestr, argstr> {
let Inst{31-25} = 0b1000010;
let Inst{24-20} = rs2;
- let Inst{19-15} = rs1;
- let Inst{14-12} = OPCFG.Value;
- let Inst{11-7} = rd;
- let Inst{6-0} = OPC_OP_V.Value;
let Defs = [VL, VTYPE];
}
More information about the llvm-commits
mailing list