riscv_reset_subsets_list_arch_str ();
riscv_set_rvc (false);
- if (riscv_subset_supports (&riscv_rps_as, "c")
- || riscv_subset_supports (&riscv_rps_as, "zca"))
+ if (riscv_subset_supports (&riscv_rps_as, "c"))
riscv_set_rvc (true);
if (riscv_subset_supports (&riscv_rps_as, "ztso"))
goto unknown_validate_operand;
}
break;
- case 'c':
- switch (*++oparg)
- {
- /* byte immediate operators, load/store byte insns. */
- case 'h': used_bits |= ENCODE_ZCB_HALFWORD_UIMM (-1U); break;
- /* halfword immediate operators, load/store halfword insns. */
- case 'b': used_bits |= ENCODE_ZCB_BYTE_UIMM (-1U); break;
- case 'f': break;
- default:
- goto unknown_validate_operand;
- }
- break;
default:
goto unknown_validate_operand;
}
goto unknown_riscv_ip_operand;
}
break;
-
- case 'c':
- switch (*++oparg)
- {
- case 'h': /* Immediate field for c.lh/c.lhu/c.sh. */
- /* Handle cases, such as c.sh rs2', (rs1'). */
- if (riscv_handle_implicit_zero_offset (imm_expr, asarg))
- continue;
- if (my_getSmallExpression (imm_expr, imm_reloc, asarg, p)
- || imm_expr->X_op != O_constant
- || !VALID_ZCB_HALFWORD_UIMM ((valueT) imm_expr->X_add_number))
- break;
- ip->insn_opcode |= ENCODE_ZCB_HALFWORD_UIMM (imm_expr->X_add_number);
- goto rvc_imm_done;
-
- case 'b': /* Immediate field for c.lbu/c.sb. */
- /* Handle cases, such as c.lbu rd', (rs1'). */
- if (riscv_handle_implicit_zero_offset (imm_expr, asarg))
- continue;
- if (my_getSmallExpression (imm_expr, imm_reloc, asarg, p)
- || imm_expr->X_op != O_constant
- || !VALID_ZCB_BYTE_UIMM ((valueT) imm_expr->X_add_number))
- break;
- ip->insn_opcode |= ENCODE_ZCB_BYTE_UIMM (imm_expr->X_add_number);
- goto rvc_imm_done;
-
- case 'f': /* Operand for matching immediate 255. */
- if (my_getSmallExpression (imm_expr, imm_reloc, asarg, p)
- || imm_expr->X_op != O_constant
- || imm_expr->X_add_number != 255)
- break;
- /* This operand is used for matching immediate 255, and
- we do not write anything to encoding by this operand. */
- asarg = expr_parse_end;
- imm_expr->X_op = O_absent;
- continue;
-
- default:
- goto unknown_riscv_ip_operand;
- }
- break;
default:
goto unknown_riscv_ip_operand;
}
riscv_reset_subsets_list_arch_str ();
riscv_set_rvc (false);
- if (riscv_subset_supports (&riscv_rps_as, "c")
- || riscv_subset_supports (&riscv_rps_as, "zca"))
+ if (riscv_subset_supports (&riscv_rps_as, "c"))
riscv_set_rvc (true);
if (riscv_subset_supports (&riscv_rps_as, "ztso"))