Skip to content

Commit 18d9dcd

Browse files
authored
[RISCV] Unify RVBShift_ri and RVBShiftW_ri with Shift_ri and ShiftW_ri. NFC (#111263)
The split primarily existed because Shift_ri and ShiftW_ri included scheduler classes. So pull those out like ALU_rr. This removes all uses of RVBShiftW_ri. One use of RVBShift_ri remains because SLLI_UW uses a uimmlog2xlen shift amount and OP_IMM_32. Which is different than the other OP_IMM_32 shift instructions.
1 parent e075dcf commit 18d9dcd

File tree

2 files changed

+20
-23
lines changed

2 files changed

+20
-23
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfo.td

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -558,8 +558,7 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
558558
class Shift_ri<bits<5> imm11_7, bits<3> funct3, string opcodestr>
559559
: RVInstIShift<imm11_7, funct3, OPC_OP_IMM, (outs GPR:$rd),
560560
(ins GPR:$rs1, uimmlog2xlen:$shamt), opcodestr,
561-
"$rd, $rs1, $shamt">,
562-
Sched<[WriteShiftImm, ReadShiftImm]>;
561+
"$rd, $rs1, $shamt">;
563562

564563
let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
565564
class ALU_rr<bits<7> funct7, bits<3> funct3, string opcodestr,
@@ -586,8 +585,7 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
586585
class ShiftW_ri<bits<7> imm11_5, bits<3> funct3, string opcodestr>
587586
: RVInstIShiftW<imm11_5, funct3, OPC_OP_IMM_32, (outs GPR:$rd),
588587
(ins GPR:$rs1, uimm5:$shamt), opcodestr,
589-
"$rd, $rs1, $shamt">,
590-
Sched<[WriteShiftImm32, ReadShiftImm32]>;
588+
"$rd, $rs1, $shamt">;
591589

592590
let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
593591
class ALUW_rr<bits<7> funct7, bits<3> funct3, string opcodestr,
@@ -666,9 +664,12 @@ def ORI : ALU_ri<0b110, "ori">;
666664

667665
def ANDI : ALU_ri<0b111, "andi">;
668666

669-
def SLLI : Shift_ri<0b00000, 0b001, "slli">;
670-
def SRLI : Shift_ri<0b00000, 0b101, "srli">;
671-
def SRAI : Shift_ri<0b01000, 0b101, "srai">;
667+
def SLLI : Shift_ri<0b00000, 0b001, "slli">,
668+
Sched<[WriteShiftImm, ReadShiftImm]>;
669+
def SRLI : Shift_ri<0b00000, 0b101, "srli">,
670+
Sched<[WriteShiftImm, ReadShiftImm]>;
671+
def SRAI : Shift_ri<0b01000, 0b101, "srai">,
672+
Sched<[WriteShiftImm, ReadShiftImm]>;
672673

673674
def ADD : ALU_rr<0b0000000, 0b000, "add", Commutable=1>,
674675
Sched<[WriteIALU, ReadIALU, ReadIALU]>;
@@ -764,9 +765,12 @@ def ADDIW : RVInstI<0b000, OPC_OP_IMM_32, (outs GPR:$rd),
764765
"addiw", "$rd, $rs1, $imm12">,
765766
Sched<[WriteIALU32, ReadIALU32]>;
766767

767-
def SLLIW : ShiftW_ri<0b0000000, 0b001, "slliw">;
768-
def SRLIW : ShiftW_ri<0b0000000, 0b101, "srliw">;
769-
def SRAIW : ShiftW_ri<0b0100000, 0b101, "sraiw">;
768+
def SLLIW : ShiftW_ri<0b0000000, 0b001, "slliw">,
769+
Sched<[WriteShiftImm32, ReadShiftImm32]>;
770+
def SRLIW : ShiftW_ri<0b0000000, 0b101, "srliw">,
771+
Sched<[WriteShiftImm32, ReadShiftImm32]>;
772+
def SRAIW : ShiftW_ri<0b0100000, 0b101, "sraiw">,
773+
Sched<[WriteShiftImm32, ReadShiftImm32]>;
770774

771775
def ADDW : ALUW_rr<0b0000000, 0b000, "addw", Commutable=1>,
772776
Sched<[WriteIALU32, ReadIALU32, ReadIALU32]>;

llvm/lib/Target/RISCV/RISCVInstrInfoZb.td

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -245,13 +245,6 @@ class RVBShift_ri<bits<5> imm11_7, bits<3> funct3, RISCVOpcode opcode,
245245
(ins GPR:$rs1, uimmlog2xlen:$shamt), opcodestr,
246246
"$rd, $rs1, $shamt">;
247247

248-
let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
249-
class RVBShiftW_ri<bits<7> imm11_5, bits<3> funct3, RISCVOpcode opcode,
250-
string opcodestr>
251-
: RVInstIShiftW<imm11_5, funct3, opcode, (outs GPR:$rd),
252-
(ins GPR:$rs1, uimm5:$shamt), opcodestr,
253-
"$rd, $rs1, $shamt">;
254-
255248
//===----------------------------------------------------------------------===//
256249
// Instructions
257250
//===----------------------------------------------------------------------===//
@@ -293,7 +286,7 @@ def ROL : ALU_rr<0b0110000, 0b001, "rol">,
293286
def ROR : ALU_rr<0b0110000, 0b101, "ror">,
294287
Sched<[WriteRotateReg, ReadRotateReg, ReadRotateReg]>;
295288

296-
def RORI : RVBShift_ri<0b01100, 0b101, OPC_OP_IMM, "rori">,
289+
def RORI : Shift_ri<0b01100, 0b101, "rori">,
297290
Sched<[WriteRotateImm, ReadRotateImm]>;
298291
} // Predicates = [HasStdExtZbbOrZbkb]
299292

