diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfo.td b/llvm/lib/Target/RISCV/RISCVInstrInfo.td index 2a4664ea11d5f..01ecd06e288bc 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfo.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.td @@ -558,8 +558,7 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in class Shift_ri imm11_7, bits<3> funct3, string opcodestr> : RVInstIShift, - Sched<[WriteShiftImm, ReadShiftImm]>; + "$rd, $rs1, $shamt">; let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in class ALU_rr funct7, bits<3> funct3, string opcodestr, @@ -586,8 +585,7 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in class ShiftW_ri imm11_5, bits<3> funct3, string opcodestr> : RVInstIShiftW, - Sched<[WriteShiftImm32, ReadShiftImm32]>; + "$rd, $rs1, $shamt">; let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in class ALUW_rr funct7, bits<3> funct3, string opcodestr, @@ -666,9 +664,12 @@ def ORI : ALU_ri<0b110, "ori">; def ANDI : ALU_ri<0b111, "andi">; -def SLLI : Shift_ri<0b00000, 0b001, "slli">; -def SRLI : Shift_ri<0b00000, 0b101, "srli">; -def SRAI : Shift_ri<0b01000, 0b101, "srai">; +def SLLI : Shift_ri<0b00000, 0b001, "slli">, + Sched<[WriteShiftImm, ReadShiftImm]>; +def SRLI : Shift_ri<0b00000, 0b101, "srli">, + Sched<[WriteShiftImm, ReadShiftImm]>; +def SRAI : Shift_ri<0b01000, 0b101, "srai">, + Sched<[WriteShiftImm, ReadShiftImm]>; def ADD : ALU_rr<0b0000000, 0b000, "add", Commutable=1>, Sched<[WriteIALU, ReadIALU, ReadIALU]>; @@ -764,9 +765,12 @@ def ADDIW : RVInstI<0b000, OPC_OP_IMM_32, (outs GPR:$rd), "addiw", "$rd, $rs1, $imm12">, Sched<[WriteIALU32, ReadIALU32]>; -def SLLIW : ShiftW_ri<0b0000000, 0b001, "slliw">; -def SRLIW : ShiftW_ri<0b0000000, 0b101, "srliw">; -def SRAIW : ShiftW_ri<0b0100000, 0b101, "sraiw">; +def SLLIW : ShiftW_ri<0b0000000, 0b001, "slliw">, + Sched<[WriteShiftImm32, ReadShiftImm32]>; +def SRLIW : ShiftW_ri<0b0000000, 0b101, "srliw">, + Sched<[WriteShiftImm32, ReadShiftImm32]>; +def SRAIW : ShiftW_ri<0b0100000, 0b101, "sraiw">, + Sched<[WriteShiftImm32, ReadShiftImm32]>; def ADDW : ALUW_rr<0b0000000, 0b000, "addw", Commutable=1>, Sched<[WriteIALU32, ReadIALU32, ReadIALU32]>; diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td index 3eb1fc6869403..8205009463c5b 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td @@ -237,13 +237,6 @@ class RVBShift_ri imm11_7, bits<3> funct3, RISCVOpcode opcode, (ins GPR:$rs1, uimmlog2xlen:$shamt), opcodestr, "$rd, $rs1, $shamt">; -let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in -class RVBShiftW_ri imm11_5, bits<3> funct3, RISCVOpcode opcode, - string opcodestr> - : RVInstIShiftW; - //===----------------------------------------------------------------------===// // Instructions //===----------------------------------------------------------------------===// @@ -285,7 +278,7 @@ def ROL : ALU_rr<0b0110000, 0b001, "rol">, def ROR : ALU_rr<0b0110000, 0b101, "ror">, Sched<[WriteRotateReg, ReadRotateReg, ReadRotateReg]>; -def RORI : RVBShift_ri<0b01100, 0b101, OPC_OP_IMM, "rori">, +def RORI : Shift_ri<0b01100, 0b101, "rori">, Sched<[WriteRotateImm, ReadRotateImm]>; } // Predicates = [HasStdExtZbbOrZbkb] @@ -295,7 +288,7 @@ def ROLW : ALUW_rr<0b0110000, 0b001, "rolw">, def RORW : ALUW_rr<0b0110000, 0b101, "rorw">, Sched<[WriteRotateReg32, ReadRotateReg32, ReadRotateReg32]>; -def RORIW : RVBShiftW_ri<0b0110000, 0b101, OPC_OP_IMM_32, "roriw">, +def RORIW : ShiftW_ri<0b0110000, 0b101, "roriw">, Sched<[WriteRotateImm32, ReadRotateImm32]>; } // Predicates = [HasStdExtZbbOrZbkb, IsRV64] @@ -310,14 +303,14 @@ let IsSignExtendingOpW = 1 in def BEXT : ALU_rr<0b0100100, 0b101, "bext">, Sched<[WriteBEXT, ReadSingleBit, ReadSingleBit]>; -def BCLRI : RVBShift_ri<0b01001, 0b001, OPC_OP_IMM, "bclri">, +def BCLRI : Shift_ri<0b01001, 0b001, "bclri">, Sched<[WriteSingleBitImm, ReadSingleBitImm]>; -def BSETI : RVBShift_ri<0b00101, 0b001, OPC_OP_IMM, "bseti">, +def BSETI : Shift_ri<0b00101, 0b001, "bseti">, Sched<[WriteSingleBitImm, ReadSingleBitImm]>; -def BINVI : RVBShift_ri<0b01101, 0b001, OPC_OP_IMM, "binvi">, +def BINVI : Shift_ri<0b01101, 0b001, "binvi">, Sched<[WriteSingleBitImm, ReadSingleBitImm]>; let IsSignExtendingOpW = 1 in -def BEXTI : RVBShift_ri<0b01001, 0b101, OPC_OP_IMM, "bexti">, +def BEXTI : Shift_ri<0b01001, 0b101, "bexti">, Sched<[WriteBEXTI, ReadSingleBitImm]>; } // Predicates = [HasStdExtZbs]