@@ -1255,7 +1255,7 @@ static inline bool op_caddi(rv_insn_t *ir, const uint32_t insn)
1255
1255
/* dispatch from rd/rs1 field */
1256
1256
switch (ir -> rd ) {
1257
1257
case 0 : /* C.NOP */
1258
- ir -> opcode = rv_insn_nop ;
1258
+ ir -> opcode = rv_insn_cnop ;
1259
1259
break ;
1260
1260
default : /* C.ADDI */
1261
1261
/* 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)
1320
1320
/* dispatch from rd/rs1 region */
1321
1321
switch (ir -> rd ) {
1322
1322
case 0 : /* Code point: rd = x0 is HINTS */
1323
- ir -> opcode = rv_insn_nop ;
1323
+ ir -> opcode = rv_insn_cnop ;
1324
1324
break ;
1325
1325
case 2 : { /* C.ADDI16SP */
1326
1326
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)
1381
1381
/* Code point: rd = x0 is HINTS
1382
1382
* Code point: shamt = 0 is HINTS
1383
1383
*/
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 ;
1385
1385
break ;
1386
1386
case 1 : /* C.SRAI */
1387
1387
ir -> shamt = c_decode_cbtype_shamt (insn );
@@ -1448,7 +1448,7 @@ static inline bool op_cslli(rv_insn_t *ir, const uint32_t insn)
1448
1448
tmp |= (insn & FCI_IMM_6_2 ) >> 2 ;
1449
1449
ir -> imm = tmp ;
1450
1450
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 ;
1452
1452
return true;
1453
1453
}
1454
1454
@@ -1470,7 +1470,7 @@ static inline bool op_clwsp(rv_insn_t *ir, const uint32_t insn)
1470
1470
ir -> rd = c_decode_rd (insn );
1471
1471
1472
1472
/* 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 ;
1474
1474
return true;
1475
1475
}
1476
1476
@@ -1594,7 +1594,7 @@ static inline bool op_ccr(rv_insn_t *ir, const uint32_t insn)
1594
1594
break ;
1595
1595
default : /* C.MV */
1596
1596
/* 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 ;
1598
1598
break ;
1599
1599
}
1600
1600
break ;
@@ -1603,12 +1603,12 @@ static inline bool op_ccr(rv_insn_t *ir, const uint32_t insn)
1603
1603
ir -> opcode = rv_insn_ebreak ;
1604
1604
else if (ir -> rs1 && ir -> rs2 ) { /* C.ADD */
1605
1605
/* 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 ;
1607
1607
} else if (ir -> rs1 && !ir -> rs2 ) /* C.JALR */
1608
1608
ir -> opcode = rv_insn_cjalr ;
1609
1609
else { /* rs2 != x0 AND rs1 = x0 */
1610
1610
/* Hint */
1611
- ir -> opcode = rv_insn_nop ;
1611
+ ir -> opcode = rv_insn_cnop ;
1612
1612
}
1613
1613
break ;
1614
1614
default :
@@ -1726,10 +1726,9 @@ bool rv_decode(rv_insn_t *ir, uint32_t insn)
1726
1726
/* If the last 2-bit is one of 0b00, 0b01, and 0b10, it is
1727
1727
* a 16-bit instruction.
1728
1728
*/
1729
- if ((insn & FC_OPCODE ) != 3 ) {
1729
+ if (is_compressed (insn ) ) {
1730
1730
insn &= 0x0000FFFF ;
1731
1731
const uint16_t c_index = (insn & FC_FUNC3 ) >> 11 | (insn & FC_OPCODE );
1732
- ir -> insn_len = INSN_16 ;
1733
1732
1734
1733
/* decode instruction (compressed instructions) */
1735
1734
const decode_t op = rvc_jump_table [c_index ];
@@ -1740,7 +1739,6 @@ bool rv_decode(rv_insn_t *ir, uint32_t insn)
1740
1739
1741
1740
/* standard uncompressed instruction */
1742
1741
const uint32_t index = (insn & INSN_6_2 ) >> 2 ;
1743
- ir -> insn_len = INSN_32 ;
1744
1742
1745
1743
/* decode instruction */
1746
1744
const decode_t op = rv_jump_table [index ];
0 commit comments