Skip to content

Commit 9a762bb

Browse files
authored
[RISCV] Reuse existing tablegen classes for Zilsd/Zclsd. NFC (#134946)
We don't need pair specific classes. We just need to pass the pair RegisterOperand to the existing classes we use for the base ISA and Zca. For Zclsd, we need to changes the classes to take DAGOperand instead of RegisterClass so we can pass a RegisterOperand.
1 parent ccf2284 commit 9a762bb

File tree

3 files changed

+11
-47
lines changed

3 files changed

+11
-47
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoC.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,25 +234,25 @@ def uimm2_opcode : RISCVUImmOp<2> {
234234

235235
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in
236236
class CStackLoad<bits<3> funct3, string OpcodeStr,
237-
RegisterClass cls, DAGOperand opnd>
237+
DAGOperand cls, DAGOperand opnd>
238238
: RVInst16CI<funct3, 0b10, (outs cls:$rd), (ins SPMem:$rs1, opnd:$imm),
239239
OpcodeStr, "$rd, ${imm}(${rs1})">;
240240

241241
let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in
242242
class CStackStore<bits<3> funct3, string OpcodeStr,
243-
RegisterClass cls, DAGOperand opnd>
243+
DAGOperand cls, DAGOperand opnd>
244244
: RVInst16CSS<funct3, 0b10, (outs), (ins cls:$rs2, SPMem:$rs1, opnd:$imm),
245245
OpcodeStr, "$rs2, ${imm}(${rs1})">;
246246

247247
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in
248248
class CLoad_ri<bits<3> funct3, string OpcodeStr,
249-
RegisterClass cls, DAGOperand opnd>
249+
DAGOperand cls, DAGOperand opnd>
250250
: RVInst16CL<funct3, 0b00, (outs cls:$rd), (ins GPRCMem:$rs1, opnd:$imm),
251251
OpcodeStr, "$rd, ${imm}(${rs1})">;
252252

253253
let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in
254254
class CStore_rri<bits<3> funct3, string OpcodeStr,
255-
RegisterClass cls, DAGOperand opnd>
255+
DAGOperand cls, DAGOperand opnd>
256256
: RVInst16CS<funct3, 0b00, (outs), (ins cls:$rs2,GPRCMem:$rs1, opnd:$imm),
257257
OpcodeStr, "$rs2, ${imm}(${rs1})">;
258258

llvm/lib/Target/RISCV/RISCVInstrInfoZclsd.td

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -37,53 +37,29 @@ def GPRPairCRV32 : RegisterOperand<GPRPairC> {
3737
let ParserMatchClass = GPRPairCRV32Operand;
3838
}
3939

40-
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in
41-
class PairCStackLoad<bits<3> funct3, string OpcodeStr,
42-
DAGOperand RC, DAGOperand opnd>
43-
: RVInst16CI<funct3, 0b10, (outs RC:$rd), (ins SPMem:$rs1, opnd:$imm),
44-
OpcodeStr, "$rd, ${imm}(${rs1})">;
45-
46-
let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in
47-
class PairCStackStore<bits<3> funct3, string OpcodeStr,
48-
DAGOperand RC, DAGOperand opnd>
49-
: RVInst16CSS<funct3, 0b10, (outs), (ins RC:$rs2, SPMem:$rs1, opnd:$imm),
50-
OpcodeStr, "$rs2, ${imm}(${rs1})">;
51-
52-
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in
53-
class PairCLoad_ri<bits<3> funct3, string OpcodeStr,
54-
DAGOperand RC, DAGOperand opnd>
55-
: RVInst16CL<funct3, 0b00, (outs RC:$rd), (ins GPRCMem:$rs1, opnd:$imm),
56-
OpcodeStr, "$rd, ${imm}(${rs1})">;
57-
58-
let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in
59-
class PairCStore_rri<bits<3> funct3, string OpcodeStr,
60-
DAGOperand RC, DAGOperand opnd>
61-
: RVInst16CS<funct3, 0b00, (outs), (ins RC:$rs2,GPRCMem:$rs1, opnd:$imm),
62-
OpcodeStr, "$rs2, ${imm}(${rs1})">;
63-
6440
//===----------------------------------------------------------------------===//
6541
// Instructions
6642
//===----------------------------------------------------------------------===//
6743

6844
let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in {
69-
def C_LDSP_RV32 : PairCStackLoad<0b011, "c.ldsp", GPRPairNoX0RV32, uimm9_lsb000>,
45+
def C_LDSP_RV32 : CStackLoad<0b011, "c.ldsp", GPRPairNoX0RV32, uimm9_lsb000>,
7046
Sched<[WriteLDD, ReadMemBase]> {
7147
let Inst{4-2} = imm{8-6};
7248
}
7349

74-
def C_SDSP_RV32 : PairCStackStore<0b111, "c.sdsp", GPRPairRV32, uimm9_lsb000>,
50+
def C_SDSP_RV32 : CStackStore<0b111, "c.sdsp", GPRPairRV32, uimm9_lsb000>,
7551
Sched<[WriteSTD, ReadStoreData, ReadMemBase]> {
7652
let Inst{9-7} = imm{8-6};
7753
}
7854

79-
def C_LD_RV32 : PairCLoad_ri<0b011, "c.ld", GPRPairCRV32, uimm8_lsb000>,
55+
def C_LD_RV32 : CLoad_ri<0b011, "c.ld", GPRPairCRV32, uimm8_lsb000>,
8056
Sched<[WriteLDD, ReadMemBase]> {
8157
bits<8> imm;
8258
let Inst{12-10} = imm{5-3};
8359
let Inst{6-5} = imm{7-6};
8460
}
8561

86-
def C_SD_RV32 : PairCStore_rri<0b111, "c.sd", GPRPairCRV32, uimm8_lsb000>,
62+
def C_SD_RV32 : CStore_rri<0b111, "c.sd", GPRPairCRV32, uimm8_lsb000>,
8763
Sched<[WriteSTD, ReadStoreData, ReadMemBase]> {
8864
bits<8> imm;
8965
let Inst{12-10} = imm{5-3};

llvm/lib/Target/RISCV/RISCVInstrInfoZilsd.td

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,14 @@
1515
// Instruction Class Templates
1616
//===----------------------------------------------------------------------===//
1717

18-
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in
19-
class PairLoad_ri<string opcodestr, DAGOperand RC>
20-
: RVInstI<0b011, OPC_LOAD, (outs RC:$rd),
21-
(ins GPRMem:$rs1, simm12:$imm12),
22-
opcodestr, "${rd}, ${imm12}(${rs1})">;
23-
24-
let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in
25-
class PairStore_rri<string opcodestr, DAGOperand RC>
26-
: RVInstS<0b011, OPC_STORE, (outs),
27-
(ins RC:$rs2, GPRMem:$rs1, simm12:$imm12),
28-
opcodestr, "${rs2}, ${imm12}(${rs1})">;
29-
3018
//===----------------------------------------------------------------------===//
3119
// Instructions
3220
//===----------------------------------------------------------------------===//
3321

3422
let Predicates = [HasStdExtZilsd, IsRV32], DecoderNamespace = "RV32Only" in {
35-
def LD_RV32 : PairLoad_ri<"ld", GPRPairRV32>, Sched<[WriteLDD, ReadMemBase]>;
36-
def SD_RV32 : PairStore_rri<"sd", GPRPairRV32>, Sched<[WriteSTD, ReadStoreData,
37-
ReadMemBase]>;
23+
def LD_RV32 : Load_ri<0b011, "ld", GPRPairRV32>, Sched<[WriteLDD, ReadMemBase]>;
24+
def SD_RV32 : Store_rri<0b011, "sd", GPRPairRV32>,
25+
Sched<[WriteSTD, ReadStoreData, ReadMemBase]>;
3826
} // Predicates = [HasStdExtZilsd, IsRV32], DecoderNamespace = "RV32Only"
3927

4028
//===----------------------------------------------------------------------===//

0 commit comments

Comments
 (0)