diff options
-rw-r--r-- | binutils/gas/config/tc-riscv.c | 3 | ||||
-rw-r--r-- | binutils/opcodes/riscv-opc.c | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/binutils/gas/config/tc-riscv.c b/binutils/gas/config/tc-riscv.c index 6e60c37..c375eb8 100644 --- a/binutils/gas/config/tc-riscv.c +++ b/binutils/gas/config/tc-riscv.c @@ -1390,7 +1390,8 @@ rvc_imm_done: case 'L': if (my_getSmallExpression (imm_expr, imm_reloc, s, p) || imm_expr->X_op != O_constant - || !VALID_RVC_ADDI16SP_IMM (imm_expr->X_add_number)) + || !VALID_RVC_ADDI16SP_IMM (imm_expr->X_add_number) + || imm_expr->X_add_number == 0) break; ip->insn_opcode |= ENCODE_RVC_ADDI16SP_IMM (imm_expr->X_add_number); diff --git a/binutils/opcodes/riscv-opc.c b/binutils/opcodes/riscv-opc.c index 8df27de..ad9c46b 100644 --- a/binutils/opcodes/riscv-opc.c +++ b/binutils/opcodes/riscv-opc.c @@ -179,10 +179,12 @@ const struct riscv_opcode riscv_builtin_opcodes[] = {"bnez", "C", "Cs,Cp", MATCH_C_BNEZ, MASK_C_BNEZ, match_opcode, INSN_ALIAS }, {"bnez", "I", "s,p", MATCH_BNE, MASK_BNE | MASK_RS2, match_opcode, INSN_ALIAS }, {"bne", "I", "s,t,p", MATCH_BNE, MASK_BNE, match_opcode, 0 }, +{"addi", "C", "d,CV,0", MATCH_C_MV, MASK_C_MV, match_c_add, INSN_ALIAS }, {"addi", "C", "Ct,Cc,CK", MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN, match_opcode, INSN_ALIAS }, {"addi", "C", "d,CU,Cj", MATCH_C_ADDI, MASK_C_ADDI, match_rd_nonzero, INSN_ALIAS }, {"addi", "C", "Cc,Cc,CL", MATCH_C_ADDI16SP, MASK_C_ADDI16SP, match_opcode, INSN_ALIAS }, {"addi", "I", "d,s,j", MATCH_ADDI, MASK_ADDI, match_opcode, 0 }, +{"add", "C", "d,CV,0", MATCH_C_MV, MASK_C_MV, match_c_add, INSN_ALIAS }, {"add", "C", "d,CU,CV", MATCH_C_ADD, MASK_C_ADD, match_c_add, INSN_ALIAS }, {"add", "C", "d,CV,CU", MATCH_C_ADD, MASK_C_ADD, match_c_add, INSN_ALIAS }, {"add", "C", "d,CU,Cj", MATCH_C_ADDI, MASK_C_ADDI, match_rd_nonzero, INSN_ALIAS }, |