@@ -259,9 +259,8 @@ class CStore_rri<bits<3> funct3, string OpcodeStr,
259
259
OpcodeStr, "$rs2, ${imm}(${rs1})">;
260
260
261
261
let 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),
265
264
OpcodeStr, "$rs1, $imm"> {
266
265
let isBranch = 1;
267
266
let isTerminator = 1;
@@ -273,9 +272,9 @@ class Bcz<bits<3> funct3, string OpcodeStr,
273
272
}
274
273
275
274
let 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),
279
278
OpcodeStr, "$rs1, $imm"> {
280
279
let Constraints = "$rs1 = $rd";
281
280
let Inst{12} = imm{5};
@@ -284,10 +283,9 @@ class Shift_right<bits<2> funct2, string OpcodeStr, RegisterClass cls,
284
283
}
285
284
286
285
let 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"> {
291
289
bits<3> rd;
292
290
let Constraints = "$rd = $rd_wb";
293
291
let Inst{9-7} = rd;
@@ -465,9 +463,9 @@ def C_LUI : RVInst16CI<0b011, 0b01, (outs GPRNoX0X2:$rd),
465
463
let Inst{6-2} = imm{4-0};
466
464
}
467
465
468
- def C_SRLI : Shift_right<0b00, "c.srli", GPRC, uimmlog2xlennonzero >,
466
+ def C_SRLI : Shift_right<0b00, "c.srli">,
469
467
Sched<[WriteShiftImm, ReadShiftImm]>;
470
- def C_SRAI : Shift_right<0b01, "c.srai", GPRC, uimmlog2xlennonzero >,
468
+ def C_SRAI : Shift_right<0b01, "c.srai">,
471
469
Sched<[WriteShiftImm, ReadShiftImm]>;
472
470
473
471
let 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
480
478
let Inst{6-2} = imm{4-0};
481
479
}
482
480
483
- def C_SUB : CA_ALU<0b100011, 0b00, "c.sub", GPRC >,
481
+ def C_SUB : CA_ALU<0b100011, 0b00, "c.sub">,
484
482
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">,
486
484
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">,
488
486
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">,
490
488
Sched<[WriteIALU, ReadIALU, ReadIALU]>;
491
489
492
490
let 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">,
494
492
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">,
496
494
Sched<[WriteIALU32, ReadIALU32, ReadIALU32]>;
497
495
}
498
496
@@ -504,8 +502,8 @@ def C_J : RVInst16CJ<0b101, 0b01, (outs), (ins simm12_lsb0:$offset),
504
502
let isBarrier=1;
505
503
}
506
504
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]>;
509
507
510
508
let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
511
509
def C_SLLI : RVInst16CI<0b000, 0b10, (outs GPRNoX0:$rd_wb),
0 commit comments