diff options
Diffstat (limited to 'opcodes/aarch64-opc.h')
-rw-r--r-- | opcodes/aarch64-opc.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/opcodes/aarch64-opc.h b/opcodes/aarch64-opc.h index 9ab9bdf..d46c56d 100644 --- a/opcodes/aarch64-opc.h +++ b/opcodes/aarch64-opc.h @@ -133,6 +133,8 @@ enum aarch64_field_kind FLD_SVE_size, FLD_SVE_sz, FLD_SVE_sz2, + FLD_SVE_sz3, + FLD_SVE_sz4, FLD_SVE_tsz, FLD_SVE_tszh, FLD_SVE_tszl_8, @@ -185,6 +187,7 @@ enum aarch64_field_kind FLD_imm7, FLD_imm8, FLD_imm9, + FLD_imm9_5, FLD_imm12, FLD_imm14, FLD_imm16_0, @@ -326,7 +329,7 @@ verify_constraints (const struct aarch64_inst *, const aarch64_insn, bfd_vma, #define F_REG_ALIAS (1 << 6) /* Register name aliases another. */ #undef F_REG_128 -#define F_REG_128 (1 << 7) /* System regsister implementable as 128-bit wide. */ +#define F_REG_128 (1 << 7) /* System register implementable as 128-bit wide. */ /* PSTATE field name for the MSR instruction this is encoded in "op1:op2:CRm". @@ -551,6 +554,11 @@ static inline int select_operand_for_sf_field_coding (const aarch64_opcode *opcode) { int idx = -1; + if (opcode->iclass == fprcvtfloat2int) + return 0; + else if (opcode->iclass == fprcvtint2float) + return 1; + if (aarch64_get_operand_class (opcode->operands[0]) == AARCH64_OPND_CLASS_INT_REG) /* normal case. */ @@ -572,6 +580,11 @@ static inline int select_operand_for_fptype_field_coding (const aarch64_opcode *opcode) { int idx; + if (opcode->iclass == fprcvtfloat2int) + return 1; + else if (opcode->iclass == fprcvtint2float) + return 0; + if (aarch64_get_operand_class (opcode->operands[1]) == AARCH64_OPND_CLASS_FP_REG) /* normal case. */ @@ -602,7 +615,7 @@ select_operand_for_scalar_size_field_coding (const aarch64_opcode *opcode) src_size = aarch64_get_qualifier_esize (opcode->qualifiers_list[0][1]); if (src_size == dst_size && src_size == 0) { assert (0); abort (); } - /* When the result is not a sisd register or it is a long operantion. */ + /* When the result is not a sisd register or it is a long operation. */ if (dst_size == 0 || dst_size == src_size << 1) return 1; else |