summaryrefslogtreecommitdiff
path: root/opcodes/aarch64-asm.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2023-03-30 11:09:02 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2023-03-30 11:09:02 +0100
commita5791d5814226054215b7aab9f87dec6b8e41664 (patch)
tree6c3d02b8085caa28f0053d1eeee02fe7b2ade17b /opcodes/aarch64-asm.c
parenteee2ecccdaa37d6c5d283d6346f70897ba27166b (diff)
downloadbinutils-gdb-a5791d5814226054215b7aab9f87dec6b8e41664.tar.gz
aarch64: Make SME instructions use F_STRICT
This patch makes all SME instructions use F_STRICT, so that qualifiers have to be provided explicitly rather than being inferred from other operands. The main change is to move the qualifier setting from the operand-level decoders to the opcode level. This is one step towards consolidating the ZA parsing code and extending it to handle SME2.
Diffstat (limited to 'opcodes/aarch64-asm.c')
-rw-r--r--opcodes/aarch64-asm.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c
index e050197e8be..bfabcb9e3a2 100644
--- a/opcodes/aarch64-asm.c
+++ b/opcodes/aarch64-asm.c
@@ -1852,6 +1852,11 @@ aarch64_encode_variant_using_iclass (struct aarch64_inst *inst)
int variant = 0;
switch (inst->opcode->iclass)
{
+ case sme_mov:
+ case sme_psel:
+ /* The variant is encoded as part of the immediate. */
+ break;
+
case sve_cpy:
insert_fields (&inst->value, aarch64_get_variant (inst),
0, 2, FLD_SVE_M_14, FLD_size);
@@ -1872,8 +1877,9 @@ aarch64_encode_variant_using_iclass (struct aarch64_inst *inst)
encoding. */
break;
+ case sme_misc:
case sve_misc:
- /* sve_misc instructions have only a single variant. */
+ /* These instructions have only a single variant. */
break;
case sve_movprfx: