@@ -408,11 +408,13 @@ def C_ADDI : RVInst16CI<0b000, 0b01, (outs GPRNoX0:$rd_wb),
408408 let Constraints = "$rd = $rd_wb";
409409}
410410
411- // Alternate syntax for c.nop. Converted to C_NOP by the assembler.
411+ // Alternate syntax for c.nop. Converted to C_NOP/C_NOP_HINT by the assembler.
412412let hasSideEffects = 0, mayLoad = 0, mayStore = 0, isCodeGenOnly = 0,
413413 isAsmParserOnly = 1 in
414- def PseudoC_ADDI_NOP : Pseudo<(outs GPRX0:$rd), (ins GPRX0:$rs1, immzero:$imm),
415- [], "c.addi", "$rd, $imm">;
414+ def PseudoC_ADDI_NOP : Pseudo<(outs GPRX0:$rd), (ins GPRX0:$rs1, simm6:$imm),
415+ [], "c.addi", "$rd, $imm"> {
416+ let Constraints = "$rs1 = $rd";
417+ }
416418
417419let hasSideEffects = 0, mayLoad = 0, mayStore = 0, isCall = 1,
418420 DecoderNamespace = "RV32Only", Defs = [X1],
@@ -650,11 +652,6 @@ def C_SRAI64_HINT : RVInst16CB<0b100, 0b01, (outs GPRC:$rd),
650652// Assembler Pseudo Instructions
651653//===----------------------------------------------------------------------===//
652654
653- let Predicates = [HasStdExtZca] in {
654- // Just a different syntax for the c.nop hint: c.addi x0, simm6 vs c.nop simm6.
655- def : InstAlias<"c.addi x0, $imm", (C_NOP_HINT simm6nonzero:$imm), 0>;
656- }
657-
658655let Predicates = [HasStdExtC, HasStdExtZihintntl] in {
659656def : InstAlias<"c.ntl.p1", (C_ADD X0, X2)>;
660657def : InstAlias<"c.ntl.pall", (C_ADD X0, X3)>;
0 commit comments