aboutsummaryrefslogtreecommitdiff
path: root/opcodes/aarch64-dis.c
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes/aarch64-dis.c')
-rw-r--r--opcodes/aarch64-dis.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c
index 2aab630..179addc 100644
--- a/opcodes/aarch64-dis.c
+++ b/opcodes/aarch64-dis.c
@@ -501,7 +501,7 @@ aarch64_ext_ldst_reglist (const aarch64_operand *self ATTRIBUTE_UNUSED,
/* Number of elements in each structure to be loaded/stored. */
unsigned expected_num = get_opcode_dependent_value (inst->opcode);
- struct
+ static const struct
{
unsigned is_reserved;
unsigned num_regs;
@@ -3603,6 +3603,14 @@ aarch64_decode_variant_using_iclass (aarch64_inst *inst)
variant = extract_field (FLD_SVE_sz2, inst->value, 0);
break;
+ case sve_size_sd3:
+ variant = extract_field (FLD_SVE_sz3, inst->value, 0);
+ break;
+
+ case sve_size_sd4:
+ variant = extract_field (FLD_SVE_sz4, inst->value, 0);
+ break;
+
case sve_size_hsd2:
i = extract_field (FLD_SVE_size, inst->value, 0);
if (i < 1)
@@ -3610,6 +3618,13 @@ aarch64_decode_variant_using_iclass (aarch64_inst *inst)
variant = i - 1;
break;
+ case sve_size_hsd3:
+ i = extract_field (FLD_len, inst->value, 0);
+ if (i < 1)
+ return false;
+ variant = i - 1;
+ break;
+
case sve_size_13:
/* Ignore low bit of this field since that is set in the opcode for
instructions of this iclass. */