summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2023-03-30 11:09:16 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2023-03-30 11:09:16 +0100
commit6efa660124f481a5ba415cedd195764ea6ac09fd (patch)
tree5ceb8e36ccb0439e3256688ff9cfb98abb06673d /include
parentce623e7aa486d1330c9a4529c77a302d2fdcb801 (diff)
downloadbinutils-gdb-6efa660124f481a5ba415cedd195764ea6ac09fd.tar.gz
aarch64: Add the SME2 shift instructions
There are two instruction formats here: - SQRSHR, SQRSHRU and UQRSHR, which operate on lists of two or four registers. - SQRSHRN, SQRSHRUN and UQRSHRN, which operate on lists of four registers. These are the first SME2 instructions to have immediate operands. The patch makes sure that, when parsing SME2 instructions with immediate operands, the new predicate-as-counter registers are parsed as registers rather than as #-less immediates.
Diffstat (limited to 'include')
-rw-r--r--include/opcode/aarch64.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
index b445bf758fc..a4f1623d4ca 100644
--- a/include/opcode/aarch64.h
+++ b/include/opcode/aarch64.h
@@ -520,6 +520,8 @@ enum aarch64_opnd
AARCH64_OPND_SME_ADDR_RI_U4xVL, /* SME [<Xn|SP>{, #<imm>, MUL VL}]. */
AARCH64_OPND_SME_SM_ZA, /* SME {SM | ZA}. */
AARCH64_OPND_SME_PnT_Wm_imm, /* SME <Pn>.<T>[<Wm>, #<imm>]. */
+ AARCH64_OPND_SME_SHRIMM4, /* 4-bit right shift, bits [19:16]. */
+ AARCH64_OPND_SME_SHRIMM5, /* size + 5-bit right shift, bits [23:22,20:16]. */
AARCH64_OPND_SME_Zm_INDEX1, /* Zn.T[index], bits [19:16,10]. */
AARCH64_OPND_SME_Zm_INDEX2, /* Zn.T[index], bits [19:16,11:10]. */
AARCH64_OPND_SME_Zm_INDEX3_1, /* Zn.T[index], bits [19:16,10,2:1]. */
@@ -713,6 +715,7 @@ enum aarch64_insn_class
sme_mov,
sme_ldr,
sme_psel,
+ sme_shift,
sme_size_12_bhs,
sme_size_12_hs,
sme_size_22,