@@ -303,7 +296,7 @@ def ROLW : ALUW_rr<0b0110000, 0b001, "rolw">,
303296
def RORW : ALUW_rr<0b0110000, 0b101, "rorw">,
304297
Sched<[WriteRotateReg32, ReadRotateReg32, ReadRotateReg32]>;
305298

306-
def RORIW : RVBShiftW_ri<0b0110000, 0b101, OPC_OP_IMM_32, "roriw">,
299+
def RORIW : ShiftW_ri<0b0110000, 0b101, "roriw">,
307300
Sched<[WriteRotateImm32, ReadRotateImm32]>;
308301
} // Predicates = [HasStdExtZbbOrZbkb, IsRV64]
309302

@@ -318,14 +311,14 @@ let IsSignExtendingOpW = 1 in
318311
def BEXT : ALU_rr<0b0100100, 0b101, "bext">,
319312
Sched<[WriteBEXT, ReadSingleBit, ReadSingleBit]>;
320313

321-
def BCLRI : RVBShift_ri<0b01001, 0b001, OPC_OP_IMM, "bclri">,
314+
def BCLRI : Shift_ri<0b01001, 0b001, "bclri">,
322315
Sched<[WriteSingleBitImm, ReadSingleBitImm]>;
323-
def BSETI : RVBShift_ri<0b00101, 0b001, OPC_OP_IMM, "bseti">,
316+
def BSETI : Shift_ri<0b00101, 0b001, "bseti">,
324317
Sched<[WriteSingleBitImm, ReadSingleBitImm]>;
325-
def BINVI : RVBShift_ri<0b01101, 0b001, OPC_OP_IMM, "binvi">,
318+
def BINVI : Shift_ri<0b01101, 0b001, "binvi">,
326319
Sched<[WriteSingleBitImm, ReadSingleBitImm]>;
327320
let IsSignExtendingOpW = 1 in
328-
def BEXTI : RVBShift_ri<0b01001, 0b101, OPC_OP_IMM, "bexti">,
321+
def BEXTI : Shift_ri<0b01001, 0b101, "bexti">,
329322
Sched<[WriteBEXTI, ReadSingleBitImm]>;
330323
} // Predicates = [HasStdExtZbs]
331324

0 commit comments

Comments
 (0)