@@ -259,9 +259,8 @@ class CStore_rri<bits<3> funct3, string OpcodeStr,
259259 OpcodeStr, "$rs2, ${imm}(${rs1})">;
260260
261261let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
262- class Bcz<bits<3> funct3, string OpcodeStr,
263- RegisterClass cls>
264- : RVInst16CB<funct3, 0b01, (outs), (ins cls:$rs1, simm9_lsb0:$imm),
262+ class Bcz<bits<3> funct3, string OpcodeStr>
263+ : RVInst16CB<funct3, 0b01, (outs), (ins GPRC:$rs1, simm9_lsb0:$imm),
265264 OpcodeStr, "$rs1, $imm"> {
266265 let isBranch = 1;
267266 let isTerminator = 1;
@@ -273,9 +272,9 @@ class Bcz<bits<3> funct3, string OpcodeStr,
273272}
274273
275274let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
276- class Shift_right<bits<2> funct2, string OpcodeStr, RegisterClass cls,
277- Operand ImmOpnd>
278- : RVInst16CB<0b100, 0b01, (outs cls:$rd), (ins cls :$rs1, ImmOpnd :$imm),
275+ class Shift_right<bits<2> funct2, string OpcodeStr>
276+ : RVInst16CB<0b100, 0b01, (outs GPRC:$rd),
277+ (ins GPRC :$rs1, uimmlog2xlennonzero :$imm),
279278 OpcodeStr, "$rs1, $imm"> {
280279 let Constraints = "$rs1 = $rd";
281280 let Inst{12} = imm{5};
@@ -284,10 +283,9 @@ class Shift_right<bits<2> funct2, string OpcodeStr, RegisterClass cls,
284283}
285284
286285let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
287- class CA_ALU<bits<6> funct6, bits<2> funct2, string OpcodeStr,
288- RegisterClass cls>
289- : RVInst16CA<funct6, funct2, 0b01, (outs cls:$rd_wb), (ins cls:$rd, cls:$rs2),
290- OpcodeStr, "$rd, $rs2"> {
286+ class CA_ALU<bits<6> funct6, bits<2> funct2, string OpcodeStr>
287+ : RVInst16CA<funct6, funct2, 0b01, (outs GPRC:$rd_wb),
288+ (ins GPRC:$rd, GPRC:$rs2), OpcodeStr, "$rd, $rs2"> {
291289 bits<3> rd;
292290 let Constraints = "$rd = $rd_wb";
293291 let Inst{9-7} = rd;
@@ -465,9 +463,9 @@ def C_LUI : RVInst16CI<0b011, 0b01, (outs GPRNoX0X2:$rd),
465463 let Inst{6-2} = imm{4-0};
466464}
467465
468- def C_SRLI : Shift_right<0b00, "c.srli", GPRC, uimmlog2xlennonzero >,
466+ def C_SRLI : Shift_right<0b00, "c.srli">,
469467 Sched<[WriteShiftImm, ReadShiftImm]>;
470- def C_SRAI : Shift_right<0b01, "c.srai", GPRC, uimmlog2xlennonzero >,
468+ def C_SRAI : Shift_right<0b01, "c.srai">,
471469 Sched<[WriteShiftImm, ReadShiftImm]>;
472470
473471let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
@@ -480,19 +478,19 @@ def C_ANDI : RVInst16CB<0b100, 0b01, (outs GPRC:$rd), (ins GPRC:$rs1, simm6:$imm
480478 let Inst{6-2} = imm{4-0};
481479}
482480
483- def C_SUB : CA_ALU<0b100011, 0b00, "c.sub", GPRC >,
481+ def C_SUB : CA_ALU<0b100011, 0b00, "c.sub">,
484482 Sched<[WriteIALU, ReadIALU, ReadIALU]>;
485- def C_XOR : CA_ALU<0b100011, 0b01, "c.xor", GPRC >,
483+ def C_XOR : CA_ALU<0b100011, 0b01, "c.xor">,
486484 Sched<[WriteIALU, ReadIALU, ReadIALU]>;
487- def C_OR : CA_ALU<0b100011, 0b10, "c.or" , GPRC >,
485+ def C_OR : CA_ALU<0b100011, 0b10, "c.or">,
488486 Sched<[WriteIALU, ReadIALU, ReadIALU]>;
489- def C_AND : CA_ALU<0b100011, 0b11, "c.and", GPRC >,
487+ def C_AND : CA_ALU<0b100011, 0b11, "c.and">,
490488 Sched<[WriteIALU, ReadIALU, ReadIALU]>;
491489
492490let Predicates = [HasStdExtCOrZca, IsRV64] in {
493- def C_SUBW : CA_ALU<0b100111, 0b00, "c.subw", GPRC >,
491+ def C_SUBW : CA_ALU<0b100111, 0b00, "c.subw">,
494492 Sched<[WriteIALU32, ReadIALU32, ReadIALU32]>;
495- def C_ADDW : CA_ALU<0b100111, 0b01, "c.addw", GPRC >,
493+ def C_ADDW : CA_ALU<0b100111, 0b01, "c.addw">,
496494 Sched<[WriteIALU32, ReadIALU32, ReadIALU32]>;
497495}
498496
@@ -504,8 +502,8 @@ def C_J : RVInst16CJ<0b101, 0b01, (outs), (ins simm12_lsb0:$offset),
504502 let isBarrier=1;
505503}
506504
507- def C_BEQZ : Bcz<0b110, "c.beqz", GPRC >, Sched<[WriteJmp, ReadJmp]>;
508- def C_BNEZ : Bcz<0b111, "c.bnez", GPRC >, Sched<[WriteJmp, ReadJmp]>;
505+ def C_BEQZ : Bcz<0b110, "c.beqz">, Sched<[WriteJmp, ReadJmp]>;
506+ def C_BNEZ : Bcz<0b111, "c.bnez">, Sched<[WriteJmp, ReadJmp]>;
509507
510508let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
511509def C_SLLI : RVInst16CI<0b000, 0b10, (outs GPRNoX0:$rd_wb),
0 commit comments