[ ]+2:[ ]+4581[ ]+li[ ]+a1,0
[ ]+4:[ ]+8a01[ ]+andi[ ]+a2,a2,0
[ ]+6:[ ]+8a81[ ]+andi[ ]+a3,a3,0
-[ ]+8:[ ]+00070713[ ]+mv[ ]+a4,a4
-[ ]+c:[ ]+0781[ ]+addi[ ]+a5,a5,0
+[ ]+8:[ ]+0001[ ]+nop
+[ ]+a:[ ]+00070713[ ]+mv[ ]+a4,a4
+[ ]+e:[ ]+0781[ ]+addi[ ]+a5,a5,0
#...
return match_opcode (op, insn) && ((insn & MASK_CRS2) != 0);
}
+static int
+match_c_nop (const struct riscv_opcode *op, insn_t insn)
+{
+ return (match_opcode (op, insn)
+ && (((insn & MASK_RD) >> OP_SH_RD) == 0));
+}
+
static int
match_c_addi16sp (const struct riscv_opcode *op, insn_t insn)
{
{"bne", "I", "s,t,p", MATCH_BNE, MASK_BNE, match_opcode, 0 },
{"addi", "C", "Ct,Cc,CK", MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN, match_c_addi4spn, INSN_ALIAS },
{"addi", "C", "d,CU,Cj", MATCH_C_ADDI, MASK_C_ADDI, match_rd_nonzero, INSN_ALIAS },
+{"addi", "C", "d,CU,0", MATCH_C_NOP, MASK_C_ADDI | MASK_RVC_IMM, match_c_nop, INSN_ALIAS },
{"addi", "C", "Cc,Cc,CL", MATCH_C_ADDI16SP, MASK_C_ADDI16SP, match_c_addi16sp, INSN_ALIAS },
{"addi", "I", "d,s,j", MATCH_ADDI, MASK_ADDI, match_opcode, 0 },
{"add", "C", "d,CU,CV", MATCH_C_ADD, MASK_C_ADD, match_c_add, INSN_ALIAS },