Skip to content

Commit d08dd05

Browse files
committed
Unmap C.NOP to NOP
1 parent 78836cf commit d08dd05

File tree

4 files changed

+13
-11
lines changed

4 files changed

+13
-11
lines changed

src/decode.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,7 +1255,7 @@ static inline bool op_caddi(rv_insn_t *ir, const uint32_t insn)
12551255
/* dispatch from rd/rs1 field */
12561256
switch (ir->rd) {
12571257
case 0: /* C.NOP */
1258-
ir->opcode = rv_insn_nop;
1258+
ir->opcode = rv_insn_cnop;
12591259
break;
12601260
default: /* C.ADDI */
12611261
/* Add 6-bit signed immediate to rds, serving as NOP for X0 register. */
@@ -1320,7 +1320,7 @@ static inline bool op_clui(rv_insn_t *ir, const uint32_t insn)
13201320
/* dispatch from rd/rs1 region */
13211321
switch (ir->rd) {
13221322
case 0: /* Code point: rd = x0 is HINTS */
1323-
ir->opcode = rv_insn_nop;
1323+
ir->opcode = rv_insn_cnop;
13241324
break;
13251325
case 2: { /* C.ADDI16SP */
13261326
ir->imm = c_decode_caddi16sp_nzimm(insn);
@@ -1381,7 +1381,7 @@ static inline bool op_cmisc_alu(rv_insn_t *ir, const uint32_t insn)
13811381
/* Code point: rd = x0 is HINTS
13821382
* Code point: shamt = 0 is HINTS
13831383
*/
1384-
ir->opcode = (!ir->rs1 || !ir->shamt) ? rv_insn_nop : rv_insn_csrli;
1384+
ir->opcode = (!ir->rs1 || !ir->shamt) ? rv_insn_cnop : rv_insn_csrli;
13851385
break;
13861386
case 1: /* C.SRAI */
13871387
ir->shamt = c_decode_cbtype_shamt(insn);
@@ -1448,7 +1448,7 @@ static inline bool op_cslli(rv_insn_t *ir, const uint32_t insn)
14481448
tmp |= (insn & FCI_IMM_6_2) >> 2;
14491449
ir->imm = tmp;
14501450
ir->rd = c_decode_rd(insn);
1451-
ir->opcode = ir->rd ? rv_insn_cslli : rv_insn_nop;
1451+
ir->opcode = ir->rd ? rv_insn_cslli : rv_insn_cnop;
14521452
return true;
14531453
}
14541454

@@ -1470,7 +1470,7 @@ static inline bool op_clwsp(rv_insn_t *ir, const uint32_t insn)
14701470
ir->rd = c_decode_rd(insn);
14711471

14721472
/* reserved for rd = x0 */
1473-
ir->opcode = ir->rd ? rv_insn_clwsp : rv_insn_nop;
1473+
ir->opcode = ir->rd ? rv_insn_clwsp : rv_insn_cnop;
14741474
return true;
14751475
}
14761476

@@ -1594,7 +1594,7 @@ static inline bool op_ccr(rv_insn_t *ir, const uint32_t insn)
15941594
break;
15951595
default: /* C.MV */
15961596
/* Code point: rd = x0 is HINTS */
1597-
ir->opcode = ir->rd ? rv_insn_cmv : rv_insn_nop;
1597+
ir->opcode = ir->rd ? rv_insn_cmv : rv_insn_cnop;
15981598
break;
15991599
}
16001600
break;
@@ -1603,12 +1603,12 @@ static inline bool op_ccr(rv_insn_t *ir, const uint32_t insn)
16031603
ir->opcode = rv_insn_ebreak;
16041604
else if (ir->rs1 && ir->rs2) { /* C.ADD */
16051605
/* Code point: rd = x0 is HINTS */
1606-
ir->opcode = ir->rd ? rv_insn_cadd : rv_insn_nop;
1606+
ir->opcode = ir->rd ? rv_insn_cadd : rv_insn_cnop;
16071607
} else if (ir->rs1 && !ir->rs2) /* C.JALR */
16081608
ir->opcode = rv_insn_cjalr;
16091609
else { /* rs2 != x0 AND rs1 = x0 */
16101610
/* Hint */
1611-
ir->opcode = rv_insn_nop;
1611+
ir->opcode = rv_insn_cnop;
16121612
}
16131613
break;
16141614
default:

src/decode.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ enum op_field {
152152
_(caddi4spn, 0, 2, ENC(rd)) \
153153
_(clw, 0, 2, ENC(rs1, rd)) \
154154
_(csw, 0, 2, ENC(rs1, rs2)) \
155-
/* cnop is mapped to nop */ \
155+
_(cnop, 0, 2, ENC()) \
156156
_(caddi, 0, 2, ENC(rd)) \
157157
_(cjal, 1, 2, ENC()) \
158158
_(cli, 0, 2, ENC(rd)) \

src/rv32_constopt.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,8 @@ CONSTOPT(clw, { info->is_constant[ir->rd] = false; })
717717
*/
718718
CONSTOPT(csw, {})
719719

720-
/* C.NOP is mapped to NOP */
720+
/* C.NOP */
721+
CONSTOPT(cnop, {})
721722

722723
/* C.ADDI adds the non-zero sign-extended 6-bit immediate to the value in
723724
* register rd then writes the result to rd. C.ADDI expands into

src/rv32_template.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -807,7 +807,8 @@ RVOP(csw, {
807807
rv->io.mem_write_w(addr, rv->X[ir->rs2]);
808808
})
809809

810-
/* C.NOP is mapped to NOP */
810+
/* C.NOP */
811+
RVOP(cnop, {/* no operation */})
811812

812813
/* C.ADDI adds the non-zero sign-extended 6-bit immediate to the value in
813814
* register rd then writes the result to rd. C.ADDI expands into

0 commit comments

Comments
 (0)