From 6327658ee73502ffb55dfb6b28a20d1dde15a4dc Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Thu, 2 Dec 2021 15:00:57 +0000 Subject: aarch64: Add support for +mops This patch adds support for FEAT_MOPS, an Armv8.8-A extension that provides memcpy and memset acceleration instructions. I took the perhaps controversial decision to generate the individual instruction forms using macros rather than list them out individually. This becomes useful with a follow-on patch to check that code follows the correct P/M/E sequence. [https://developer.arm.com/documentation/ddi0596/2021-09/Base-Instructions?lang=en] include/ * opcode/aarch64.h (AARCH64_FEATURE_MOPS): New macro. (AARCH64_ARCH_V8_8): Make armv8.8-a imply AARCH64_FEATURE_MOPS. (AARCH64_OPND_MOPS_ADDR_Rd): New aarch64_opnd. (AARCH64_OPND_MOPS_ADDR_Rs): Likewise. (AARCH64_OPND_MOPS_WB_Rn): Likewise. opcodes/ * aarch64-asm.h (ins_x0_to_x30): New inserter. * aarch64-asm.c (aarch64_ins_x0_to_x30): New function. * aarch64-dis.h (ext_x0_to_x30): New extractor. * aarch64-dis.c (aarch64_ext_x0_to_x30): New function. * aarch64-tbl.h (aarch64_feature_mops): New feature set. (aarch64_feature_mops_memtag): Likewise. (MOPS, MOPS_MEMTAG, MOPS_INSN, MOPS_MEMTAG_INSN) (MOPS_CPY_OP1_OP2_PME_INSN, MOPS_CPY_OP1_OP2_INSN, MOPS_CPY_OP1_INSN) (MOPS_CPY_INSN, MOPS_SET_OP1_OP2_PME_INSN, MOPS_SET_OP1_OP2_INSN) (MOPS_SET_INSN): New macros. (aarch64_opcode_table): Add MOPS instructions. (aarch64_opcode_table): Add entries for AARCH64_OPND_MOPS_ADDR_Rd, AARCH64_OPND_MOPS_ADDR_Rs and AARCH64_OPND_MOPS_WB_Rn. * aarch64-opc.c (aarch64_print_operand): Handle AARCH64_OPND_MOPS_ADDR_Rd, AARCH64_OPND_MOPS_ADDR_Rs and AARCH64_OPND_MOPS_WB_Rn. (verify_three_different_regs): New function. * aarch64-asm-2.c: Regenerate. * aarch64-dis-2.c: Likewise. * aarch64-opc-2.c: Likewise. gas/ * doc/c-aarch64.texi: Document +mops. * config/tc-aarch64.c (parse_x0_to_x30): New function. (parse_operands): Handle AARCH64_OPND_MOPS_ADDR_Rd, AARCH64_OPND_MOPS_ADDR_Rs and AARCH64_OPND_MOPS_WB_Rn. (aarch64_features): Add "mops". * testsuite/gas/aarch64/mops.s, testsuite/gas/aarch64/mops.d: New test. * testsuite/gas/aarch64/mops_invalid.s, * testsuite/gas/aarch64/mops_invalid.d, * testsuite/gas/aarch64/mops_invalid.l: Likewise. --- gas/config/tc-aarch64.c | 33 + gas/doc/c-aarch64.texi | 2 + gas/testsuite/gas/aarch64/mops.d | 1016 +++++ gas/testsuite/gas/aarch64/mops.s | 66 + gas/testsuite/gas/aarch64/mops_invalid.d | 1 + gas/testsuite/gas/aarch64/mops_invalid.l | 226 ++ gas/testsuite/gas/aarch64/mops_invalid.s | 248 ++ include/opcode/aarch64.h | 7 +- opcodes/aarch64-asm-2.c | 4 + opcodes/aarch64-asm.c | 13 + opcodes/aarch64-asm.h | 1 + opcodes/aarch64-dis-2.c | 6112 ++++++++++++++++++------------ opcodes/aarch64-dis.c | 11 + opcodes/aarch64-dis.h | 1 + opcodes/aarch64-opc-2.c | 3 + opcodes/aarch64-opc.c | 41 + opcodes/aarch64-tbl.h | 107 +- 17 files changed, 5496 insertions(+), 2396 deletions(-) create mode 100644 gas/testsuite/gas/aarch64/mops.d create mode 100644 gas/testsuite/gas/aarch64/mops.s create mode 100644 gas/testsuite/gas/aarch64/mops_invalid.d create mode 100644 gas/testsuite/gas/aarch64/mops_invalid.l create mode 100644 gas/testsuite/gas/aarch64/mops_invalid.s diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 2181fa1..4aadf5b 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -3918,6 +3918,22 @@ parse_sve_address (char **str, aarch64_opnd_info *operand, SHIFTED_MUL_VL); } +/* Parse a register X0-X30. The register must be 64-bit and register 31 + is unallocated. */ +static bool +parse_x0_to_x30 (char **str, aarch64_opnd_info *operand) +{ + const reg_entry *reg = parse_reg (str); + if (!reg || !aarch64_check_reg_type (reg, REG_TYPE_R_64)) + { + set_syntax_error (_(get_reg_expected_msg (REG_TYPE_R_64))); + return false; + } + operand->reg.regno = reg->number; + operand->qualifier = AARCH64_OPND_QLF_X; + return true; +} + /* Parse an operand for a MOVZ, MOVN or MOVK instruction. Return TRUE on success; otherwise return FALSE. */ static bool @@ -7491,6 +7507,21 @@ parse_operands (char *str, const aarch64_opcode *opcode) break; } + case AARCH64_OPND_MOPS_ADDR_Rd: + case AARCH64_OPND_MOPS_ADDR_Rs: + po_char_or_fail ('['); + if (!parse_x0_to_x30 (&str, info)) + goto failure; + po_char_or_fail (']'); + po_char_or_fail ('!'); + break; + + case AARCH64_OPND_MOPS_WB_Rn: + if (!parse_x0_to_x30 (&str, info)) + goto failure; + po_char_or_fail ('!'); + break; + default: as_fatal (_("unhandled operand code %d"), operands[i]); } @@ -9929,6 +9960,8 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = { AARCH64_ARCH_NONE}, {"pauth", AARCH64_FEATURE (AARCH64_FEATURE_PAC, 0), AARCH64_ARCH_NONE}, + {"mops", AARCH64_FEATURE (AARCH64_FEATURE_MOPS, 0), + AARCH64_ARCH_NONE}, {NULL, AARCH64_ARCH_NONE, AARCH64_ARCH_NONE}, }; diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi index 3051b6f..7edccce 100644 --- a/gas/doc/c-aarch64.texi +++ b/gas/doc/c-aarch64.texi @@ -193,6 +193,8 @@ automatically cause those extensions to be disabled. @tab Enable Large System extensions. @item @code{memtag} @tab ARMv8.5-A @tab No @tab Enable ARMv8.5-A Memory Tagging Extensions. +@item @code{mops} @tab @tab Armv8.8-A or later + @tab Enable Armv8.8-A memcpy and memset acceleration instructions @item @code{pan} @tab ARMv8-A @tab ARMv8.1-A or later @tab Enable Privileged Access Never support. @item @code{pauth} @tab ARMv8-A @tab No diff --git a/gas/testsuite/gas/aarch64/mops.d b/gas/testsuite/gas/aarch64/mops.d new file mode 100644 index 0000000..a49ef1a --- /dev/null +++ b/gas/testsuite/gas/aarch64/mops.d @@ -0,0 +1,1016 @@ +# objdump: -dr + +.* + + +Disassembly of section \.text: + +0+0 <\.text>: +[^:]*: 190107c0 cpyfp \[x0\]!, \[x1\]!, x30! +[^:]*: 194107c0 cpyfm \[x0\]!, \[x1\]!, x30! +[^:]*: 198107c0 cpyfe \[x0\]!, \[x1\]!, x30! +[^:]*: 191e041d cpyfp \[x29\]!, \[x30\]!, x0! +[^:]*: 195e041d cpyfm \[x29\]!, \[x30\]!, x0! +[^:]*: 199e041d cpyfe \[x29\]!, \[x30\]!, x0! +[^:]*: 1900043e cpyfp \[x30\]!, \[x0\]!, x1! +[^:]*: 1940043e cpyfm \[x30\]!, \[x0\]!, x1! +[^:]*: 1980043e cpyfe \[x30\]!, \[x0\]!, x1! +[^:]*: 190b0668 cpyfp \[x8\]!, \[x11\]!, x19! +[^:]*: 194b0668 cpyfm \[x8\]!, \[x11\]!, x19! +[^:]*: 198b0668 cpyfe \[x8\]!, \[x11\]!, x19! +[^:]*: 190187c0 cpyfprn \[x0\]!, \[x1\]!, x30! +[^:]*: 194187c0 cpyfmrn \[x0\]!, \[x1\]!, x30! +[^:]*: 198187c0 cpyfern \[x0\]!, \[x1\]!, x30! +[^:]*: 191e841d cpyfprn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e841d cpyfmrn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e841d cpyfern \[x29\]!, \[x30\]!, x0! +[^:]*: 1900843e cpyfprn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940843e cpyfmrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980843e cpyfern \[x30\]!, \[x0\]!, x1! +[^:]*: 190b8668 cpyfprn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b8668 cpyfmrn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b8668 cpyfern \[x8\]!, \[x11\]!, x19! +[^:]*: 190147c0 cpyfpwn \[x0\]!, \[x1\]!, x30! +[^:]*: 194147c0 cpyfmwn \[x0\]!, \[x1\]!, x30! +[^:]*: 198147c0 cpyfewn \[x0\]!, \[x1\]!, x30! +[^:]*: 191e441d cpyfpwn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e441d cpyfmwn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e441d cpyfewn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900443e cpyfpwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940443e cpyfmwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980443e cpyfewn \[x30\]!, \[x0\]!, x1! +[^:]*: 190b4668 cpyfpwn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b4668 cpyfmwn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b4668 cpyfewn \[x8\]!, \[x11\]!, x19! +[^:]*: 1901c7c0 cpyfpn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941c7c0 cpyfmn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981c7c0 cpyfen \[x0\]!, \[x1\]!, x30! +[^:]*: 191ec41d cpyfpn \[x29\]!, \[x30\]!, x0! +[^:]*: 195ec41d cpyfmn \[x29\]!, \[x30\]!, x0! +[^:]*: 199ec41d cpyfen \[x29\]!, \[x30\]!, x0! +[^:]*: 1900c43e cpyfpn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940c43e cpyfmn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980c43e cpyfen \[x30\]!, \[x0\]!, x1! +[^:]*: 190bc668 cpyfpn \[x8\]!, \[x11\]!, x19! +[^:]*: 194bc668 cpyfmn \[x8\]!, \[x11\]!, x19! +[^:]*: 198bc668 cpyfen \[x8\]!, \[x11\]!, x19! +[^:]*: 190127c0 cpyfprt \[x0\]!, \[x1\]!, x30! +[^:]*: 194127c0 cpyfmrt \[x0\]!, \[x1\]!, x30! +[^:]*: 198127c0 cpyfert \[x0\]!, \[x1\]!, x30! +[^:]*: 191e241d cpyfprt \[x29\]!, \[x30\]!, x0! +[^:]*: 195e241d cpyfmrt \[x29\]!, \[x30\]!, x0! +[^:]*: 199e241d cpyfert \[x29\]!, \[x30\]!, x0! +[^:]*: 1900243e cpyfprt \[x30\]!, \[x0\]!, x1! +[^:]*: 1940243e cpyfmrt \[x30\]!, \[x0\]!, x1! +[^:]*: 1980243e cpyfert \[x30\]!, \[x0\]!, x1! +[^:]*: 190b2668 cpyfprt \[x8\]!, \[x11\]!, x19! +[^:]*: 194b2668 cpyfmrt \[x8\]!, \[x11\]!, x19! +[^:]*: 198b2668 cpyfert \[x8\]!, \[x11\]!, x19! +[^:]*: 1901a7c0 cpyfprtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941a7c0 cpyfmrtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981a7c0 cpyfertrn \[x0\]!, \[x1\]!, x30! +[^:]*: 191ea41d cpyfprtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 195ea41d cpyfmrtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 199ea41d cpyfertrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900a43e cpyfprtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940a43e cpyfmrtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980a43e cpyfertrn \[x30\]!, \[x0\]!, x1! +[^:]*: 190ba668 cpyfprtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 194ba668 cpyfmrtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 198ba668 cpyfertrn \[x8\]!, \[x11\]!, x19! +[^:]*: 190167c0 cpyfprtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 194167c0 cpyfmrtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 198167c0 cpyfertwn \[x0\]!, \[x1\]!, x30! +[^:]*: 191e641d cpyfprtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e641d cpyfmrtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e641d cpyfertwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900643e cpyfprtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940643e cpyfmrtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980643e cpyfertwn \[x30\]!, \[x0\]!, x1! +[^:]*: 190b6668 cpyfprtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b6668 cpyfmrtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b6668 cpyfertwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1901e7c0 cpyfprtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941e7c0 cpyfmrtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981e7c0 cpyfertn \[x0\]!, \[x1\]!, x30! +[^:]*: 191ee41d cpyfprtn \[x29\]!, \[x30\]!, x0! +[^:]*: 195ee41d cpyfmrtn \[x29\]!, \[x30\]!, x0! +[^:]*: 199ee41d cpyfertn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900e43e cpyfprtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940e43e cpyfmrtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980e43e cpyfertn \[x30\]!, \[x0\]!, x1! +[^:]*: 190be668 cpyfprtn \[x8\]!, \[x11\]!, x19! +[^:]*: 194be668 cpyfmrtn \[x8\]!, \[x11\]!, x19! +[^:]*: 198be668 cpyfertn \[x8\]!, \[x11\]!, x19! +[^:]*: 190117c0 cpyfpwt \[x0\]!, \[x1\]!, x30! +[^:]*: 194117c0 cpyfmwt \[x0\]!, \[x1\]!, x30! +[^:]*: 198117c0 cpyfewt \[x0\]!, \[x1\]!, x30! +[^:]*: 191e141d cpyfpwt \[x29\]!, \[x30\]!, x0! +[^:]*: 195e141d cpyfmwt \[x29\]!, \[x30\]!, x0! +[^:]*: 199e141d cpyfewt \[x29\]!, \[x30\]!, x0! +[^:]*: 1900143e cpyfpwt \[x30\]!, \[x0\]!, x1! +[^:]*: 1940143e cpyfmwt \[x30\]!, \[x0\]!, x1! +[^:]*: 1980143e cpyfewt \[x30\]!, \[x0\]!, x1! +[^:]*: 190b1668 cpyfpwt \[x8\]!, \[x11\]!, x19! +[^:]*: 194b1668 cpyfmwt \[x8\]!, \[x11\]!, x19! +[^:]*: 198b1668 cpyfewt \[x8\]!, \[x11\]!, x19! +[^:]*: 190197c0 cpyfpwtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 194197c0 cpyfmwtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 198197c0 cpyfewtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 191e941d cpyfpwtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e941d cpyfmwtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e941d cpyfewtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900943e cpyfpwtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940943e cpyfmwtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980943e cpyfewtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 190b9668 cpyfpwtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b9668 cpyfmwtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b9668 cpyfewtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 190157c0 cpyfpwtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 194157c0 cpyfmwtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 198157c0 cpyfewtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 191e541d cpyfpwtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e541d cpyfmwtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e541d cpyfewtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900543e cpyfpwtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940543e cpyfmwtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980543e cpyfewtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 190b5668 cpyfpwtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b5668 cpyfmwtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b5668 cpyfewtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1901d7c0 cpyfpwtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941d7c0 cpyfmwtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981d7c0 cpyfewtn \[x0\]!, \[x1\]!, x30! +[^:]*: 191ed41d cpyfpwtn \[x29\]!, \[x30\]!, x0! +[^:]*: 195ed41d cpyfmwtn \[x29\]!, \[x30\]!, x0! +[^:]*: 199ed41d cpyfewtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900d43e cpyfpwtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940d43e cpyfmwtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980d43e cpyfewtn \[x30\]!, \[x0\]!, x1! +[^:]*: 190bd668 cpyfpwtn \[x8\]!, \[x11\]!, x19! +[^:]*: 194bd668 cpyfmwtn \[x8\]!, \[x11\]!, x19! +[^:]*: 198bd668 cpyfewtn \[x8\]!, \[x11\]!, x19! +[^:]*: 190137c0 cpyfpt \[x0\]!, \[x1\]!, x30! +[^:]*: 194137c0 cpyfmt \[x0\]!, \[x1\]!, x30! +[^:]*: 198137c0 cpyfet \[x0\]!, \[x1\]!, x30! +[^:]*: 191e341d cpyfpt \[x29\]!, \[x30\]!, x0! +[^:]*: 195e341d cpyfmt \[x29\]!, \[x30\]!, x0! +[^:]*: 199e341d cpyfet \[x29\]!, \[x30\]!, x0! +[^:]*: 1900343e cpyfpt \[x30\]!, \[x0\]!, x1! +[^:]*: 1940343e cpyfmt \[x30\]!, \[x0\]!, x1! +[^:]*: 1980343e cpyfet \[x30\]!, \[x0\]!, x1! +[^:]*: 190b3668 cpyfpt \[x8\]!, \[x11\]!, x19! +[^:]*: 194b3668 cpyfmt \[x8\]!, \[x11\]!, x19! +[^:]*: 198b3668 cpyfet \[x8\]!, \[x11\]!, x19! +[^:]*: 1901b7c0 cpyfptrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941b7c0 cpyfmtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981b7c0 cpyfetrn \[x0\]!, \[x1\]!, x30! +[^:]*: 191eb41d cpyfptrn \[x29\]!, \[x30\]!, x0! +[^:]*: 195eb41d cpyfmtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 199eb41d cpyfetrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900b43e cpyfptrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940b43e cpyfmtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980b43e cpyfetrn \[x30\]!, \[x0\]!, x1! +[^:]*: 190bb668 cpyfptrn \[x8\]!, \[x11\]!, x19! +[^:]*: 194bb668 cpyfmtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 198bb668 cpyfetrn \[x8\]!, \[x11\]!, x19! +[^:]*: 190177c0 cpyfptwn \[x0\]!, \[x1\]!, x30! +[^:]*: 194177c0 cpyfmtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 198177c0 cpyfetwn \[x0\]!, \[x1\]!, x30! +[^:]*: 191e741d cpyfptwn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e741d cpyfmtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e741d cpyfetwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900743e cpyfptwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940743e cpyfmtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980743e cpyfetwn \[x30\]!, \[x0\]!, x1! +[^:]*: 190b7668 cpyfptwn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b7668 cpyfmtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b7668 cpyfetwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1901f7c0 cpyfptn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941f7c0 cpyfmtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981f7c0 cpyfetn \[x0\]!, \[x1\]!, x30! +[^:]*: 191ef41d cpyfptn \[x29\]!, \[x30\]!, x0! +[^:]*: 195ef41d cpyfmtn \[x29\]!, \[x30\]!, x0! +[^:]*: 199ef41d cpyfetn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900f43e cpyfptn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940f43e cpyfmtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980f43e cpyfetn \[x30\]!, \[x0\]!, x1! +[^:]*: 190bf668 cpyfptn \[x8\]!, \[x11\]!, x19! +[^:]*: 194bf668 cpyfmtn \[x8\]!, \[x11\]!, x19! +[^:]*: 198bf668 cpyfetn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0107c0 cpyp \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4107c0 cpym \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8107c0 cpye \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e041d cpyp \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e041d cpym \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e041d cpye \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00043e cpyp \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40043e cpym \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80043e cpye \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b0668 cpyp \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b0668 cpym \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b0668 cpye \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0187c0 cpyprn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4187c0 cpymrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8187c0 cpyern \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e841d cpyprn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e841d cpymrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e841d cpyern \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00843e cpyprn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40843e cpymrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80843e cpyern \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b8668 cpyprn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b8668 cpymrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b8668 cpyern \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0147c0 cpypwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4147c0 cpymwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8147c0 cpyewn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e441d cpypwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e441d cpymwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e441d cpyewn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00443e cpypwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40443e cpymwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80443e cpyewn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b4668 cpypwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b4668 cpymwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b4668 cpyewn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01c7c0 cpypn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41c7c0 cpymn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81c7c0 cpyen \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1ec41d cpypn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5ec41d cpymn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9ec41d cpyen \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00c43e cpypn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40c43e cpymn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80c43e cpyen \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0bc668 cpypn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4bc668 cpymn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8bc668 cpyen \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0127c0 cpyprt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4127c0 cpymrt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8127c0 cpyert \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e241d cpyprt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e241d cpymrt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e241d cpyert \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00243e cpyprt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40243e cpymrt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80243e cpyert \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b2668 cpyprt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b2668 cpymrt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b2668 cpyert \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01a7c0 cpyprtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41a7c0 cpymrtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81a7c0 cpyertrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1ea41d cpyprtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5ea41d cpymrtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9ea41d cpyertrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00a43e cpyprtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40a43e cpymrtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80a43e cpyertrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0ba668 cpyprtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4ba668 cpymrtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8ba668 cpyertrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0167c0 cpyprtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4167c0 cpymrtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8167c0 cpyertwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e641d cpyprtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e641d cpymrtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e641d cpyertwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00643e cpyprtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40643e cpymrtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80643e cpyertwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b6668 cpyprtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b6668 cpymrtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b6668 cpyertwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01e7c0 cpyprtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41e7c0 cpymrtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81e7c0 cpyertn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1ee41d cpyprtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5ee41d cpymrtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9ee41d cpyertn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00e43e cpyprtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40e43e cpymrtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80e43e cpyertn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0be668 cpyprtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4be668 cpymrtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8be668 cpyertn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0117c0 cpypwt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4117c0 cpymwt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8117c0 cpyewt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e141d cpypwt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e141d cpymwt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e141d cpyewt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00143e cpypwt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40143e cpymwt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80143e cpyewt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b1668 cpypwt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b1668 cpymwt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b1668 cpyewt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0197c0 cpypwtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4197c0 cpymwtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8197c0 cpyewtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e941d cpypwtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e941d cpymwtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e941d cpyewtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00943e cpypwtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40943e cpymwtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80943e cpyewtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b9668 cpypwtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b9668 cpymwtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b9668 cpyewtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0157c0 cpypwtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4157c0 cpymwtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8157c0 cpyewtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e541d cpypwtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e541d cpymwtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e541d cpyewtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00543e cpypwtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40543e cpymwtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80543e cpyewtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b5668 cpypwtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b5668 cpymwtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b5668 cpyewtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01d7c0 cpypwtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41d7c0 cpymwtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81d7c0 cpyewtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1ed41d cpypwtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5ed41d cpymwtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9ed41d cpyewtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00d43e cpypwtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40d43e cpymwtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80d43e cpyewtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0bd668 cpypwtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4bd668 cpymwtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8bd668 cpyewtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0137c0 cpypt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4137c0 cpymt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8137c0 cpyet \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e341d cpypt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e341d cpymt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e341d cpyet \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00343e cpypt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40343e cpymt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80343e cpyet \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b3668 cpypt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b3668 cpymt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b3668 cpyet \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01b7c0 cpyptrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41b7c0 cpymtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81b7c0 cpyetrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1eb41d cpyptrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5eb41d cpymtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9eb41d cpyetrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00b43e cpyptrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40b43e cpymtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80b43e cpyetrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0bb668 cpyptrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4bb668 cpymtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8bb668 cpyetrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0177c0 cpyptwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4177c0 cpymtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8177c0 cpyetwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e741d cpyptwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e741d cpymtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e741d cpyetwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00743e cpyptwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40743e cpymtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80743e cpyetwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b7668 cpyptwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b7668 cpymtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b7668 cpyetwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01f7c0 cpyptn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41f7c0 cpymtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81f7c0 cpyetn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1ef41d cpyptn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5ef41d cpymtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9ef41d cpyetn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00f43e cpyptn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40f43e cpymtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80f43e cpyetn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0bf668 cpyptn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4bf668 cpymtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8bf668 cpyetn \[x8\]!, \[x11\]!, x19! +[^:]*: 19de0420 setp \[x0\]!, x1!, x30 +[^:]*: 19de4420 setm \[x0\]!, x1!, x30 +[^:]*: 19de8420 sete \[x0\]!, x1!, x30 +[^:]*: 19c007dd setp \[x29\]!, x30!, x0 +[^:]*: 19c047dd setm \[x29\]!, x30!, x0 +[^:]*: 19c087dd sete \[x29\]!, x30!, x0 +[^:]*: 19df041e setp \[x30\]!, x0!, xzr +[^:]*: 19df441e setm \[x30\]!, x0!, xzr +[^:]*: 19df841e sete \[x30\]!, x0!, xzr +[^:]*: 19d70668 setp \[x8\]!, x19!, x23 +[^:]*: 19d74668 setm \[x8\]!, x19!, x23 +[^:]*: 19d78668 sete \[x8\]!, x19!, x23 +[^:]*: 19df0668 setp \[x8\]!, x19!, xzr +[^:]*: 19df4668 setm \[x8\]!, x19!, xzr +[^:]*: 19df8668 sete \[x8\]!, x19!, xzr +[^:]*: 19de1420 setpt \[x0\]!, x1!, x30 +[^:]*: 19de5420 setmt \[x0\]!, x1!, x30 +[^:]*: 19de9420 setet \[x0\]!, x1!, x30 +[^:]*: 19c017dd setpt \[x29\]!, x30!, x0 +[^:]*: 19c057dd setmt \[x29\]!, x30!, x0 +[^:]*: 19c097dd setet \[x29\]!, x30!, x0 +[^:]*: 19df141e setpt \[x30\]!, x0!, xzr +[^:]*: 19df541e setmt \[x30\]!, x0!, xzr +[^:]*: 19df941e setet \[x30\]!, x0!, xzr +[^:]*: 19d71668 setpt \[x8\]!, x19!, x23 +[^:]*: 19d75668 setmt \[x8\]!, x19!, x23 +[^:]*: 19d79668 setet \[x8\]!, x19!, x23 +[^:]*: 19df1668 setpt \[x8\]!, x19!, xzr +[^:]*: 19df5668 setmt \[x8\]!, x19!, xzr +[^:]*: 19df9668 setet \[x8\]!, x19!, xzr +[^:]*: 19de2420 setpn \[x0\]!, x1!, x30 +[^:]*: 19de6420 setmn \[x0\]!, x1!, x30 +[^:]*: 19dea420 seten \[x0\]!, x1!, x30 +[^:]*: 19c027dd setpn \[x29\]!, x30!, x0 +[^:]*: 19c067dd setmn \[x29\]!, x30!, x0 +[^:]*: 19c0a7dd seten \[x29\]!, x30!, x0 +[^:]*: 19df241e setpn \[x30\]!, x0!, xzr +[^:]*: 19df641e setmn \[x30\]!, x0!, xzr +[^:]*: 19dfa41e seten \[x30\]!, x0!, xzr +[^:]*: 19d72668 setpn \[x8\]!, x19!, x23 +[^:]*: 19d76668 setmn \[x8\]!, x19!, x23 +[^:]*: 19d7a668 seten \[x8\]!, x19!, x23 +[^:]*: 19df2668 setpn \[x8\]!, x19!, xzr +[^:]*: 19df6668 setmn \[x8\]!, x19!, xzr +[^:]*: 19dfa668 seten \[x8\]!, x19!, xzr +[^:]*: 19de3420 setptn \[x0\]!, x1!, x30 +[^:]*: 19de7420 setmtn \[x0\]!, x1!, x30 +[^:]*: 19deb420 setetn \[x0\]!, x1!, x30 +[^:]*: 19c037dd setptn \[x29\]!, x30!, x0 +[^:]*: 19c077dd setmtn \[x29\]!, x30!, x0 +[^:]*: 19c0b7dd setetn \[x29\]!, x30!, x0 +[^:]*: 19df341e setptn \[x30\]!, x0!, xzr +[^:]*: 19df741e setmtn \[x30\]!, x0!, xzr +[^:]*: 19dfb41e setetn \[x30\]!, x0!, xzr +[^:]*: 19d73668 setptn \[x8\]!, x19!, x23 +[^:]*: 19d77668 setmtn \[x8\]!, x19!, x23 +[^:]*: 19d7b668 setetn \[x8\]!, x19!, x23 +[^:]*: 19df3668 setptn \[x8\]!, x19!, xzr +[^:]*: 19df7668 setmtn \[x8\]!, x19!, xzr +[^:]*: 19dfb668 setetn \[x8\]!, x19!, xzr +[^:]*: 1dde0420 setgp \[x0\]!, x1!, x30 +[^:]*: 1dde4420 setgm \[x0\]!, x1!, x30 +[^:]*: 1dde8420 setge \[x0\]!, x1!, x30 +[^:]*: 1dc007dd setgp \[x29\]!, x30!, x0 +[^:]*: 1dc047dd setgm \[x29\]!, x30!, x0 +[^:]*: 1dc087dd setge \[x29\]!, x30!, x0 +[^:]*: 1ddf041e setgp \[x30\]!, x0!, xzr +[^:]*: 1ddf441e setgm \[x30\]!, x0!, xzr +[^:]*: 1ddf841e setge \[x30\]!, x0!, xzr +[^:]*: 1dd70668 setgp \[x8\]!, x19!, x23 +[^:]*: 1dd74668 setgm \[x8\]!, x19!, x23 +[^:]*: 1dd78668 setge \[x8\]!, x19!, x23 +[^:]*: 1ddf0668 setgp \[x8\]!, x19!, xzr +[^:]*: 1ddf4668 setgm \[x8\]!, x19!, xzr +[^:]*: 1ddf8668 setge \[x8\]!, x19!, xzr +[^:]*: 1dde1420 setgpt \[x0\]!, x1!, x30 +[^:]*: 1dde5420 setgmt \[x0\]!, x1!, x30 +[^:]*: 1dde9420 setget \[x0\]!, x1!, x30 +[^:]*: 1dc017dd setgpt \[x29\]!, x30!, x0 +[^:]*: 1dc057dd setgmt \[x29\]!, x30!, x0 +[^:]*: 1dc097dd setget \[x29\]!, x30!, x0 +[^:]*: 1ddf141e setgpt \[x30\]!, x0!, xzr +[^:]*: 1ddf541e setgmt \[x30\]!, x0!, xzr +[^:]*: 1ddf941e setget \[x30\]!, x0!, xzr +[^:]*: 1dd71668 setgpt \[x8\]!, x19!, x23 +[^:]*: 1dd75668 setgmt \[x8\]!, x19!, x23 +[^:]*: 1dd79668 setget \[x8\]!, x19!, x23 +[^:]*: 1ddf1668 setgpt \[x8\]!, x19!, xzr +[^:]*: 1ddf5668 setgmt \[x8\]!, x19!, xzr +[^:]*: 1ddf9668 setget \[x8\]!, x19!, xzr +[^:]*: 1dde2420 setgpn \[x0\]!, x1!, x30 +[^:]*: 1dde6420 setgmn \[x0\]!, x1!, x30 +[^:]*: 1ddea420 setgen \[x0\]!, x1!, x30 +[^:]*: 1dc027dd setgpn \[x29\]!, x30!, x0 +[^:]*: 1dc067dd setgmn \[x29\]!, x30!, x0 +[^:]*: 1dc0a7dd setgen \[x29\]!, x30!, x0 +[^:]*: 1ddf241e setgpn \[x30\]!, x0!, xzr +[^:]*: 1ddf641e setgmn \[x30\]!, x0!, xzr +[^:]*: 1ddfa41e setgen \[x30\]!, x0!, xzr +[^:]*: 1dd72668 setgpn \[x8\]!, x19!, x23 +[^:]*: 1dd76668 setgmn \[x8\]!, x19!, x23 +[^:]*: 1dd7a668 setgen \[x8\]!, x19!, x23 +[^:]*: 1ddf2668 setgpn \[x8\]!, x19!, xzr +[^:]*: 1ddf6668 setgmn \[x8\]!, x19!, xzr +[^:]*: 1ddfa668 setgen \[x8\]!, x19!, xzr +[^:]*: 1dde3420 setgptn \[x0\]!, x1!, x30 +[^:]*: 1dde7420 setgmtn \[x0\]!, x1!, x30 +[^:]*: 1ddeb420 setgetn \[x0\]!, x1!, x30 +[^:]*: 1dc037dd setgptn \[x29\]!, x30!, x0 +[^:]*: 1dc077dd setgmtn \[x29\]!, x30!, x0 +[^:]*: 1dc0b7dd setgetn \[x29\]!, x30!, x0 +[^:]*: 1ddf341e setgptn \[x30\]!, x0!, xzr +[^:]*: 1ddf741e setgmtn \[x30\]!, x0!, xzr +[^:]*: 1ddfb41e setgetn \[x30\]!, x0!, xzr +[^:]*: 1dd73668 setgptn \[x8\]!, x19!, x23 +[^:]*: 1dd77668 setgmtn \[x8\]!, x19!, x23 +[^:]*: 1dd7b668 setgetn \[x8\]!, x19!, x23 +[^:]*: 1ddf3668 setgptn \[x8\]!, x19!, xzr +[^:]*: 1ddf7668 setgmtn \[x8\]!, x19!, xzr +[^:]*: 1ddfb668 setgetn \[x8\]!, x19!, xzr +[^:]*: 190107c0 cpyfp \[x0\]!, \[x1\]!, x30! +[^:]*: 194107c0 cpyfm \[x0\]!, \[x1\]!, x30! +[^:]*: 198107c0 cpyfe \[x0\]!, \[x1\]!, x30! +[^:]*: 191e041d cpyfp \[x29\]!, \[x30\]!, x0! +[^:]*: 195e041d cpyfm \[x29\]!, \[x30\]!, x0! +[^:]*: 199e041d cpyfe \[x29\]!, \[x30\]!, x0! +[^:]*: 1900043e cpyfp \[x30\]!, \[x0\]!, x1! +[^:]*: 1940043e cpyfm \[x30\]!, \[x0\]!, x1! +[^:]*: 1980043e cpyfe \[x30\]!, \[x0\]!, x1! +[^:]*: 190b0668 cpyfp \[x8\]!, \[x11\]!, x19! +[^:]*: 194b0668 cpyfm \[x8\]!, \[x11\]!, x19! +[^:]*: 198b0668 cpyfe \[x8\]!, \[x11\]!, x19! +[^:]*: 190187c0 cpyfprn \[x0\]!, \[x1\]!, x30! +[^:]*: 194187c0 cpyfmrn \[x0\]!, \[x1\]!, x30! +[^:]*: 198187c0 cpyfern \[x0\]!, \[x1\]!, x30! +[^:]*: 191e841d cpyfprn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e841d cpyfmrn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e841d cpyfern \[x29\]!, \[x30\]!, x0! +[^:]*: 1900843e cpyfprn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940843e cpyfmrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980843e cpyfern \[x30\]!, \[x0\]!, x1! +[^:]*: 190b8668 cpyfprn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b8668 cpyfmrn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b8668 cpyfern \[x8\]!, \[x11\]!, x19! +[^:]*: 190147c0 cpyfpwn \[x0\]!, \[x1\]!, x30! +[^:]*: 194147c0 cpyfmwn \[x0\]!, \[x1\]!, x30! +[^:]*: 198147c0 cpyfewn \[x0\]!, \[x1\]!, x30! +[^:]*: 191e441d cpyfpwn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e441d cpyfmwn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e441d cpyfewn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900443e cpyfpwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940443e cpyfmwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980443e cpyfewn \[x30\]!, \[x0\]!, x1! +[^:]*: 190b4668 cpyfpwn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b4668 cpyfmwn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b4668 cpyfewn \[x8\]!, \[x11\]!, x19! +[^:]*: 1901c7c0 cpyfpn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941c7c0 cpyfmn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981c7c0 cpyfen \[x0\]!, \[x1\]!, x30! +[^:]*: 191ec41d cpyfpn \[x29\]!, \[x30\]!, x0! +[^:]*: 195ec41d cpyfmn \[x29\]!, \[x30\]!, x0! +[^:]*: 199ec41d cpyfen \[x29\]!, \[x30\]!, x0! +[^:]*: 1900c43e cpyfpn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940c43e cpyfmn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980c43e cpyfen \[x30\]!, \[x0\]!, x1! +[^:]*: 190bc668 cpyfpn \[x8\]!, \[x11\]!, x19! +[^:]*: 194bc668 cpyfmn \[x8\]!, \[x11\]!, x19! +[^:]*: 198bc668 cpyfen \[x8\]!, \[x11\]!, x19! +[^:]*: 190127c0 cpyfprt \[x0\]!, \[x1\]!, x30! +[^:]*: 194127c0 cpyfmrt \[x0\]!, \[x1\]!, x30! +[^:]*: 198127c0 cpyfert \[x0\]!, \[x1\]!, x30! +[^:]*: 191e241d cpyfprt \[x29\]!, \[x30\]!, x0! +[^:]*: 195e241d cpyfmrt \[x29\]!, \[x30\]!, x0! +[^:]*: 199e241d cpyfert \[x29\]!, \[x30\]!, x0! +[^:]*: 1900243e cpyfprt \[x30\]!, \[x0\]!, x1! +[^:]*: 1940243e cpyfmrt \[x30\]!, \[x0\]!, x1! +[^:]*: 1980243e cpyfert \[x30\]!, \[x0\]!, x1! +[^:]*: 190b2668 cpyfprt \[x8\]!, \[x11\]!, x19! +[^:]*: 194b2668 cpyfmrt \[x8\]!, \[x11\]!, x19! +[^:]*: 198b2668 cpyfert \[x8\]!, \[x11\]!, x19! +[^:]*: 1901a7c0 cpyfprtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941a7c0 cpyfmrtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981a7c0 cpyfertrn \[x0\]!, \[x1\]!, x30! +[^:]*: 191ea41d cpyfprtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 195ea41d cpyfmrtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 199ea41d cpyfertrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900a43e cpyfprtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940a43e cpyfmrtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980a43e cpyfertrn \[x30\]!, \[x0\]!, x1! +[^:]*: 190ba668 cpyfprtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 194ba668 cpyfmrtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 198ba668 cpyfertrn \[x8\]!, \[x11\]!, x19! +[^:]*: 190167c0 cpyfprtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 194167c0 cpyfmrtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 198167c0 cpyfertwn \[x0\]!, \[x1\]!, x30! +[^:]*: 191e641d cpyfprtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e641d cpyfmrtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e641d cpyfertwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900643e cpyfprtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940643e cpyfmrtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980643e cpyfertwn \[x30\]!, \[x0\]!, x1! +[^:]*: 190b6668 cpyfprtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b6668 cpyfmrtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b6668 cpyfertwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1901e7c0 cpyfprtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941e7c0 cpyfmrtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981e7c0 cpyfertn \[x0\]!, \[x1\]!, x30! +[^:]*: 191ee41d cpyfprtn \[x29\]!, \[x30\]!, x0! +[^:]*: 195ee41d cpyfmrtn \[x29\]!, \[x30\]!, x0! +[^:]*: 199ee41d cpyfertn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900e43e cpyfprtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940e43e cpyfmrtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980e43e cpyfertn \[x30\]!, \[x0\]!, x1! +[^:]*: 190be668 cpyfprtn \[x8\]!, \[x11\]!, x19! +[^:]*: 194be668 cpyfmrtn \[x8\]!, \[x11\]!, x19! +[^:]*: 198be668 cpyfertn \[x8\]!, \[x11\]!, x19! +[^:]*: 190117c0 cpyfpwt \[x0\]!, \[x1\]!, x30! +[^:]*: 194117c0 cpyfmwt \[x0\]!, \[x1\]!, x30! +[^:]*: 198117c0 cpyfewt \[x0\]!, \[x1\]!, x30! +[^:]*: 191e141d cpyfpwt \[x29\]!, \[x30\]!, x0! +[^:]*: 195e141d cpyfmwt \[x29\]!, \[x30\]!, x0! +[^:]*: 199e141d cpyfewt \[x29\]!, \[x30\]!, x0! +[^:]*: 1900143e cpyfpwt \[x30\]!, \[x0\]!, x1! +[^:]*: 1940143e cpyfmwt \[x30\]!, \[x0\]!, x1! +[^:]*: 1980143e cpyfewt \[x30\]!, \[x0\]!, x1! +[^:]*: 190b1668 cpyfpwt \[x8\]!, \[x11\]!, x19! +[^:]*: 194b1668 cpyfmwt \[x8\]!, \[x11\]!, x19! +[^:]*: 198b1668 cpyfewt \[x8\]!, \[x11\]!, x19! +[^:]*: 190197c0 cpyfpwtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 194197c0 cpyfmwtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 198197c0 cpyfewtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 191e941d cpyfpwtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e941d cpyfmwtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e941d cpyfewtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900943e cpyfpwtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940943e cpyfmwtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980943e cpyfewtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 190b9668 cpyfpwtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b9668 cpyfmwtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b9668 cpyfewtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 190157c0 cpyfpwtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 194157c0 cpyfmwtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 198157c0 cpyfewtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 191e541d cpyfpwtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e541d cpyfmwtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e541d cpyfewtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900543e cpyfpwtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940543e cpyfmwtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980543e cpyfewtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 190b5668 cpyfpwtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b5668 cpyfmwtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b5668 cpyfewtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1901d7c0 cpyfpwtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941d7c0 cpyfmwtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981d7c0 cpyfewtn \[x0\]!, \[x1\]!, x30! +[^:]*: 191ed41d cpyfpwtn \[x29\]!, \[x30\]!, x0! +[^:]*: 195ed41d cpyfmwtn \[x29\]!, \[x30\]!, x0! +[^:]*: 199ed41d cpyfewtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900d43e cpyfpwtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940d43e cpyfmwtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980d43e cpyfewtn \[x30\]!, \[x0\]!, x1! +[^:]*: 190bd668 cpyfpwtn \[x8\]!, \[x11\]!, x19! +[^:]*: 194bd668 cpyfmwtn \[x8\]!, \[x11\]!, x19! +[^:]*: 198bd668 cpyfewtn \[x8\]!, \[x11\]!, x19! +[^:]*: 190137c0 cpyfpt \[x0\]!, \[x1\]!, x30! +[^:]*: 194137c0 cpyfmt \[x0\]!, \[x1\]!, x30! +[^:]*: 198137c0 cpyfet \[x0\]!, \[x1\]!, x30! +[^:]*: 191e341d cpyfpt \[x29\]!, \[x30\]!, x0! +[^:]*: 195e341d cpyfmt \[x29\]!, \[x30\]!, x0! +[^:]*: 199e341d cpyfet \[x29\]!, \[x30\]!, x0! +[^:]*: 1900343e cpyfpt \[x30\]!, \[x0\]!, x1! +[^:]*: 1940343e cpyfmt \[x30\]!, \[x0\]!, x1! +[^:]*: 1980343e cpyfet \[x30\]!, \[x0\]!, x1! +[^:]*: 190b3668 cpyfpt \[x8\]!, \[x11\]!, x19! +[^:]*: 194b3668 cpyfmt \[x8\]!, \[x11\]!, x19! +[^:]*: 198b3668 cpyfet \[x8\]!, \[x11\]!, x19! +[^:]*: 1901b7c0 cpyfptrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941b7c0 cpyfmtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981b7c0 cpyfetrn \[x0\]!, \[x1\]!, x30! +[^:]*: 191eb41d cpyfptrn \[x29\]!, \[x30\]!, x0! +[^:]*: 195eb41d cpyfmtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 199eb41d cpyfetrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900b43e cpyfptrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940b43e cpyfmtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980b43e cpyfetrn \[x30\]!, \[x0\]!, x1! +[^:]*: 190bb668 cpyfptrn \[x8\]!, \[x11\]!, x19! +[^:]*: 194bb668 cpyfmtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 198bb668 cpyfetrn \[x8\]!, \[x11\]!, x19! +[^:]*: 190177c0 cpyfptwn \[x0\]!, \[x1\]!, x30! +[^:]*: 194177c0 cpyfmtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 198177c0 cpyfetwn \[x0\]!, \[x1\]!, x30! +[^:]*: 191e741d cpyfptwn \[x29\]!, \[x30\]!, x0! +[^:]*: 195e741d cpyfmtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 199e741d cpyfetwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900743e cpyfptwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940743e cpyfmtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980743e cpyfetwn \[x30\]!, \[x0\]!, x1! +[^:]*: 190b7668 cpyfptwn \[x8\]!, \[x11\]!, x19! +[^:]*: 194b7668 cpyfmtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 198b7668 cpyfetwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1901f7c0 cpyfptn \[x0\]!, \[x1\]!, x30! +[^:]*: 1941f7c0 cpyfmtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1981f7c0 cpyfetn \[x0\]!, \[x1\]!, x30! +[^:]*: 191ef41d cpyfptn \[x29\]!, \[x30\]!, x0! +[^:]*: 195ef41d cpyfmtn \[x29\]!, \[x30\]!, x0! +[^:]*: 199ef41d cpyfetn \[x29\]!, \[x30\]!, x0! +[^:]*: 1900f43e cpyfptn \[x30\]!, \[x0\]!, x1! +[^:]*: 1940f43e cpyfmtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1980f43e cpyfetn \[x30\]!, \[x0\]!, x1! +[^:]*: 190bf668 cpyfptn \[x8\]!, \[x11\]!, x19! +[^:]*: 194bf668 cpyfmtn \[x8\]!, \[x11\]!, x19! +[^:]*: 198bf668 cpyfetn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0107c0 cpyp \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4107c0 cpym \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8107c0 cpye \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e041d cpyp \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e041d cpym \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e041d cpye \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00043e cpyp \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40043e cpym \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80043e cpye \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b0668 cpyp \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b0668 cpym \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b0668 cpye \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0187c0 cpyprn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4187c0 cpymrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8187c0 cpyern \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e841d cpyprn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e841d cpymrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e841d cpyern \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00843e cpyprn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40843e cpymrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80843e cpyern \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b8668 cpyprn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b8668 cpymrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b8668 cpyern \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0147c0 cpypwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4147c0 cpymwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8147c0 cpyewn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e441d cpypwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e441d cpymwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e441d cpyewn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00443e cpypwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40443e cpymwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80443e cpyewn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b4668 cpypwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b4668 cpymwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b4668 cpyewn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01c7c0 cpypn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41c7c0 cpymn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81c7c0 cpyen \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1ec41d cpypn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5ec41d cpymn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9ec41d cpyen \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00c43e cpypn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40c43e cpymn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80c43e cpyen \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0bc668 cpypn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4bc668 cpymn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8bc668 cpyen \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0127c0 cpyprt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4127c0 cpymrt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8127c0 cpyert \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e241d cpyprt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e241d cpymrt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e241d cpyert \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00243e cpyprt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40243e cpymrt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80243e cpyert \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b2668 cpyprt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b2668 cpymrt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b2668 cpyert \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01a7c0 cpyprtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41a7c0 cpymrtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81a7c0 cpyertrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1ea41d cpyprtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5ea41d cpymrtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9ea41d cpyertrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00a43e cpyprtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40a43e cpymrtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80a43e cpyertrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0ba668 cpyprtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4ba668 cpymrtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8ba668 cpyertrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0167c0 cpyprtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4167c0 cpymrtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8167c0 cpyertwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e641d cpyprtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e641d cpymrtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e641d cpyertwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00643e cpyprtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40643e cpymrtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80643e cpyertwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b6668 cpyprtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b6668 cpymrtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b6668 cpyertwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01e7c0 cpyprtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41e7c0 cpymrtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81e7c0 cpyertn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1ee41d cpyprtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5ee41d cpymrtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9ee41d cpyertn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00e43e cpyprtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40e43e cpymrtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80e43e cpyertn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0be668 cpyprtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4be668 cpymrtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8be668 cpyertn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0117c0 cpypwt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4117c0 cpymwt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8117c0 cpyewt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e141d cpypwt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e141d cpymwt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e141d cpyewt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00143e cpypwt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40143e cpymwt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80143e cpyewt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b1668 cpypwt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b1668 cpymwt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b1668 cpyewt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0197c0 cpypwtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4197c0 cpymwtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8197c0 cpyewtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e941d cpypwtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e941d cpymwtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e941d cpyewtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00943e cpypwtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40943e cpymwtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80943e cpyewtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b9668 cpypwtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b9668 cpymwtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b9668 cpyewtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0157c0 cpypwtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4157c0 cpymwtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8157c0 cpyewtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e541d cpypwtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e541d cpymwtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e541d cpyewtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00543e cpypwtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40543e cpymwtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80543e cpyewtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b5668 cpypwtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b5668 cpymwtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b5668 cpyewtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01d7c0 cpypwtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41d7c0 cpymwtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81d7c0 cpyewtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1ed41d cpypwtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5ed41d cpymwtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9ed41d cpyewtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00d43e cpypwtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40d43e cpymwtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80d43e cpyewtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0bd668 cpypwtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4bd668 cpymwtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8bd668 cpyewtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0137c0 cpypt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4137c0 cpymt \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8137c0 cpyet \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e341d cpypt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e341d cpymt \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e341d cpyet \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00343e cpypt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40343e cpymt \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80343e cpyet \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b3668 cpypt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b3668 cpymt \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b3668 cpyet \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01b7c0 cpyptrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41b7c0 cpymtrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81b7c0 cpyetrn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1eb41d cpyptrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5eb41d cpymtrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9eb41d cpyetrn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00b43e cpyptrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40b43e cpymtrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80b43e cpyetrn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0bb668 cpyptrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4bb668 cpymtrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8bb668 cpyetrn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d0177c0 cpyptwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d4177c0 cpymtwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d8177c0 cpyetwn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1e741d cpyptwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5e741d cpymtwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9e741d cpyetwn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00743e cpyptwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40743e cpymtwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80743e cpyetwn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0b7668 cpyptwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4b7668 cpymtwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8b7668 cpyetwn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d01f7c0 cpyptn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d41f7c0 cpymtn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d81f7c0 cpyetn \[x0\]!, \[x1\]!, x30! +[^:]*: 1d1ef41d cpyptn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d5ef41d cpymtn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d9ef41d cpyetn \[x29\]!, \[x30\]!, x0! +[^:]*: 1d00f43e cpyptn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d40f43e cpymtn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d80f43e cpyetn \[x30\]!, \[x0\]!, x1! +[^:]*: 1d0bf668 cpyptn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d4bf668 cpymtn \[x8\]!, \[x11\]!, x19! +[^:]*: 1d8bf668 cpyetn \[x8\]!, \[x11\]!, x19! +[^:]*: 19de0420 setp \[x0\]!, x1!, x30 +[^:]*: 19de4420 setm \[x0\]!, x1!, x30 +[^:]*: 19de8420 sete \[x0\]!, x1!, x30 +[^:]*: 19c007dd setp \[x29\]!, x30!, x0 +[^:]*: 19c047dd setm \[x29\]!, x30!, x0 +[^:]*: 19c087dd sete \[x29\]!, x30!, x0 +[^:]*: 19df041e setp \[x30\]!, x0!, xzr +[^:]*: 19df441e setm \[x30\]!, x0!, xzr +[^:]*: 19df841e sete \[x30\]!, x0!, xzr +[^:]*: 19d70668 setp \[x8\]!, x19!, x23 +[^:]*: 19d74668 setm \[x8\]!, x19!, x23 +[^:]*: 19d78668 sete \[x8\]!, x19!, x23 +[^:]*: 19df0668 setp \[x8\]!, x19!, xzr +[^:]*: 19df4668 setm \[x8\]!, x19!, xzr +[^:]*: 19df8668 sete \[x8\]!, x19!, xzr +[^:]*: 19de1420 setpt \[x0\]!, x1!, x30 +[^:]*: 19de5420 setmt \[x0\]!, x1!, x30 +[^:]*: 19de9420 setet \[x0\]!, x1!, x30 +[^:]*: 19c017dd setpt \[x29\]!, x30!, x0 +[^:]*: 19c057dd setmt \[x29\]!, x30!, x0 +[^:]*: 19c097dd setet \[x29\]!, x30!, x0 +[^:]*: 19df141e setpt \[x30\]!, x0!, xzr +[^:]*: 19df541e setmt \[x30\]!, x0!, xzr +[^:]*: 19df941e setet \[x30\]!, x0!, xzr +[^:]*: 19d71668 setpt \[x8\]!, x19!, x23 +[^:]*: 19d75668 setmt \[x8\]!, x19!, x23 +[^:]*: 19d79668 setet \[x8\]!, x19!, x23 +[^:]*: 19df1668 setpt \[x8\]!, x19!, xzr +[^:]*: 19df5668 setmt \[x8\]!, x19!, xzr +[^:]*: 19df9668 setet \[x8\]!, x19!, xzr +[^:]*: 19de2420 setpn \[x0\]!, x1!, x30 +[^:]*: 19de6420 setmn \[x0\]!, x1!, x30 +[^:]*: 19dea420 seten \[x0\]!, x1!, x30 +[^:]*: 19c027dd setpn \[x29\]!, x30!, x0 +[^:]*: 19c067dd setmn \[x29\]!, x30!, x0 +[^:]*: 19c0a7dd seten \[x29\]!, x30!, x0 +[^:]*: 19df241e setpn \[x30\]!, x0!, xzr +[^:]*: 19df641e setmn \[x30\]!, x0!, xzr +[^:]*: 19dfa41e seten \[x30\]!, x0!, xzr +[^:]*: 19d72668 setpn \[x8\]!, x19!, x23 +[^:]*: 19d76668 setmn \[x8\]!, x19!, x23 +[^:]*: 19d7a668 seten \[x8\]!, x19!, x23 +[^:]*: 19df2668 setpn \[x8\]!, x19!, xzr +[^:]*: 19df6668 setmn \[x8\]!, x19!, xzr +[^:]*: 19dfa668 seten \[x8\]!, x19!, xzr +[^:]*: 19de3420 setptn \[x0\]!, x1!, x30 +[^:]*: 19de7420 setmtn \[x0\]!, x1!, x30 +[^:]*: 19deb420 setetn \[x0\]!, x1!, x30 +[^:]*: 19c037dd setptn \[x29\]!, x30!, x0 +[^:]*: 19c077dd setmtn \[x29\]!, x30!, x0 +[^:]*: 19c0b7dd setetn \[x29\]!, x30!, x0 +[^:]*: 19df341e setptn \[x30\]!, x0!, xzr +[^:]*: 19df741e setmtn \[x30\]!, x0!, xzr +[^:]*: 19dfb41e setetn \[x30\]!, x0!, xzr +[^:]*: 19d73668 setptn \[x8\]!, x19!, x23 +[^:]*: 19d77668 setmtn \[x8\]!, x19!, x23 +[^:]*: 19d7b668 setetn \[x8\]!, x19!, x23 +[^:]*: 19df3668 setptn \[x8\]!, x19!, xzr +[^:]*: 19df7668 setmtn \[x8\]!, x19!, xzr +[^:]*: 19dfb668 setetn \[x8\]!, x19!, xzr +[^:]*: 1dde0420 setgp \[x0\]!, x1!, x30 +[^:]*: 1dde4420 setgm \[x0\]!, x1!, x30 +[^:]*: 1dde8420 setge \[x0\]!, x1!, x30 +[^:]*: 1dc007dd setgp \[x29\]!, x30!, x0 +[^:]*: 1dc047dd setgm \[x29\]!, x30!, x0 +[^:]*: 1dc087dd setge \[x29\]!, x30!, x0 +[^:]*: 1ddf041e setgp \[x30\]!, x0!, xzr +[^:]*: 1ddf441e setgm \[x30\]!, x0!, xzr +[^:]*: 1ddf841e setge \[x30\]!, x0!, xzr +[^:]*: 1dd70668 setgp \[x8\]!, x19!, x23 +[^:]*: 1dd74668 setgm \[x8\]!, x19!, x23 +[^:]*: 1dd78668 setge \[x8\]!, x19!, x23 +[^:]*: 1ddf0668 setgp \[x8\]!, x19!, xzr +[^:]*: 1ddf4668 setgm \[x8\]!, x19!, xzr +[^:]*: 1ddf8668 setge \[x8\]!, x19!, xzr +[^:]*: 1dde1420 setgpt \[x0\]!, x1!, x30 +[^:]*: 1dde5420 setgmt \[x0\]!, x1!, x30 +[^:]*: 1dde9420 setget \[x0\]!, x1!, x30 +[^:]*: 1dc017dd setgpt \[x29\]!, x30!, x0 +[^:]*: 1dc057dd setgmt \[x29\]!, x30!, x0 +[^:]*: 1dc097dd setget \[x29\]!, x30!, x0 +[^:]*: 1ddf141e setgpt \[x30\]!, x0!, xzr +[^:]*: 1ddf541e setgmt \[x30\]!, x0!, xzr +[^:]*: 1ddf941e setget \[x30\]!, x0!, xzr +[^:]*: 1dd71668 setgpt \[x8\]!, x19!, x23 +[^:]*: 1dd75668 setgmt \[x8\]!, x19!, x23 +[^:]*: 1dd79668 setget \[x8\]!, x19!, x23 +[^:]*: 1ddf1668 setgpt \[x8\]!, x19!, xzr +[^:]*: 1ddf5668 setgmt \[x8\]!, x19!, xzr +[^:]*: 1ddf9668 setget \[x8\]!, x19!, xzr +[^:]*: 1dde2420 setgpn \[x0\]!, x1!, x30 +[^:]*: 1dde6420 setgmn \[x0\]!, x1!, x30 +[^:]*: 1ddea420 setgen \[x0\]!, x1!, x30 +[^:]*: 1dc027dd setgpn \[x29\]!, x30!, x0 +[^:]*: 1dc067dd setgmn \[x29\]!, x30!, x0 +[^:]*: 1dc0a7dd setgen \[x29\]!, x30!, x0 +[^:]*: 1ddf241e setgpn \[x30\]!, x0!, xzr +[^:]*: 1ddf641e setgmn \[x30\]!, x0!, xzr +[^:]*: 1ddfa41e setgen \[x30\]!, x0!, xzr +[^:]*: 1dd72668 setgpn \[x8\]!, x19!, x23 +[^:]*: 1dd76668 setgmn \[x8\]!, x19!, x23 +[^:]*: 1dd7a668 setgen \[x8\]!, x19!, x23 +[^:]*: 1ddf2668 setgpn \[x8\]!, x19!, xzr +[^:]*: 1ddf6668 setgmn \[x8\]!, x19!, xzr +[^:]*: 1ddfa668 setgen \[x8\]!, x19!, xzr +[^:]*: 1dde3420 setgptn \[x0\]!, x1!, x30 +[^:]*: 1dde7420 setgmtn \[x0\]!, x1!, x30 +[^:]*: 1ddeb420 setgetn \[x0\]!, x1!, x30 +[^:]*: 1dc037dd setgptn \[x29\]!, x30!, x0 +[^:]*: 1dc077dd setgmtn \[x29\]!, x30!, x0 +[^:]*: 1dc0b7dd setgetn \[x29\]!, x30!, x0 +[^:]*: 1ddf341e setgptn \[x30\]!, x0!, xzr +[^:]*: 1ddf741e setgmtn \[x30\]!, x0!, xzr +[^:]*: 1ddfb41e setgetn \[x30\]!, x0!, xzr +[^:]*: 1dd73668 setgptn \[x8\]!, x19!, x23 +[^:]*: 1dd77668 setgmtn \[x8\]!, x19!, x23 +[^:]*: 1dd7b668 setgetn \[x8\]!, x19!, x23 +[^:]*: 1ddf3668 setgptn \[x8\]!, x19!, xzr +[^:]*: 1ddf7668 setgmtn \[x8\]!, x19!, xzr +[^:]*: 1ddfb668 setgetn \[x8\]!, x19!, xzr diff --git a/gas/testsuite/gas/aarch64/mops.s b/gas/testsuite/gas/aarch64/mops.s new file mode 100644 index 0000000..5cd9e3a --- /dev/null +++ b/gas/testsuite/gas/aarch64/mops.s @@ -0,0 +1,66 @@ + .arch armv8.8-a+memtag + +dest .req x8 +src .req x11 +len .req x19 +data .req x23 +zero .req xzr + + .macro pme_seq, op, suffix, r1, r2, r3 + \op\()p\()\suffix \r1, \r2, \r3 + \op\()m\()\suffix \r1, \r2, \r3 + \op\()e\()\suffix \r1, \r2, \r3 + .endm + + .macro cpy_op1_op2, op, suffix + pme_seq \op, \suffix, [x0]!, [x1]!, x30! + pme_seq \op, \suffix, [x29]!, [x30]!, x0! + pme_seq \op, \suffix, [x30]!, [x0]!, x1! + pme_seq \op, \suffix, [dest]!, [src]!, len! + .endm + + .macro cpy_op1, op, suffix + cpy_op1_op2 \op, \suffix + cpy_op1_op2 \op, \suffix\()rn + cpy_op1_op2 \op, \suffix\()wn + cpy_op1_op2 \op, \suffix\()n + .endm + + .macro cpy_all, op + cpy_op1 \op + cpy_op1 \op, rt + cpy_op1 \op, wt + cpy_op1 \op, t + .endm + + .macro set_op1_op2, op, suffix + pme_seq \op, \suffix, [x0]!, x1!, x30 + pme_seq \op, \suffix, [x29]!, x30!, x0 + pme_seq \op, \suffix, [x30]!, x0!, xzr + pme_seq \op, \suffix, [dest]!, len!, data + pme_seq \op, \suffix, [dest]!, len!, zero + .endm + + .macro set_all, op + set_op1_op2 \op + set_op1_op2 \op, t + set_op1_op2 \op, n + set_op1_op2 \op, tn + .endm + + cpy_all cpyf + cpy_all cpy + + set_all set + set_all setg + + .arch armv8.7-a+mops + + cpy_all cpyf + cpy_all cpy + + set_all set + + .arch armv8.7-a+mops+memtag + + set_all setg diff --git a/gas/testsuite/gas/aarch64/mops_invalid.d b/gas/testsuite/gas/aarch64/mops_invalid.d new file mode 100644 index 0000000..af66fff --- /dev/null +++ b/gas/testsuite/gas/aarch64/mops_invalid.d @@ -0,0 +1 @@ +#error_output: mops_invalid.l diff --git a/gas/testsuite/gas/aarch64/mops_invalid.l b/gas/testsuite/gas/aarch64/mops_invalid.l new file mode 100644 index 0000000..8f5e588 --- /dev/null +++ b/gas/testsuite/gas/aarch64/mops_invalid.l @@ -0,0 +1,226 @@ +[^:]+: Assembler messages: +[^:]+:[0-9]+: Error: operand 1 must be a register destination address with writeback -- `cpyfp x0,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: operand 1 must be a register destination address with writeback -- `cpyfp x0!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: operand 1 must be a register destination address with writeback -- `cpyfp \[x0\],\[x1\]!,x2!' +[^:]+:[0-9]+: Error: operand 1 must be a register destination address with writeback -- `cpyfp \[x0,#0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: operand 1 must be a register destination address with writeback -- `cpyfp \[x0,xzr\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: operand 2 must be a register source address with writeback -- `cpyfp \[x1\]!,x0,x2!' +[^:]+:[0-9]+: Error: operand 2 must be a register source address with writeback -- `cpyfp \[x1\]!,x0!,x2!' +[^:]+:[0-9]+: Error: operand 2 must be a register source address with writeback -- `cpyfp \[x1\]!,\[x0\],x2!' +[^:]+:[0-9]+: Error: operand 2 must be a register source address with writeback -- `cpyfp \[x1\]!,\[x0,#0\]!,x2!' +[^:]+:[0-9]+: Error: operand 2 must be a register source address with writeback -- `cpyfp \[x1\]!,\[x0,xzr\]!,x2!' +[^:]+:[0-9]+: Error: operand 3 must be an integer register with writeback -- `cpyfp \[x0\]!,\[x1\]!,x2' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 3 -- `cpyfp \[x0\]!,\[x1\]!,!x2' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 3 -- `cpyfp \[x0\]!,\[x1\]!,\[x2\]' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 3 -- `cpyfp \[x0\]!,\[x1\]!,\[x2\]!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[x31\]!,\[x0\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[sp\]!,\[x0\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[zr\]!,\[x0\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[w30\]!,\[x0\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[w0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[wsp\]!,\[x0\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[wzr\]!,\[x0\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[b0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[h0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[s0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[d0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[q0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[v0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[v0.2d\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[z0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[z0.d\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[p0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[p0.d\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `cpyfp \[foo\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `cpyfp \[x0\]!,\[x31\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `cpyfp \[x0\]!,\[sp\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `cpyfp \[x0\]!,\[zr\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `cpyfp \[x0\]!,\[w30\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `cpyfp \[x1\]!,\[w0\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `cpyfp \[x0\]!,\[wsp\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `cpyfp \[x0\]!,\[wzr\]!,x1!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `cpyfp \[x1\]!,\[foo\]!,x2!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 3 -- `cpyfp \[x0\]!,\[x1\]!,x31!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 3 -- `cpyfp \[x0\]!,\[x1\]!,sp!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 3 -- `cpyfp \[x0\]!,\[x1\]!,zr!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 3 -- `cpyfp \[x0\]!,\[x1\]!,w30!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 3 -- `cpyfp \[x1\]!,\[x2\]!,w0!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 3 -- `cpyfp \[x0\]!,\[x1\]!,wsp!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 3 -- `cpyfp \[x0\]!,\[x1\]!,wzr!' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 3 -- `cpyfp \[x1\]!,\[x2\]!,foo!' +[^:]+:[0-9]+: Error: the three register operands must be distinct from one another -- `cpyfp \[x0\]!,\[x0\]!,x1!' +[^:]+:[0-9]+: Error: the three register operands must be distinct from one another -- `cpyfp \[x10\]!,\[x1\]!,x10!' +[^:]+:[0-9]+: Error: the three register operands must be distinct from one another -- `cpyfp \[x1\]!,\[x30\]!,x30!' +[^:]+:[0-9]+: Error: operand 1 must be a register destination address with writeback -- `setp x0,x1!,x2' +[^:]+:[0-9]+: Error: operand 1 must be a register destination address with writeback -- `setp x0!,x1!,x2' +[^:]+:[0-9]+: Error: operand 1 must be a register destination address with writeback -- `setp \[x0\],x1!,x2' +[^:]+:[0-9]+: Error: operand 1 must be a register destination address with writeback -- `setp \[x0,#0\]!,x1!,x2' +[^:]+:[0-9]+: Error: operand 1 must be a register destination address with writeback -- `setp \[x0,xzr\]!,x1!,x2' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `setp \[x31\]!,x0!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `setp \[sp\]!,x0!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `setp \[zr\]!,x0!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `setp \[w30\]!,x0!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `setp \[w0\]!,x1!,x2' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `setp \[wsp\]!,x0!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `setp \[wzr\]!,x0!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 1 -- `setp \[foo\]!,x1!,x2' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `setp \[x0\]!,x31!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `setp \[x0\]!,sp!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `setp \[x0\]!,zr!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `setp \[x0\]!,w30!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `setp \[x1\]!,w0!,x2' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `setp \[x0\]!,wsp!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `setp \[x0\]!,wzr!,x1' +[^:]+:[0-9]+: Error: integer 64-bit register expected at operand 2 -- `setp \[x1\]!,foo!,x2' +[^:]+:[0-9]+: Error: operand 3 must be an integer register -- `setp \[x30\]!,x0!,sp' +[^:]+:[0-9]+: Error: operand 3 must be an integer register -- `setp \[x30\]!,x0!,wsp' +[^:]+:[0-9]+: Error: operand mismatch -- `setp \[x30\]!,x0!,wzr' +[^:]+:[0-9]+: Info: did you mean this\? +[^:]+:[0-9]+: Info: setp \[x30\]!, x0!, xzr +[^:]+:[0-9]+: Error: the three register operands must be distinct from one another -- `setp \[x0\]!,x0!,x1' +[^:]+:[0-9]+: Error: the three register operands must be distinct from one another -- `setp \[x10\]!,x1!,x10' +[^:]+:[0-9]+: Error: the three register operands must be distinct from one another -- `setp \[x1\]!,x30!,x30' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfp \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfm \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfe \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfprn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfern \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfpwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfewn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfpn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfen \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfprt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmrt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfert \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfprtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmrtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfertrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfprtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmrtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfertwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfprtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmrtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfertn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfpwt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmwt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfewt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfpwtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmwtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfewtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfpwtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmwtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfewtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfpwtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmwtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfewtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfpt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfet \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfptrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfetrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfptwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfetwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfptn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfmtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyfetn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyp \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpym \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpye \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyprn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyern \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpypwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyewn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpypn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyen \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyprt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymrt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyert \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyprtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymrtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyertrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyprtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymrtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyertwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyprtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymrtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyertn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpypwt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymwt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyewt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpypwtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymwtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyewtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpypwtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymwtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyewtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpypwtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymwtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyewtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpypt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymt \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyet \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyptrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymtrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyetrn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyptwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymtwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyetwn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyptn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpymtn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `cpyetn \[x0\]!,\[x1\]!,x2!' +[^:]+:[0-9]+: Error: selected processor does not support `setp \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setm \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `sete \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setpt \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setmt \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setet \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setpn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setmn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `seten \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setptn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setmtn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setetn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgp \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgm \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setge \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgpt \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgmt \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setget \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgpn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgmn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgen \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgptn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgmtn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgetn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgp \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgm \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setge \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgpt \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgmt \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setget \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgpn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgmn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgen \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgptn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgmtn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgetn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgp \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgm \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setge \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgpt \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgmt \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setget \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgpn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgmn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgen \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgptn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgmtn \[x0\]!,x1!,x2' +[^:]+:[0-9]+: Error: selected processor does not support `setgetn \[x0\]!,x1!,x2' diff --git a/gas/testsuite/gas/aarch64/mops_invalid.s b/gas/testsuite/gas/aarch64/mops_invalid.s new file mode 100644 index 0000000..5281d37 --- /dev/null +++ b/gas/testsuite/gas/aarch64/mops_invalid.s @@ -0,0 +1,248 @@ + .arch armv8.8-a + + cpyfp x0, [x1]!, x2! + cpyfp x0!, [x1]!, x2! + cpyfp [x0], [x1]!, x2! + cpyfp [x0, #0]!, [x1]!, x2! + cpyfp [x0, xzr]!, [x1]!, x2! + + cpyfp [x1]!, x0, x2! + cpyfp [x1]!, x0!, x2! + cpyfp [x1]!, [x0], x2! + cpyfp [x1]!, [x0, #0]!, x2! + cpyfp [x1]!, [x0, xzr]!, x2! + + cpyfp [x0]!, [x1]!, x2 + cpyfp [x0]!, [x1]!, !x2 + cpyfp [x0]!, [x1]!, [x2] + cpyfp [x0]!, [x1]!, [x2]! + + cpyfp [x31]!, [x0]!, x1! + cpyfp [sp]!, [x0]!, x1! + cpyfp [zr]!, [x0]!, x1! + cpyfp [w30]!, [x0]!, x1! + cpyfp [w0]!, [x1]!, x2! + cpyfp [wsp]!, [x0]!, x1! + cpyfp [wzr]!, [x0]!, x1! + cpyfp [b0]!, [x1]!, x2! + cpyfp [h0]!, [x1]!, x2! + cpyfp [s0]!, [x1]!, x2! + cpyfp [d0]!, [x1]!, x2! + cpyfp [q0]!, [x1]!, x2! + cpyfp [v0]!, [x1]!, x2! + cpyfp [v0.2d]!, [x1]!, x2! + cpyfp [z0]!, [x1]!, x2! + cpyfp [z0.d]!, [x1]!, x2! + cpyfp [p0]!, [x1]!, x2! + cpyfp [p0.d]!, [x1]!, x2! + cpyfp [foo]!, [x1]!, x2! + + cpyfp [x0]!, [x31]!, x1! + cpyfp [x0]!, [sp]!, x1! + cpyfp [x0]!, [zr]!, x1! + cpyfp [x0]!, [w30]!, x1! + cpyfp [x1]!, [w0]!, x2! + cpyfp [x0]!, [wsp]!, x1! + cpyfp [x0]!, [wzr]!, x1! + cpyfp [x1]!, [foo]!, x2! + + cpyfp [x0]!, [x1]!, x31! + cpyfp [x0]!, [x1]!, sp! + cpyfp [x0]!, [x1]!, zr! + cpyfp [x0]!, [x1]!, w30! + cpyfp [x1]!, [x2]!, w0! + cpyfp [x0]!, [x1]!, wsp! + cpyfp [x0]!, [x1]!, wzr! + cpyfp [x1]!, [x2]!, foo! + + cpyfp [x0]!, [x0]!, x1! + cpyfp [x10]!, [x1]!, x10! + cpyfp [x1]!, [x30]!, x30! + + setp x0, x1!, x2 + setp x0!, x1!, x2 + setp [x0], x1!, x2 + setp [x0, #0]!, x1!, x2 + setp [x0, xzr]!, x1!, x2 + + setp [x31]!, x0!, x1 + setp [sp]!, x0!, x1 + setp [zr]!, x0!, x1 + setp [w30]!, x0!, x1 + setp [w0]!, x1!, x2 + setp [wsp]!, x0!, x1 + setp [wzr]!, x0!, x1 + setp [foo]!, x1!, x2 + + setp [x0]!, x31!, x1 + setp [x0]!, sp!, x1 + setp [x0]!, zr!, x1 + setp [x0]!, w30!, x1 + setp [x1]!, w0!, x2 + setp [x0]!, wsp!, x1 + setp [x0]!, wzr!, x1 + setp [x1]!, foo!, x2 + + setp [x30]!, x0!, sp + setp [x30]!, x0!, wsp + setp [x30]!, x0!, wzr + + setp [x0]!, x0!, x1 + setp [x10]!, x1!, x10 + setp [x1]!, x30!, x30 + + .arch armv8.7-a + + cpyfp [x0]!, [x1]!, x2! + cpyfm [x0]!, [x1]!, x2! + cpyfe [x0]!, [x1]!, x2! + cpyfprn [x0]!, [x1]!, x2! + cpyfmrn [x0]!, [x1]!, x2! + cpyfern [x0]!, [x1]!, x2! + cpyfpwn [x0]!, [x1]!, x2! + cpyfmwn [x0]!, [x1]!, x2! + cpyfewn [x0]!, [x1]!, x2! + cpyfpn [x0]!, [x1]!, x2! + cpyfmn [x0]!, [x1]!, x2! + cpyfen [x0]!, [x1]!, x2! + cpyfprt [x0]!, [x1]!, x2! + cpyfmrt [x0]!, [x1]!, x2! + cpyfert [x0]!, [x1]!, x2! + cpyfprtrn [x0]!, [x1]!, x2! + cpyfmrtrn [x0]!, [x1]!, x2! + cpyfertrn [x0]!, [x1]!, x2! + cpyfprtwn [x0]!, [x1]!, x2! + cpyfmrtwn [x0]!, [x1]!, x2! + cpyfertwn [x0]!, [x1]!, x2! + cpyfprtn [x0]!, [x1]!, x2! + cpyfmrtn [x0]!, [x1]!, x2! + cpyfertn [x0]!, [x1]!, x2! + cpyfpwt [x0]!, [x1]!, x2! + cpyfmwt [x0]!, [x1]!, x2! + cpyfewt [x0]!, [x1]!, x2! + cpyfpwtrn [x0]!, [x1]!, x2! + cpyfmwtrn [x0]!, [x1]!, x2! + cpyfewtrn [x0]!, [x1]!, x2! + cpyfpwtwn [x0]!, [x1]!, x2! + cpyfmwtwn [x0]!, [x1]!, x2! + cpyfewtwn [x0]!, [x1]!, x2! + cpyfpwtn [x0]!, [x1]!, x2! + cpyfmwtn [x0]!, [x1]!, x2! + cpyfewtn [x0]!, [x1]!, x2! + cpyfpt [x0]!, [x1]!, x2! + cpyfmt [x0]!, [x1]!, x2! + cpyfet [x0]!, [x1]!, x2! + cpyfptrn [x0]!, [x1]!, x2! + cpyfmtrn [x0]!, [x1]!, x2! + cpyfetrn [x0]!, [x1]!, x2! + cpyfptwn [x0]!, [x1]!, x2! + cpyfmtwn [x0]!, [x1]!, x2! + cpyfetwn [x0]!, [x1]!, x2! + cpyfptn [x0]!, [x1]!, x2! + cpyfmtn [x0]!, [x1]!, x2! + cpyfetn [x0]!, [x1]!, x2! + + cpyp [x0]!, [x1]!, x2! + cpym [x0]!, [x1]!, x2! + cpye [x0]!, [x1]!, x2! + cpyprn [x0]!, [x1]!, x2! + cpymrn [x0]!, [x1]!, x2! + cpyern [x0]!, [x1]!, x2! + cpypwn [x0]!, [x1]!, x2! + cpymwn [x0]!, [x1]!, x2! + cpyewn [x0]!, [x1]!, x2! + cpypn [x0]!, [x1]!, x2! + cpymn [x0]!, [x1]!, x2! + cpyen [x0]!, [x1]!, x2! + cpyprt [x0]!, [x1]!, x2! + cpymrt [x0]!, [x1]!, x2! + cpyert [x0]!, [x1]!, x2! + cpyprtrn [x0]!, [x1]!, x2! + cpymrtrn [x0]!, [x1]!, x2! + cpyertrn [x0]!, [x1]!, x2! + cpyprtwn [x0]!, [x1]!, x2! + cpymrtwn [x0]!, [x1]!, x2! + cpyertwn [x0]!, [x1]!, x2! + cpyprtn [x0]!, [x1]!, x2! + cpymrtn [x0]!, [x1]!, x2! + cpyertn [x0]!, [x1]!, x2! + cpypwt [x0]!, [x1]!, x2! + cpymwt [x0]!, [x1]!, x2! + cpyewt [x0]!, [x1]!, x2! + cpypwtrn [x0]!, [x1]!, x2! + cpymwtrn [x0]!, [x1]!, x2! + cpyewtrn [x0]!, [x1]!, x2! + cpypwtwn [x0]!, [x1]!, x2! + cpymwtwn [x0]!, [x1]!, x2! + cpyewtwn [x0]!, [x1]!, x2! + cpypwtn [x0]!, [x1]!, x2! + cpymwtn [x0]!, [x1]!, x2! + cpyewtn [x0]!, [x1]!, x2! + cpypt [x0]!, [x1]!, x2! + cpymt [x0]!, [x1]!, x2! + cpyet [x0]!, [x1]!, x2! + cpyptrn [x0]!, [x1]!, x2! + cpymtrn [x0]!, [x1]!, x2! + cpyetrn [x0]!, [x1]!, x2! + cpyptwn [x0]!, [x1]!, x2! + cpymtwn [x0]!, [x1]!, x2! + cpyetwn [x0]!, [x1]!, x2! + cpyptn [x0]!, [x1]!, x2! + cpymtn [x0]!, [x1]!, x2! + cpyetn [x0]!, [x1]!, x2! + + setp [x0]!, x1!, x2 + setm [x0]!, x1!, x2 + sete [x0]!, x1!, x2 + setpt [x0]!, x1!, x2 + setmt [x0]!, x1!, x2 + setet [x0]!, x1!, x2 + setpn [x0]!, x1!, x2 + setmn [x0]!, x1!, x2 + seten [x0]!, x1!, x2 + setptn [x0]!, x1!, x2 + setmtn [x0]!, x1!, x2 + setetn [x0]!, x1!, x2 + + setgp [x0]!, x1!, x2 + setgm [x0]!, x1!, x2 + setge [x0]!, x1!, x2 + setgpt [x0]!, x1!, x2 + setgmt [x0]!, x1!, x2 + setget [x0]!, x1!, x2 + setgpn [x0]!, x1!, x2 + setgmn [x0]!, x1!, x2 + setgen [x0]!, x1!, x2 + setgptn [x0]!, x1!, x2 + setgmtn [x0]!, x1!, x2 + setgetn [x0]!, x1!, x2 + + .arch armv8.7-a+mops + + setgp [x0]!, x1!, x2 + setgm [x0]!, x1!, x2 + setge [x0]!, x1!, x2 + setgpt [x0]!, x1!, x2 + setgmt [x0]!, x1!, x2 + setget [x0]!, x1!, x2 + setgpn [x0]!, x1!, x2 + setgmn [x0]!, x1!, x2 + setgen [x0]!, x1!, x2 + setgptn [x0]!, x1!, x2 + setgmtn [x0]!, x1!, x2 + setgetn [x0]!, x1!, x2 + + .arch armv8.7-a+memtag + + setgp [x0]!, x1!, x2 + setgm [x0]!, x1!, x2 + setge [x0]!, x1!, x2 + setgpt [x0]!, x1!, x2 + setgmt [x0]!, x1!, x2 + setget [x0]!, x1!, x2 + setgpn [x0]!, x1!, x2 + setgmn [x0]!, x1!, x2 + setgen [x0]!, x1!, x2 + setgptn [x0]!, x1!, x2 + setgmtn [x0]!, x1!, x2 + setgetn [x0]!, x1!, x2 diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index 493b797..183d281 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -87,6 +87,7 @@ typedef uint32_t aarch64_insn; #define AARCH64_FEATURE_SSBS (1ULL << 47) /* SSBS mechanism enabled. */ #define AARCH64_FEATURE_MEMTAG (1ULL << 48) /* Memory Tagging Extension. */ #define AARCH64_FEATURE_TME (1ULL << 49) /* Transactional Memory Extension. */ +#define AARCH64_FEATURE_MOPS (1ULL << 50) /* Standardization of memory operations. */ #define AARCH64_FEATURE_I8MM (1ULL << 52) /* Matrix Multiply instructions. */ #define AARCH64_FEATURE_F32MM (1ULL << 53) #define AARCH64_FEATURE_F64MM (1ULL << 54) @@ -143,7 +144,8 @@ typedef uint32_t aarch64_insn; AARCH64_FEATURE_V8_7 \ | AARCH64_FEATURE_LS64) #define AARCH64_ARCH_V8_8 AARCH64_FEATURE (AARCH64_ARCH_V8_7, \ - AARCH64_FEATURE_V8_8) + AARCH64_FEATURE_V8_8 \ + | AARCH64_FEATURE_MOPS) #define AARCH64_ARCH_V8_R (AARCH64_FEATURE (AARCH64_ARCH_V8_4, \ AARCH64_FEATURE_V8_R) \ & ~(AARCH64_FEATURE_V8_A | AARCH64_FEATURE_LOR)) @@ -461,6 +463,9 @@ enum aarch64_opnd AARCH64_OPND_SME_PnT_Wm_imm, /* SME .[, #]. */ AARCH64_OPND_TME_UIMM16, /* TME unsigned 16-bit immediate. */ AARCH64_OPND_SM3_IMM2, /* SM3 encodes lane in bits [13, 14]. */ + AARCH64_OPND_MOPS_ADDR_Rd, /* [Rd]!, in bits [0, 4]. */ + AARCH64_OPND_MOPS_ADDR_Rs, /* [Rs]!, in bits [16, 20]. */ + AARCH64_OPND_MOPS_WB_Rn /* Rn!, in bits [5, 9]. */ }; /* Qualifier constrains an operand. It either specifies a variant of an diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c index bbe4b68..57c9e30 100644 --- a/opcodes/aarch64-asm-2.c +++ b/opcodes/aarch64-asm-2.c @@ -893,6 +893,10 @@ aarch64_insert_operand (const aarch64_operand *self, return aarch64_ins_sme_sm_za (self, info, code, inst, errors); case 220: return aarch64_ins_sme_pred_reg_with_index (self, info, code, inst, errors); + case 223: + case 224: + case 225: + return aarch64_ins_x0_to_x30 (self, info, code, inst, errors); default: assert (0); abort (); } } diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c index 9b66fd3..f8328eb 100644 --- a/opcodes/aarch64-asm.c +++ b/opcodes/aarch64-asm.c @@ -1519,6 +1519,19 @@ aarch64_ins_sme_pred_reg_with_index (const aarch64_operand *self, return true; } +/* Insert X0-X30. Register 31 is unallocated. */ +bool +aarch64_ins_x0_to_x30 (const aarch64_operand *self, + const aarch64_opnd_info *info, + aarch64_insn *code, + const aarch64_inst *inst ATTRIBUTE_UNUSED, + aarch64_operand_error *errors ATTRIBUTE_UNUSED) +{ + assert (info->reg.regno <= 30); + insert_field (self->fields[0], code, info->reg.regno, 0); + return true; +} + /* Miscellaneous encoding functions. */ /* Encode size[0], i.e. bit 22, for diff --git a/opcodes/aarch64-asm.h b/opcodes/aarch64-asm.h index 47f775d..ac97b9e 100644 --- a/opcodes/aarch64-asm.h +++ b/opcodes/aarch64-asm.h @@ -106,6 +106,7 @@ AARCH64_DECL_OPD_INSERTER (ins_sme_sm_za); AARCH64_DECL_OPD_INSERTER (ins_sme_pred_reg_with_index); AARCH64_DECL_OPD_INSERTER (ins_imm_rotate1); AARCH64_DECL_OPD_INSERTER (ins_imm_rotate2); +AARCH64_DECL_OPD_INSERTER (ins_x0_to_x30); #undef AARCH64_DECL_OPD_INSERTER diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index f9999ad..70cbf90 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -2947,11 +2947,187 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx01100100xxxxxxxxxxx1xxxxxxxxxx - stg. */ - return 885; + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0000x1xxxxxxxxxx + cpyfp. */ + return 2511; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1000x1xxxxxxxxxx + cpyfprn. */ + return 2517; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0100x1xxxxxxxxxx + cpyfpwn. */ + return 2514; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1100x1xxxxxxxxxx + cpyfpn. */ + return 2520; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0010x1xxxxxxxxxx + cpyfprt. */ + return 2535; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1010x1xxxxxxxxxx + cpyfprtrn. */ + return 2541; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0110x1xxxxxxxxxx + cpyfprtwn. */ + return 2538; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1110x1xxxxxxxxxx + cpyfprtn. */ + return 2544; + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0001x1xxxxxxxxxx + cpyfpwt. */ + return 2523; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1001x1xxxxxxxxxx + cpyfpwtrn. */ + return 2529; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0101x1xxxxxxxxxx + cpyfpwtwn. */ + return 2526; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1101x1xxxxxxxxxx + cpyfpwtn. */ + return 2532; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0011x1xxxxxxxxxx + cpyfpt. */ + return 2547; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1011x1xxxxxxxxxx + cpyfptrn. */ + return 2553; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx0111x1xxxxxxxxxx + cpyfptwn. */ + return 2550; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001000xxxxx1111x1xxxxxxxxxx + cpyfptn. */ + return 2556; + } + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001001xxxxxxxxxx1xxxxxxxxxx + stg. */ + return 885; + } } } else @@ -3054,99 +3230,275 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx01100101xxxxxxxxxxx1xxxxxxxxxx - stzg. */ - return 886; - } - } - else - { - if (((word >> 31) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 0011100101xxxxxxxxxxxxxxxxxxxxxx - ldrb. */ - return 890; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 0111100101xxxxxxxxxxxxxxxxxxxxxx - ldrh. */ - return 895; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 1x11100101xxxxxxxxxxxxxxxxxxxxxx - ldr. */ - return 898; - } - } - } - } - else - { - if (((word >> 29) & 0x1) == 0) - { - if (((word >> 10) & 0x1) == 0) - { - if (((word >> 11) & 0x1) == 0) - { if (((word >> 21) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 00011001100xxxxxxxxx00xxxxxxxxxx - ldapursb. */ - return 2454; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0000x1xxxxxxxxxx + cpyfm. */ + return 2512; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1000x1xxxxxxxxxx + cpyfmrn. */ + return 2518; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 10011001100xxxxxxxxx00xxxxxxxxxx - ldapursw. */ - return 2461; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0100x1xxxxxxxxxx + cpyfmwn. */ + return 2515; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1100x1xxxxxxxxxx + cpyfmn. */ + return 2521; + } } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1011001100xxxxxxxxx00xxxxxxxxxx - ldapursh. */ - return 2458; + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0010x1xxxxxxxxxx + cpyfmrt. */ + return 2536; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1010x1xxxxxxxxxx + cpyfmrtrn. */ + return 2542; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0110x1xxxxxxxxxx + cpyfmrtwn. */ + return 2539; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1110x1xxxxxxxxxx + cpyfmrtn. */ + return 2545; + } + } } } else { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0011001110xxxxxxxxx00xxxxxxxxxx - ldapursb. */ - return 2453; - } - else + if (((word >> 13) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0001x1xxxxxxxxxx + cpyfmwt. */ + return 2524; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1001x1xxxxxxxxxx + cpyfmwtrn. */ + return 2530; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0101x1xxxxxxxxxx + cpyfmwtwn. */ + return 2527; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1101x1xxxxxxxxxx + cpyfmwtn. */ + return 2533; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0011x1xxxxxxxxxx + cpyfmt. */ + return 2548; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1011x1xxxxxxxxxx + cpyfmtrn. */ + return 2554; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx0111x1xxxxxxxxxx + cpyfmtwn. */ + return 2551; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001010xxxxx1111x1xxxxxxxxxx + cpyfmtn. */ + return 2557; + } + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001011xxxxxxxxxx1xxxxxxxxxx + stzg. */ + return 886; + } + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0011100101xxxxxxxxxxxxxxxxxxxxxx + ldrb. */ + return 890; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 0111100101xxxxxxxxxxxxxxxxxxxxxx + ldrh. */ + return 895; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 1x11100101xxxxxxxxxxxxxxxxxxxxxx + ldr. */ + return 898; + } + } + } + } + else + { + if (((word >> 29) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 00011001100xxxxxxxxx00xxxxxxxxxx + ldapursb. */ + return 2454; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 10011001100xxxxxxxxx00xxxxxxxxxx + ldapursw. */ + return 2461; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1011001100xxxxxxxxx00xxxxxxxxxx + ldapursh. */ + return 2458; + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0011001110xxxxxxxxx00xxxxxxxxxx + ldapursb. */ + return 2453; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 x1011001110xxxxxxxxx00xxxxxxxxxx ldapursh. */ return 2457; @@ -3195,841 +3547,385 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx01100110xxxxxxxxxxx1xxxxxxxxxx - st2g. */ - return 887; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx01100111xxxxxxxxxxx1xxxxxxxxxx - stz2g. */ - return 888; - } - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - if (((word >> 31) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001110011xxxxxxxxxxxxxxxxxxxxxxx - ldrsb. */ - return 891; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101110011xxxxxxxxxxxxxxxxxxxxxxx - ldrsw. */ - return 899; - } - } - else - { - if (((word >> 31) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011110011xxxxxxxxxxxxxxxxxxxxxxx - ldrsh. */ - return 896; - } - else + if (((word >> 21) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111110011xxxxxxxxxxxxxxxxxxxxxxx - prfm. */ - return 900; - } - } - } - } - } - } - } - } - else - { - if (((word >> 24) & 0x1) == 0) - { - if (((word >> 27) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - if (((word >> 29) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x00x00100xxxxxxxxxxxxxxxxxxxxxxx - and. */ - return 995; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10x00100xxxxxxxxxxxxxxxxxxxxxxx - eor. */ - return 999; - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01x00100xxxxxxxxxxxxxxxxxxxxxxx - orr. */ - return 997; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11x00100xxxxxxxxxxxxxxxxxxxxxxx - ands. */ - return 1000; - } - } - } - else - { - if (((word >> 29) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x00x00101xxxxxxxxxxxxxxxxxxxxxxx - movn. */ - return 1186; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10x00101xxxxxxxxxxxxxxxxxxxxxxx - movz. */ - return 1188; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx1x00101xxxxxxxxxxxxxxxxxxxxxxx - movk. */ - return 1190; - } - } - } - else - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 28) & 0x1) == 0) - { - if (((word >> 29) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0001010xx0xxxxxxxxxxxxxxxxxxxxx - and. */ - return 1002; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1001010xx0xxxxxxxxxxxxxxxxxxxxx - eor. */ - return 1009; - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0101010xx0xxxxxxxxxxxxxxxxxxxxx - orr. */ - return 1004; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1101010xx0xxxxxxxxxxxxxxxxxxxxx - ands. */ - return 1011; - } - } - } - else - { - if (((word >> 10) & 0x1) == 0) - { - if (((word >> 11) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - if (((word >> 29) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0011010000xxxxxxxxx00xxxxxxxxxx - adc. */ - return 0; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1011010000xxxxxxxxx00xxxxxxxxxx - sbc. */ - return 2; - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0111010000xxxxxxxxx00xxxxxxxxxx - adcs. */ - return 1; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1111010000xxxxxxxxx00xxxxxxxxxx - sbcs. */ - return 4; - } - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010100xxxxxxxxx00xxxxxxxxxx - csel. */ - return 662; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010100xxxxxxxxx00xxxxxxxxxx - csinv. */ - return 666; - } - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010010xxxxxxxxx00xxxxxxxxxx - ccmn. */ - return 660; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010010xxxxxxxxx00xxxxxxxxxx - ccmp. */ - return 661; - } - } - else + if (((word >> 12) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { - if (((word >> 13) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - if (((word >> 14) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - if (((word >> 29) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0011010110xxxxxx00000xxxxxxxxxx - subp. */ - return 721; - } - else - { - if (((word >> 16) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1011010110xxxx0x00000xxxxxxxxxx - rbit. */ - return 685; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1011010110xxxx1x00000xxxxxxxxxx - pacia. */ - return 693; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0000x1xxxxxxxxxx + cpyfe. */ + return 2513; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx111010110xxxxxx00000xxxxxxxxxx - subps. */ - return 722; + xx011001110xxxxx0000x1xxxxxxxxxx + setp. */ + return 2607; } } else { - if (((word >> 30) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x0x11010110xxxxxx10000xxxxxxxxxx - crc32b. */ - return 727; + xx011001100xxxxx1000x1xxxxxxxxxx + cpyfern. */ + return 2519; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1x11010110xxxxxx10000xxxxxxxxxx - xpaci. */ - return 709; + xx011001110xxxxx1000x1xxxxxxxxxx + sete. */ + return 2609; } } } else { - if (((word >> 30) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010110xxxxxxx1000xxxxxxxxxx - lslv. */ - return 713; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0100x1xxxxxxxxxx + cpyfewn. */ + return 2516; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0100x1xxxxxxxxxx + setm. */ + return 2608; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1x11010110xxxxxxx1000xxxxxxxxxx - paciza. */ - return 701; + xx0110011x0xxxxx1100x1xxxxxxxxxx + cpyfen. */ + return 2522; } } } else { - if (((word >> 13) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - if (((word >> 14) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x0x11010110xxxxxx00100xxxxxxxxxx - irg. */ - return 724; + xx011001100xxxxx0010x1xxxxxxxxxx + cpyfert. */ + return 2537; } else { - if (((word >> 16) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010110xxxx0x00100xxxxxxxxxx - clz. */ - return 690; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010110xxxx1x00100xxxxxxxxxx - autia. */ - return 697; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0010x1xxxxxxxxxx + setpn. */ + return 2613; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010110xxxxxx10100xxxxxxxxxx - crc32cb. */ - return 731; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx1010x1xxxxxxxxxx + cpyfertrn. */ + return 2543; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx1010x1xxxxxxxxxx + seten. */ + return 2615; + } } } else { - if (((word >> 30) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010110xxxxxxx1100xxxxxxxxxx - pacga. */ - return 726; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0110x1xxxxxxxxxx + cpyfertwn. */ + return 2540; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0110x1xxxxxxxxxx + setmn. */ + return 2614; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1x11010110xxxxxxx1100xxxxxxxxxx - autiza. */ - return 705; + xx0110011x0xxxxx1110x1xxxxxxxxxx + cpyfertn. */ + return 2546; } } } } - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 14) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010x00xxxxxx0xx10xxxxxxxxxx - setf8. */ - return 2449; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010x00xxxxxx1xx10xxxxxxxxxx - setf16. */ - return 2450; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010010xxxxxxxxx10xxxxxxxxxx - ccmn. */ - return 658; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010010xxxxxxxxx10xxxxxxxxxx - ccmp. */ - return 659; - } - } else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { - if (((word >> 13) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - if (((word >> 14) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x0x11010110xxxxxx00010xxxxxxxxxx - udiv. */ - return 711; + xx011001100xxxxx0001x1xxxxxxxxxx + cpyfewt. */ + return 2525; } else { - if (((word >> 16) & 0x1) == 0) - { - if (((word >> 31) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 01x11010110xxxx0x00010xxxxxxxxxx - rev. */ - return 687; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 11x11010110xxxx0x00010xxxxxxxxxx - rev32. */ - return 692; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010110xxxx1x00010xxxxxxxxxx - pacda. */ - return 695; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0001x1xxxxxxxxxx + setpt. */ + return 2610; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010110xxxxxx10010xxxxxxxxxx - crc32w. */ - return 729; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx1001x1xxxxxxxxxx + cpyfewtrn. */ + return 2531; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx1001x1xxxxxxxxxx + setet. */ + return 2612; + } } } else { - if (((word >> 30) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010110xxxxxxx1010xxxxxxxxxx - asrv. */ - return 717; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0101x1xxxxxxxxxx + cpyfewtwn. */ + return 2528; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0101x1xxxxxxxxxx + setmt. */ + return 2611; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1x11010110xxxxxxx1010xxxxxxxxxx - pacdza. */ - return 703; + xx0110011x0xxxxx1101x1xxxxxxxxxx + cpyfewtn. */ + return 2534; } } } else { - if (((word >> 13) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - if (((word >> 14) & 0x1) == 0) + if (((word >> 15) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010110xxxxxx00110xxxxxxxxxx - autda. */ - return 699; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0011x1xxxxxxxxxx + cpyfet. */ + return 2549; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0011x1xxxxxxxxxx + setptn. */ + return 2616; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010110xxxxxx10110xxxxxxxxxx - crc32cw. */ - return 733; + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx1011x1xxxxxxxxxx + cpyfetrn. */ + return 2555; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx1011x1xxxxxxxxxx + setetn. */ + return 2618; + } } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010110xxxxxxx1110xxxxxxxxxx - autdza. */ - return 707; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001100xxxxx0111x1xxxxxxxxxx + cpyfetwn. */ + return 2552; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001110xxxxx0111x1xxxxxxxxxx + setmtn. */ + return 2617; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0110011x0xxxxx1111x1xxxxxxxxxx + cpyfetn. */ + return 2558; + } } } } } - } - } - else - { - if (((word >> 11) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) + else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx11010000xxxxxxxxx01xxxxxxxxxx - rmif. */ - return 2448; + xx011001101xxxxxxxxxx1xxxxxxxxxx + st2g. */ + return 887; } else { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010100xxxxxxxxx01xxxxxxxxxx - csinc. */ - return 663; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010100xxxxxxxxx01xxxxxxxxxx - csneg. */ - return 669; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011001111xxxxxxxxxx1xxxxxxxxxx + stz2g. */ + return 888; } } - else - { - if (((word >> 12) & 0x1) == 0) - { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 14) & 0x1) == 0) - { - if (((word >> 16) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010x10xxxx0x00001xxxxxxxxxx - rev16. */ - return 686; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010x10xxxx1x00001xxxxxxxxxx - pacib. */ - return 694; - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010x10xxxxxx10001xxxxxxxxxx - crc32h. */ - return 728; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010x10xxxxxx10001xxxxxxxxxx - xpacd. */ - return 710; - } - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010x10xxxxxxx1001xxxxxxxxxx - lsrv. */ - return 715; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010x10xxxxxxx1001xxxxxxxxxx - pacizb. */ - return 702; - } - } - } - else - { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 14) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010x10xxxxxx00101xxxxxxxxxx - gmi. */ - return 725; - } - else - { - if (((word >> 16) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010x10xxxx0x00101xxxxxxxxxx - cls. */ - return 691; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010x10xxxx1x00101xxxxxxxxxx - autib. */ - return 698; - } - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010x10xxxxxx10101xxxxxxxxxx - crc32ch. */ - return 732; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010x10xxxxxxx1101xxxxxxxxxx - autizb. */ - return 706; - } - } + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001110011xxxxxxxxxxxxxxxxxxxxxxx + ldrsb. */ + return 891; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101110011xxxxxxxxxxxxxxxxxxxxxxx + ldrsw. */ + return 899; } } else { - if (((word >> 12) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 14) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010xx0xxxxxx00011xxxxxxxxxx - sdiv. */ - return 712; - } - else - { - if (((word >> 16) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010xx0xxxx0x00011xxxxxxxxxx - rev. */ - return 688; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010xx0xxxx1x00011xxxxxxxxxx - pacdb. */ - return 696; - } - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010xx0xxxxxx10011xxxxxxxxxx - crc32x. */ - return 730; - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x11010xx0xxxxxxx1011xxxxxxxxxx - rorv. */ - return 719; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x11010xx0xxxxxxx1011xxxxxxxxxx - pacdzb. */ - return 704; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011110011xxxxxxxxxxxxxxxxxxxxxxx + ldrsh. */ + return 896; } else { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 14) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010xx0xxxxxx00111xxxxxxxxxx - autdb. */ - return 700; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010xx0xxxxxx10111xxxxxxxxxx - crc32cx. */ - return 734; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11010xx0xxxxxxx1111xxxxxxxxxx - autdzb. */ - return 708; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111110011xxxxxxxxxxxxxxxxxxxxxxx + prfm. */ + return 900; } } } } } - else + } + } + } + else + { + if (((word >> 24) & 0x1) == 0) + { + if (((word >> 27) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) { if (((word >> 29) & 0x1) == 0) { @@ -4037,17 +3933,17 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x00x1010xx1xxxxxxxxxxxxxxxxxxxxx - bic. */ - return 1003; + x00x00100xxxxxxxxxxxxxxxxxxxxxxx + and. */ + return 995; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10x1010xx1xxxxxxxxxxxxxxxxxxxxx - eon. */ - return 1010; + x10x00100xxxxxxxxxxxxxxxxxxxxxxx + eor. */ + return 999; } } else @@ -4056,27 +3952,21 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x01x1010xx1xxxxxxxxxxxxxxxxxxxxx - orn. */ - return 1007; + x01x00100xxxxxxxxxxxxxxxxxxxxxxx + orr. */ + return 997; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11x1010xx1xxxxxxxxxxxxxxxxxxxxx - bics. */ - return 1013; + x11x00100xxxxxxxxxxxxxxxxxxxxxxx + ands. */ + return 1000; } } } - } - } - else - { - if (((word >> 27) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) + else { if (((word >> 29) & 0x1) == 0) { @@ -4084,36 +3974,28 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x00x00110xxxxxxxxxxxxxxxxxxxxxxx - sbfm. */ - return 618; + x00x00101xxxxxxxxxxxxxxxxxxxxxxx + movn. */ + return 1186; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10x00110xxxxxxxxxxxxxxxxxxxxxxx - ubfm. */ - return 629; + x10x00101xxxxxxxxxxxxxxxxxxxxxxx + movz. */ + return 1188; } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx1x00110xxxxxxxxxxxxxxxxxxxxxxx - bfm. */ - return 625; + xx1x00101xxxxxxxxxxxxxxxxxxxxxxx + movk. */ + return 1190; } } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxxx00111xxxxxxxxxxxxxxxxxxxxxxx - extr. */ - return 758; - } } else { @@ -4127,17 +4009,17 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x0001011xx0xxxxxxxxxxxxxxxxxxxxx - add. */ - return 21; + x0001010xx0xxxxxxxxxxxxxxxxxxxxx + and. */ + return 1002; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1001011xx0xxxxxxxxxxxxxxxxxxxxx - sub. */ - return 24; + x1001010xx0xxxxxxxxxxxxxxxxxxxxx + eor. */ + return 1009; } } else @@ -4146,267 +4028,145 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x0101011xx0xxxxxxxxxxxxxxxxxxxxx - adds. */ - return 22; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1101011xx0xxxxxxxxxxxxxxxxxxxxx - subs. */ - return 26; - } - } - } - else - { - if (((word >> 15) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11011x00xxxxx0xxxxxxxxxxxxxxx - madd. */ - return 735; - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11011010xxxxx0xxxxxxxxxxxxxxx - smulh. */ - return 743; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11011110xxxxx0xxxxxxxxxxxxxxx - umulh. */ - return 748; - } - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11011xx0xxxxx1xxxxxxxxxxxxxxx - msub. */ - return 737; - } - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - if (((word >> 28) & 0x1) == 0) - { - if (((word >> 29) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x00010110x1xxxxxxxxxxxxxxxxxxxxx - add. */ - return 6; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10010110x1xxxxxxxxxxxxxxxxxxxxx - sub. */ - return 9; - } - } - else - { - if (((word >> 30) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01010110x1xxxxxxxxxxxxxxxxxxxxx - adds. */ - return 7; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11010110x1xxxxxxxxxxxxxxxxxxxxx - subs. */ - return 10; - } - } - } - else - { - if (((word >> 15) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx110110x1xxxxx0xxxxxxxxxxxxxxx - smaddl. */ - return 739; + x0101010xx0xxxxxxxxxxxxxxxxxxxxx + orr. */ + return 1004; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxx110110x1xxxxx1xxxxxxxxxxxxxxx - smsubl. */ - return 741; + x1101010xx0xxxxxxxxxxxxxxxxxxxxx + ands. */ + return 1011; } } } else { - if (((word >> 15) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxxx10111x1xxxxx0xxxxxxxxxxxxxxx - umaddl. */ - return 744; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxxx10111x1xxxxx1xxxxxxxxxxxxxxx - umsubl. */ - return 746; - } - } - } - } - } - } - } - else - { - if (((word >> 27) & 0x1) == 0) - { - if (((word >> 28) & 0x1) == 0) - { - if (((word >> 24) & 0x1) == 0) - { - if (((word >> 29) & 0x1) == 0) - { - if (((word >> 13) & 0x1) == 0) - { - if (((word >> 14) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 15) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 29) & 0x1) == 0) { - if (((word >> 16) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) - { - if (((word >> 18) & 0x1) == 0) - { - if (((word >> 19) & 0x1) == 0) - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx000000000xxxxxxxxxxxxx - add. */ - return 1291; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx010000000xxxxxxxxxxxxx - mul. */ - return 1760; - } - } - else - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx001000000xxxxxxxxxxxxx - smax. */ - return 1839; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx011000000xxxxxxxxxxxxx - orr. */ - return 1771; - } - } - } - else - { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0x0100000xxxxxxxxxxxxx - sdiv. */ - return 1830; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0x1100000xxxxxxxxxxxxx - sabd. */ - return 1821; - } - } - } - else + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0011010000xxxxxxxxx00xxxxxxxxxx + adc. */ + return 0; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1011010000xxxxxxxxx00xxxxxxxxxx + sbc. */ + return 2; + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0111010000xxxxxxxxx00xxxxxxxxxx + adcs. */ + return 1; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1111010000xxxxxxxxx00xxxxxxxxxx + sbcs. */ + return 4; + } + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010100xxxxxxxxx00xxxxxxxxxx + csel. */ + return 662; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010100xxxxxxxxx00xxxxxxxxxx + csinv. */ + return 666; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010010xxxxxxxxx00xxxxxxxxxx + ccmn. */ + return 660; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010010xxxxxxxxx00xxxxxxxxxx + ccmp. */ + return 661; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 29) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x0010000xxxxxxxxxxxxx - smulh. */ - return 1844; + x0011010110xxxxxx00000xxxxxxxxxx + subp. */ + return 721; } else { - if (((word >> 20) & 0x1) == 0) + if (((word >> 16) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx001010000xxxxxxxxxxxxx - smin. */ - return 1842; + x1011010110xxxx0x00000xxxxxxxxxx + rbit. */ + return 685; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx011010000xxxxxxxxxxxxx - and. */ - return 1299; + x1011010110xxxx1x00000xxxxxxxxxx + pacia. */ + return 693; } } } @@ -4414,344 +4174,399 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0xx110000xxxxxxxxxxxxx - sdivr. */ - return 1831; + xx111010110xxxxxx00000xxxxxxxxxx + subps. */ + return 722; + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010110xxxxxx10000xxxxxxxxxx + crc32b. */ + return 727; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010110xxxxxx10000xxxxxxxxxx + xpaci. */ + return 709; } } } else { - if (((word >> 17) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010110xxxxxxx1000xxxxxxxxxx + lslv. */ + return 713; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010110xxxxxxx1000xxxxxxxxxx + paciza. */ + return 701; + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0x0001000xxxxxxxxxxxxx - sub. */ - return 1960; - } - else - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx001001000xxxxxxxxxxxxx - umax. */ - return 1988; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx011001000xxxxxxxxxxxxx - eor. */ - return 1386; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010110xxxxxx00100xxxxxxxxxx + irg. */ + return 724; } else { - if (((word >> 19) & 0x1) == 0) + if (((word >> 16) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x0101000xxxxxxxxxxxxx - udiv. */ - return 1982; + x1x11010110xxxx0x00100xxxxxxxxxx + clz. */ + return 690; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x1101000xxxxxxxxxxxxx - uabd. */ - return 1973; + x1x11010110xxxx1x00100xxxxxxxxxx + autia. */ + return 697; } } } else { - if (((word >> 18) & 0x1) == 0) - { - if (((word >> 19) & 0x1) == 0) - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx000011000xxxxxxxxxxxxx - subr. */ - return 1962; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx010011000xxxxxxxxxxxxx - umulh. */ - return 1993; - } - } - else - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx001011000xxxxxxxxxxxxx - umin. */ - return 1991; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx011011000xxxxxxxxxxxxx - bic. */ - return 1311; - } - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0xx111000xxxxxxxxxxxxx - udivr. */ - return 1983; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010110xxxxxx10100xxxxxxxxxx + crc32cb. */ + return 731; } } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x00x0xxxxx000xxxxxxxxxxxxx - ld1sb. */ - return 1573; - } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100001x01x0xxxxx000xxxxxxxxxxxxx - ld1sh. */ - return 1584; - } - } - } - else - { - if (((word >> 31) & 0x1) == 0) - { - if (((word >> 12) & 0x1) == 0) - { - if (((word >> 10) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0xx0xxxxx000000xxxxxxxxxx - sdot. */ - return 1832; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0xx0xxxxx000010xxxxxxxxxx - sqdmlalbt. */ - return 2182; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010110xxxxxxx1100xxxxxxxxxx + pacga. */ + return 726; } else { - if (((word >> 11) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0xx0xxxxx000001xxxxxxxxxx - udot. */ - return 1984; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0xx0xxxxx000011xxxxxxxxxx - sqdmlslbt. */ - return 2189; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010110xxxxxxx1100xxxxxxxxxx + autiza. */ + return 705; } } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0xx0xxxxx0001xxxxxxxxxxxx - cdot. */ - return 2071; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 110001x00x0xxxxx000xxxxxxxxxxxxx - ld1sb. */ - return 1577; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 110001x01x0xxxxx000xxxxxxxxxxxxx - ld1sh. */ - return 1588; - } } } } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010x00xxxxxx0xx10xxxxxxxxxx + setf8. */ + return 2449; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010x00xxxxxx1xx10xxxxxxxxxx + setf16. */ + return 2450; + } + } else { - if (((word >> 30) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 10) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010010xxxxxxxxx10xxxxxxxxxx + ccmn. */ + return 658; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010010xxxxxxxxx10xxxxxxxxxx + ccmp. */ + return 659; + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx1xxxxx000000xxxxxxxxxx - add. */ - return 1289; + x0x11010110xxxxxx00010xxxxxxxxxx + udiv. */ + return 711; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx000100xxxxxxxxxx - sqadd. */ - return 1846; + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 01x11010110xxxx0x00010xxxxxxxxxx + rev. */ + return 687; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 11x11010110xxxx0x00010xxxxxxxxxx + rev32. */ + return 692; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010110xxxx1x00010xxxxxxxxxx + pacda. */ + return 695; + } } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx1xxxxx000x10xxxxxxxxxx - sqsub. */ - return 1876; + xxx11010110xxxxxx10010xxxxxxxxxx + crc32w. */ + return 729; } } else { - if (((word >> 11) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx000001xxxxxxxxxx - sub. */ - return 1958; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx1xxxxx000101xxxxxxxxxx - uqadd. */ - return 1994; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010110xxxxxxx1010xxxxxxxxxx + asrv. */ + return 717; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx1xxxxx000x11xxxxxxxxxx - uqsub. */ - return 2024; + x1x11010110xxxxxxx1010xxxxxxxxxx + pacdza. */ + return 703; } } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { - /* 33222222222211111111110000000000 + if (((word >> 14) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010110xxxxxx00110xxxxxxxxxx + autda. */ + return 699; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010110xxxxxx10110xxxxxxxxxx + crc32cw. */ + return 733; + } + } + else + { + /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x00x1xxxxx000xxxxxxxxxxxxx - prfb. */ - return 1779; + xxx11010110xxxxxxx1110xxxxxxxxxx + autdza. */ + return 707; + } + } + } + } + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010000xxxxxxxxx01xxxxxxxxxx + rmif. */ + return 2448; + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010100xxxxxxxxx01xxxxxxxxxx + csinc. */ + return 663; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010100xxxxxxxxx01xxxxxxxxxx + csneg. */ + return 669; + } + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010x10xxxx0x00001xxxxxxxxxx + rev16. */ + return 686; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010x10xxxx1x00001xxxxxxxxxx + pacib. */ + return 694; + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010x10xxxxxx10001xxxxxxxxxx + crc32h. */ + return 728; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010x10xxxxxx10001xxxxxxxxxx + xpacd. */ + return 710; + } + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010x10xxxxxxx1001xxxxxxxxxx + lsrv. */ + return 715; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 100001x01x1xxxxx000xxxxxxxxxxxxx - ld1sh. */ - return 1585; + x1x11010x10xxxxxxx1001xxxxxxxxxx + pacizb. */ + return 702; } } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - if (((word >> 10) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x00x1xxxxx000x00xxxxxxxxxx - sqrdmlah. */ - return 2207; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x00x1xxxxx000x10xxxxxxxxxx - mla. */ - return 2114; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010x10xxxxxx00101xxxxxxxxxx + gmi. */ + return 725; } else { - if (((word >> 11) & 0x1) == 0) + if (((word >> 16) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 010001x00x1xxxxx000x01xxxxxxxxxx - sqrdmlsh. */ - return 2211; + x1x11010x10xxxx0x00101xxxxxxxxxx + cls. */ + return 691; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 010001x00x1xxxxx000x11xxxxxxxxxx - mls. */ - return 2117; + x1x11010x10xxxx1x00101xxxxxxxxxx + autib. */ + return 698; } } } @@ -4759,71 +4574,916 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 110001x00x1xxxxx000xxxxxxxxxxxxx - prfb. */ - return 1780; + xxx11010x10xxxxxx10101xxxxxxxxxx + crc32ch. */ + return 732; } } else { - if (((word >> 31) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010x10xxxxxxx1101xxxxxxxxxx + autizb. */ + return 706; + } + } + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) { - if (((word >> 10) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010xx0xxxxxx00011xxxxxxxxxx + sdiv. */ + return 712; + } + else + { + if (((word >> 16) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) - { - if (((word >> 12) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0101xxxxx000000xxxxxxxxxx - sdot. */ - return 1833; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0111xxxxx000000xxxxxxxxxx - sdot. */ - return 1834; - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0101xxxxx000100xxxxxxxxxx - sqrdmlah. */ - return 2208; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0111xxxxx000100xxxxxxxxxx - sqrdmlah. */ - return 2209; - } - } - } - else - { - if (((word >> 12) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0101xxxxx000010xxxxxxxxxx - mla. */ - return 2115; - } - else + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010xx0xxxx0x00011xxxxxxxxxx + rev. */ + return 688; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010xx0xxxx1x00011xxxxxxxxxx + pacdb. */ + return 696; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010xx0xxxxxx10011xxxxxxxxxx + crc32x. */ + return 730; + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x11010xx0xxxxxxx1011xxxxxxxxxx + rorv. */ + return 719; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1x11010xx0xxxxxxx1011xxxxxxxxxx + pacdzb. */ + return 704; + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010xx0xxxxxx00111xxxxxxxxxx + autdb. */ + return 700; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010xx0xxxxxx10111xxxxxxxxxx + crc32cx. */ + return 734; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11010xx0xxxxxxx1111xxxxxxxxxx + autdzb. */ + return 708; + } + } + } + } + } + } + else + { + if (((word >> 29) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00x1010xx1xxxxxxxxxxxxxxxxxxxxx + bic. */ + return 1003; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10x1010xx1xxxxxxxxxxxxxxxxxxxxx + eon. */ + return 1010; + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01x1010xx1xxxxxxxxxxxxxxxxxxxxx + orn. */ + return 1007; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11x1010xx1xxxxxxxxxxxxxxxxxxxxx + bics. */ + return 1013; + } + } + } + } + } + else + { + if (((word >> 27) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 29) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00x00110xxxxxxxxxxxxxxxxxxxxxxx + sbfm. */ + return 618; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10x00110xxxxxxxxxxxxxxxxxxxxxxx + ubfm. */ + return 629; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1x00110xxxxxxxxxxxxxxxxxxxxxxx + bfm. */ + return 625; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxxx00111xxxxxxxxxxxxxxxxxxxxxxx + extr. */ + return 758; + } + } + else + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 28) & 0x1) == 0) + { + if (((word >> 29) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0001011xx0xxxxxxxxxxxxxxxxxxxxx + add. */ + return 21; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1001011xx0xxxxxxxxxxxxxxxxxxxxx + sub. */ + return 24; + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0101011xx0xxxxxxxxxxxxxxxxxxxxx + adds. */ + return 22; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1101011xx0xxxxxxxxxxxxxxxxxxxxx + subs. */ + return 26; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11011x00xxxxx0xxxxxxxxxxxxxxx + madd. */ + return 735; + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11011010xxxxx0xxxxxxxxxxxxxxx + smulh. */ + return 743; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11011110xxxxx0xxxxxxxxxxxxxxx + umulh. */ + return 748; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx11011xx0xxxxx1xxxxxxxxxxxxxxx + msub. */ + return 737; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 28) & 0x1) == 0) + { + if (((word >> 29) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00010110x1xxxxxxxxxxxxxxxxxxxxx + add. */ + return 6; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10010110x1xxxxxxxxxxxxxxxxxxxxx + sub. */ + return 9; + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01010110x1xxxxxxxxxxxxxxxxxxxxx + adds. */ + return 7; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x11010110x1xxxxxxxxxxxxxxxxxxxxx + subs. */ + return 10; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx110110x1xxxxx0xxxxxxxxxxxxxxx + smaddl. */ + return 739; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx110110x1xxxxx1xxxxxxxxxxxxxxx + smsubl. */ + return 741; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxxx10111x1xxxxx0xxxxxxxxxxxxxxx + umaddl. */ + return 744; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxxx10111x1xxxxx1xxxxxxxxxxxxxxx + umsubl. */ + return 746; + } + } + } + } + } + } + } + else + { + if (((word >> 27) & 0x1) == 0) + { + if (((word >> 28) & 0x1) == 0) + { + if (((word >> 24) & 0x1) == 0) + { + if (((word >> 29) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx000000000xxxxxxxxxxxxx + add. */ + return 1291; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx010000000xxxxxxxxxxxxx + mul. */ + return 1760; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001000000xxxxxxxxxxxxx + smax. */ + return 1839; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011000000xxxxxxxxxxxxx + orr. */ + return 1771; + } + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0100000xxxxxxxxxxxxx + sdiv. */ + return 1830; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x1100000xxxxxxxxxxxxx + sabd. */ + return 1821; + } + } + } + else + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0010000xxxxxxxxxxxxx + smulh. */ + return 1844; + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001010000xxxxxxxxxxxxx + smin. */ + return 1842; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011010000xxxxxxxxxxxxx + and. */ + return 1299; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0xx110000xxxxxxxxxxxxx + sdivr. */ + return 1831; + } + } + } + else + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0001000xxxxxxxxxxxxx + sub. */ + return 1960; + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001001000xxxxxxxxxxxxx + umax. */ + return 1988; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011001000xxxxxxxxxxxxx + eor. */ + return 1386; + } + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x0101000xxxxxxxxxxxxx + udiv. */ + return 1982; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0x1101000xxxxxxxxxxxxx + uabd. */ + return 1973; + } + } + } + else + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx000011000xxxxxxxxxxxxx + subr. */ + return 1962; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx010011000xxxxxxxxxxxxx + umulh. */ + return 1993; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx001011000xxxxxxxxxxxxx + umin. */ + return 1991; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011011000xxxxxxxxxxxxx + bic. */ + return 1311; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx0xx111000xxxxxxxxxxxxx + udivr. */ + return 1983; + } + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x00x0xxxxx000xxxxxxxxxxxxx + ld1sb. */ + return 1573; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x01x0xxxxx000xxxxxxxxxxxxx + ld1sh. */ + return 1584; + } + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx000000xxxxxxxxxx + sdot. */ + return 1832; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx000010xxxxxxxxxx + sqdmlalbt. */ + return 2182; + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx000001xxxxxxxxxx + udot. */ + return 1984; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx000011xxxxxxxxxx + sqdmlslbt. */ + return 2189; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xxxxx0001xxxxxxxxxxxx + cdot. */ + return 2071; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x00x0xxxxx000xxxxxxxxxxxxx + ld1sb. */ + return 1577; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x01x0xxxxx000xxxxxxxxxxxxx + ld1sh. */ + return 1588; + } + } + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx000000xxxxxxxxxx + add. */ + return 1289; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx000100xxxxxxxxxx + sqadd. */ + return 1846; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx000x10xxxxxxxxxx + sqsub. */ + return 1876; + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx000001xxxxxxxxxx + sub. */ + return 1958; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx000101xxxxxxxxxx + uqadd. */ + return 1994; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx1xxxxx000x11xxxxxxxxxx + uqsub. */ + return 2024; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x00x1xxxxx000xxxxxxxxxxxxx + prfb. */ + return 1779; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100001x01x1xxxxx000xxxxxxxxxxxxx + ld1sh. */ + return 1585; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x00x1xxxxx000x00xxxxxxxxxx + sqrdmlah. */ + return 2207; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x00x1xxxxx000x10xxxxxxxxxx + mla. */ + return 2114; + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x00x1xxxxx000x01xxxxxxxxxx + sqrdmlsh. */ + return 2211; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x00x1xxxxx000x11xxxxxxxxxx + mls. */ + return 2117; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 110001x00x1xxxxx000xxxxxxxxxxxxx + prfb. */ + return 1780; + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx000000xxxxxxxxxx + sdot. */ + return 1833; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx000000xxxxxxxxxx + sdot. */ + return 1834; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx000100xxxxxxxxxx + sqrdmlah. */ + return 2208; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0111xxxxx000100xxxxxxxxxx + sqrdmlah. */ + return 2209; + } + } + } + else + { + if (((word >> 12) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0101xxxxx000010xxxxxxxxxx + mla. */ + return 2115; + } + else { /* 33222222222211111111110000000000 10987654321098765432109876543210 @@ -15414,150 +16074,430 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 11) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 12) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10x10010x00xxxxxxxxxxx + incp. */ + return 1501; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10x10010x10xxxxxxxxxxx + setffr. */ + return 1837; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10x10010xx1xxxxxxxxxxx + incp. */ + return 1502; + } + } + } + else + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10xx1010xx00xxxxxxxxxx + sqdecp. */ + return 1856; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10xx1010xx10xxxxxxxxxx + sqdecp. */ + return 1858; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10xx1010xxx1xxxxxxxxxx + sqdecp. */ + return 1857; + } + } + } + else + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10x00110xx00xxxxxxxxxx + uqincp. */ + return 2018; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10x10110xx00xxxxxxxxxx + decp. */ + return 1376; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10xx1110xx00xxxxxxxxxx + uqdecp. */ + return 2004; + } + } + else + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10x00110xx10xxxxxxxxxx + uqincp. */ + return 2019; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10x10110xx10xxxxxxxxxx + decp. */ + return 1377; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10xx1110xx10xxxxxxxxxx + uqdecp. */ + return 2005; + } + } + } + else + { + if (((word >> 17) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10xx0110xxx1xxxxxxxxxx + uqincp. */ + return 2020; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10xx1110xxx1xxxxxxxxxx + uqdecp. */ + return 2006; + } + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x10010xxxx10xxxxxxxxxxxxxx + ld1sh. */ + return 1594; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x11010xxxx10xxxxxxxxxxxxxx + ld1sb. */ + return 1581; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x10110xxxx10xxxxxxxxxxxxxx + ld1w. */ + return 1613; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x11110xxxx10xxxxxxxxxxxxxx + ld1d. */ + return 1533; + } + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x10011xxxx10xxxxxxxxxxxxxx + ldnf1sh. */ + return 1727; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x11011xxxx10xxxxxxxxxxxxxx + ldnf1sb. */ + return 1724; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x10111xxxx10xxxxxxxxxxxxxx + ldnf1w. */ + return 1730; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01001x11111xxxx10xxxxxxxxxxxxxx + ldnf1d. */ + return 1719; + } + } + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) { - if (((word >> 12) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x10010x00xxxxxxxxxxx - incp. */ - return 1501; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x10010x10xxxxxxxxxxx - setffr. */ - return 1837; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10000011xxxxxxxxxxxxxx + add. */ + return 1290; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10x10010xx1xxxxxxxxxxx - incp. */ - return 1502; + 001001x1xx11000011xxxxxxxxxxxxxx + mul. */ + return 1759; } } - } - else - { - if (((word >> 10) & 0x1) == 0) + else { - if (((word >> 11) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10xx1010xx00xxxxxxxxxx - sqdecp. */ - return 1856; + 001001x1xx10100011xxxxxxxxxxxxxx + smax. */ + return 1838; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10xx1010xx10xxxxxxxxxx - sqdecp. */ - return 1858; + 001001x1xx11100011xxxxxxxxxxxxxx + dup. */ + return 1382; } } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10xx1010xxx1xxxxxxxxxx - sqdecp. */ - return 1857; - } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xx10011xxxxxxxxxxxxxx + sqadd. */ + return 1847; } } else { - if (((word >> 10) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - if (((word >> 11) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xx01011xxxxxxxxxxxxxx + smin. */ + return 1841; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xx11011xxxxxxxxxxxxxx + sqsub. */ + return 1877; + } + } + } + else + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) - { - if (((word >> 18) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x00110xx00xxxxxxxxxx - uqincp. */ - return 2018; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x10110xx00xxxxxxxxxx - decp. */ - return 1376; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10xx1110xx00xxxxxxxxxx - uqdecp. */ - return 2004; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1x000111xxxxxxxxxxxxxx + sub. */ + return 1959; } else { - if (((word >> 17) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x00110xx10xxxxxxxxxx - uqincp. */ - return 2019; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10x10110xx10xxxxxxxxxx - decp. */ - return 1377; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx10100111xxxxxxxxxxxxxx + umax. */ + return 1987; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10xx1110xx10xxxxxxxxxx - uqdecp. */ - return 2005; + 001001x1xx11100111xxxxxxxxxxxxxx + fdup. */ + return 1438; } } } else { - if (((word >> 17) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xx10111xxxxxxxxxxxxxx + uqadd. */ + return 1995; + } + } + else + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10xx0110xxx1xxxxxxxxxx - uqincp. */ - return 2020; + 001001x1xx1x001111xxxxxxxxxxxxxx + subr. */ + return 1961; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx10xx1110xxx1xxxxxxxxxx - uqdecp. */ - return 2006; + 001001x1xx1x101111xxxxxxxxxxxxxx + umin. */ + return 1990; } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xx11111xxxxxxxxxxxxxx + uqsub. */ + return 2025; + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x1001xxxxx110xxxxxxxxxxxxx + ld2w. */ + return 1621; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x1101xxxxx110xxxxxxxxxxxxx + ld2d. */ + return 1617; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x1011xxxxx110xxxxxxxxxxxxx + ld4w. */ + return 1637; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 101001x1111xxxxx110xxxxxxxxxxxxx + ld4d. */ + return 1633; + } } } else @@ -15568,17 +16508,17 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x10010xxxx10xxxxxxxxxxxxxx - ld1sh. */ - return 1594; + 101001x1001xxxxx111xxxxxxxxxxxxx + ld2w. */ + return 1622; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x11010xxxx10xxxxxxxxxxxxxx - ld1sb. */ - return 1581; + 101001x1101xxxxx111xxxxxxxxxxxxx + ld2d. */ + return 1618; } } else @@ -15587,21 +16527,46 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x10110xxxx10xxxxxxxxxxxxxx - ld1w. */ - return 1613; + 101001x1011xxxxx111xxxxxxxxxxxxx + ld4w. */ + return 1638; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 101001x11110xxxx10xxxxxxxxxxxxxx - ld1d. */ - return 1533; + 101001x1111xxxxx111xxxxxxxxxxxxx + ld4d. */ + return 1634; } } } } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx1xxxxx100xxxxxxxxxxxxx + fmad. */ + return 1440; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx1xxxxx110xxxxxxxxxxxxx + fnmad. */ + return 1470; + } + } else { if (((word >> 22) & 0x1) == 0) @@ -15610,275 +16575,284 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x01001x10011xxxx10xxxxxxxxxxxxxx - ldnf1sh. */ - return 1727; + 111001x1001xxxxx1x0xxxxxxxxxxxxx + st1w. */ + return 1914; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x01001x11011xxxx10xxxxxxxxxxxxxx - ldnf1sb. */ - return 1724; + 111001x1101xxxxx1x0xxxxxxxxxxxxx + st1d. */ + return 1893; } } else { - if (((word >> 23) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x1x11xxxxx1x0xxxxxxxxxxxxx + st1w. */ + return 1919; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx1xxxxx101xxxxxxxxxxxxx + fmsb. */ + return 1461; + } + else + { + if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x01001x10111xxxx10xxxxxxxxxxxxxx - ldnf1w. */ - return 1730; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x1001xxxxx101xxxxxxxxxxxxx + st1w. */ + return 1915; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x1101xxxxx101xxxxxxxxxxxxx + st1d. */ + return 1894; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x01001x11111xxxx10xxxxxxxxxxxxxx - ldnf1d. */ - return 1719; + 111001x1x11xxxxx101xxxxxxxxxxxxx + st1w. */ + return 1922; } } } - } - else - { - if (((word >> 31) & 0x1) == 0) + else { - if (((word >> 16) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx1xxxxx111xxxxxxxxxxxxx + fnmsb. */ + return 1473; + } + else + { + if (((word >> 20) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x10x10xxxx111xxxxxxxxxxxxx + st1w. */ + return 1923; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x11x10xxxx111xxxxxxxxxxxxx + st1d. */ + return 1897; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10000011xxxxxxxxxxxxxx - add. */ - return 1290; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx11000011xxxxxxxxxxxxxx - mul. */ - return 1759; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x10011xxxx111xxxxxxxxxxxxx + st2w. */ + return 1931; } else { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10100011xxxxxxxxxxxxxx - smax. */ - return 1838; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx11100011xxxxxxxxxxxxxx - dup. */ - return 1382; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x11011xxxx111xxxxxxxxxxxxx + st2d. */ + return 1927; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx1xx10011xxxxxxxxxxxxxx - sqadd. */ - return 1847; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x10111xxxx111xxxxxxxxxxxxx + st4w. */ + return 1947; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x11111xxxx111xxxxxxxxxxxxx + st4d. */ + return 1943; + } } } + } + } + } + } + } + } + } + } + } + else + { + if (((word >> 29) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000101xxxxxxxxxxxxxxxxxxxxxxxxxx + b. */ + return 636; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100101xxxxxxxxxxxxxxxxxxxxxxxxxx + bl. */ + return 637; + } + } + else + { + if (((word >> 24) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + if (((word >> 25) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 01010100xxxxxxxxxxxxxxxxxxx0xxxx + b.c. */ + return 657; + } + else + { + if (((word >> 0) & 0x1) == 0) + { + if (((word >> 1) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 11010100xx0xxxxxxxxxxxxxxxx0xx00 + hlt. */ + return 753; + } else { - if (((word >> 18) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx1xx01011xxxxxxxxxxxxxx - smin. */ - return 1841; + 11010100x01xxxxxxxxxxxxxxxx0xx00 + brk. */ + return 752; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx1xx11011xxxxxxxxxxxxxx - sqsub. */ - return 1877; + 11010100x11xxxxxxxxxxxxxxxx0xx00 + tcancel. */ + return 1196; } } } else { - if (((word >> 17) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) - { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx1x000111xxxxxxxxxxxxxx - sub. */ - return 1959; - } - else - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx10100111xxxxxxxxxxxxxx - umax. */ - return 1987; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx11100111xxxxxxxxxxxxxx - fdup. */ - return 1438; - } - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx1xx10111xxxxxxxxxxxxxx - uqadd. */ - return 1995; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 11010100xx0xxxxxxxxxxxxxxxx0xx10 + hvc. */ + return 750; } else { - if (((word >> 18) & 0x1) == 0) - { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx1x001111xxxxxxxxxxxxxx - subr. */ - return 1961; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx1x101111xxxxxxxxxxxxxx - umin. */ - return 1990; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx1xx11111xxxxxxxxxxxxxx - uqsub. */ - return 2025; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 11010100xx1xxxxxxxxxxxxxxxx0xx10 + dcps2. */ + return 756; } } } else { - if (((word >> 13) & 0x1) == 0) + if (((word >> 1) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x1001xxxxx110xxxxxxxxxxxxx - ld2w. */ - return 1621; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x1101xxxxx110xxxxxxxxxxxxx - ld2d. */ - return 1617; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 11010100xx0xxxxxxxxxxxxxxxx0xx01 + svc. */ + return 749; } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x1011xxxxx110xxxxxxxxxxxxx - ld4w. */ - return 1637; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x1111xxxxx110xxxxxxxxxxxxx - ld4d. */ - return 1633; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 11010100xx1xxxxxxxxxxxxxxxx0xx01 + dcps1. */ + return 755; } } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x1001xxxxx111xxxxxxxxxxxxx - ld2w. */ - return 1622; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x1101xxxxx111xxxxxxxxxxxxx - ld2d. */ - return 1618; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 11010100xx0xxxxxxxxxxxxxxxx0xx11 + smc. */ + return 751; } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x1011xxxxx111xxxxxxxxxxxxx - ld4w. */ - return 1638; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 101001x1111xxxxx111xxxxxxxxxxxxx - ld4d. */ - return 1634; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 11010100xx1xxxxxxxxxxxxxxxx0xx11 + dcps3. */ + return 757; } } } @@ -15886,518 +16860,534 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 13) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 14) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx1xxxxx100xxxxxxxxxxxxx - fmad. */ - return 1440; + x1010110000xxxxxxxxxxxxxxxx0xxxx + br. */ + return 638; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx1xxxxx110xxxxxxxxxxxxx - fnmad. */ - return 1470; + x1010110100xxxxxxxxxxxxxxxx0xxxx + eret. */ + return 641; } } else { - if (((word >> 22) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1010110x10xxxxxxxxxxxxxxxx0xxxx + ret. */ + return 640; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10101100x1xxxxxxxxxxxxxxxx0xxxx + blr. */ + return 639; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10101101x1xxxxxxxxxxxxxxxx0xxxx + drps. */ + return 642; + } + } + } + } + else + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x1001xxxxx1x0xxxxxxxxxxxxx - st1w. */ - return 1914; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x1101xxxxx1x0xxxxxxxxxxxxx - st1d. */ - return 1893; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10101x0000xxxxxxxxxx0xxxxx1xxxx + braaz. */ + return 647; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 111001x1x11xxxxx1x0xxxxxxxxxxxxx - st1w. */ - return 1919; + x10101x0100xxxxxxxxxx0xxxxx1xxxx + eretaa. */ + return 653; } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10101x0x10xxxxxxxxxx0xxxxx1xxxx + retaa. */ + return 651; + } } else { - if (((word >> 14) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10101x0xx1xxxxxxxxxx0xxxxx1xxxx + blraaz. */ + return 649; + } + } + else + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx1xxxxx101xxxxxxxxxxxxx - fmsb. */ - return 1461; + x10101x0000xxxxxxxxxx1xxxxx1xxxx + brabz. */ + return 648; } else { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x1001xxxxx101xxxxxxxxxxxxx - st1w. */ - return 1915; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x1101xxxxx101xxxxxxxxxxxxx - st1d. */ - return 1894; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x1x11xxxxx101xxxxxxxxxxxxx - st1w. */ - return 1922; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10101x0100xxxxxxxxxx1xxxxx1xxxx + eretab. */ + return 654; } } else { - if (((word >> 31) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx1xxxxx111xxxxxxxxxxxxx - fnmsb. */ - return 1473; - } - else - { - if (((word >> 20) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x10x10xxxx111xxxxxxxxxxxxx - st1w. */ - return 1923; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x11x10xxxx111xxxxxxxxxxxxx - st1d. */ - return 1897; - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x10011xxxx111xxxxxxxxxxxxx - st2w. */ - return 1931; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x11011xxxx111xxxxxxxxxxxxx - st2d. */ - return 1927; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x10111xxxx111xxxxxxxxxxxxx - st4w. */ - return 1947; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x11111xxxx111xxxxxxxxxxxxx - st4d. */ - return 1943; - } - } - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10101x0x10xxxxxxxxxx1xxxxx1xxxx + retab. */ + return 652; } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10101x0xx1xxxxxxxxxx1xxxxx1xxxx + blrabz. */ + return 650; + } + } + } + } + else + { + if (((word >> 21) & 0x1) == 0) + { + if (((word >> 25) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1010101xx0xxxxxxxxxxxxxxxxxxxxx + xaflag. */ + return 811; + } + else + { + if (((word >> 10) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1010111xx0xxxxxxxxxx0xxxxxxxxxx + braa. */ + return 643; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1010111xx0xxxxxxxxxx1xxxxxxxxxx + brab. */ + return 644; + } + } + } + else + { + if (((word >> 25) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1010101xx1xxxxxxxxxxxxxxxxxxxxx + tstart. */ + return 1193; + } + else + { + if (((word >> 10) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1010111xx1xxxxxxxxxx0xxxxxxxxxx + blraa. */ + return 645; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1010111xx1xxxxxxxxxx1xxxxxxxxxx + blrab. */ + return 646; + } } } } } } + else + { + if (((word >> 24) & 0x1) == 0) + { + if (((word >> 25) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx110100xxxxxxxxxxxxxxxxxxxxxxxx + cbz. */ + return 655; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx110110xxxxxxxxxxxxxxxxxxxxxxxx + tbz. */ + return 1251; + } + } + else + { + if (((word >> 25) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx110101xxxxxxxxxxxxxxxxxxxxxxxx + cbnz. */ + return 656; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx110111xxxxxxxxxxxxxxxxxxxxxxxx + tbnz. */ + return 1252; + } + } + } } - else + } + else + { + if (((word >> 25) & 0x1) == 0) { - if (((word >> 29) & 0x1) == 0) + if (((word >> 28) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 23) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000101xxxxxxxxxxxxxxxxxxxxxxxxxx - b. */ - return 636; + if (((word >> 24) & 0x1) == 0) + { + if (((word >> 29) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx00110000xxxxxxxxxxxxxxxxxxxxxx + st4. */ + return 440; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx10110000xxxxxxxxxxxxxxxxxxxxxx + stnp. */ + return 973; + } + } + else + { + if (((word >> 29) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 21) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx001101000xxxxxxx0xxxxxxxxxxxxx + st1. */ + return 456; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx001101001xxxxxxx0xxxxxxxxxxxxx + st2. */ + return 458; + } + } + else + { + if (((word >> 21) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx001101000xxxxxxx1xxxxxxxxxxxxx + st3. */ + return 457; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx001101001xxxxxxx1xxxxxxxxxxxxx + st4. */ + return 459; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx10110100xxxxxxxxxxxxxxxxxxxxxx + stp. */ + return 977; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 100101xxxxxxxxxxxxxxxxxxxxxxxxxx - bl. */ - return 637; - } - } - else - { - if (((word >> 24) & 0x1) == 0) - { - if (((word >> 4) & 0x1) == 0) + if (((word >> 29) & 0x1) == 0) { - if (((word >> 25) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 24) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 01010100xxxxxxxxxxxxxxxxxxx0xxxx - b.c. */ - return 657; + xx001100100xxxxxxxxxxxxxxxxxxxxx + st4. */ + return 448; } else { - if (((word >> 0) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { - if (((word >> 1) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 11010100xx0xxxxxxxxxxxxxxxx0xx00 - hlt. */ - return 753; - } - else - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 11010100x01xxxxxxxxxxxxxxxx0xx00 - brk. */ - return 752; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 11010100x11xxxxxxxxxxxxxxxx0xx00 - tcancel. */ - return 1196; - } - } - } - else - { - if (((word >> 21) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 11010100xx0xxxxxxxxxxxxxxxx0xx10 - hvc. */ - return 750; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 11010100xx1xxxxxxxxxxxxxxxx0xx10 - dcps2. */ - return 756; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx001101100xxxxxxx0xxxxxxxxxxxxx + st1. */ + return 468; } else { - if (((word >> 1) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 11010100xx0xxxxxxxxxxxxxxxx0xx01 - svc. */ - return 749; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 11010100xx1xxxxxxxxxxxxxxxx0xx01 - dcps1. */ - return 755; - } - } - else - { - if (((word >> 21) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 11010100xx0xxxxxxxxxxxxxxxx0xx11 - smc. */ - return 751; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 11010100xx1xxxxxxxxxxxxxxxx0xx11 - dcps3. */ - return 757; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx001101100xxxxxxx1xxxxxxxxxxxxx + st3. */ + return 469; } } } - else + else + { + if (((word >> 13) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx00110x101xxxxxxx0xxxxxxxxxxxxx + st2. */ + return 470; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx00110x101xxxxxxx1xxxxxxxxxxxxx + st4. */ + return 471; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx10110x10xxxxxxxxxxxxxxxxxxxxxx + stp. */ + return 983; + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 24) & 0x1) == 0) + { + if (((word >> 29) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx00110001xxxxxxxxxxxxxxxxxxxxxx + ld4. */ + return 444; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx10110001xxxxxxxxxxxxxxxxxxxxxx + ldnp. */ + return 974; + } + } + else + { + if (((word >> 29) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1010110000xxxxxxxxxxxxxxxx0xxxx - br. */ - return 638; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1010110100xxxxxxxxxxxxxxxx0xxxx - eret. */ - return 641; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx001101010xxxxxxx0xxxxxxxxxxxxx + ld1. */ + return 460; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1010110x10xxxxxxxxxxxxxxxx0xxxx - ret. */ - return 640; + xx001101011xxxxxxx0xxxxxxxxxxxxx + ld2. */ + return 464; } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10101100x1xxxxxxxxxxxxxxxx0xxxx - blr. */ - return 639; + xx001101010xxxxxxx1xxxxxxxxxxxxx + ld3. */ + return 461; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10101101x1xxxxxxxxxxxxxxxx0xxxx - drps. */ - return 642; + xx001101011xxxxxxx1xxxxxxxxxxxxx + ld4. */ + return 465; } } } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx10110101xxxxxxxxxxxxxxxxxxxxxx + ldp. */ + return 978; + } } - else + } + else + { + if (((word >> 29) & 0x1) == 0) { - if (((word >> 10) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10101x0000xxxxxxxxxx0xxxxx1xxxx - braaz. */ - return 647; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10101x0100xxxxxxxxxx0xxxxx1xxxx - eretaa. */ - return 653; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10101x0x10xxxxxxxxxx0xxxxx1xxxx - retaa. */ - return 651; - } - } - else + if (((word >> 24) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10101x0xx1xxxxxxxxxx0xxxxx1xxxx - blraaz. */ - return 649; + xx001100110xxxxxxxxxxxxxxxxxxxxx + ld4. */ + return 452; } - } - else - { - if (((word >> 21) & 0x1) == 0) + else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10101x0000xxxxxxxxxx1xxxxx1xxxx - brabz. */ - return 648; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10101x0100xxxxxxxxxx1xxxxx1xxxx - eretab. */ - return 654; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx001101110xxxxxxx0xxxxxxxxxxxxx + ld1. */ + return 472; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x10101x0x10xxxxxxxxxx1xxxxx1xxxx - retab. */ - return 652; + xx001101110xxxxxxx1xxxxxxxxxxxxx + ld3. */ + return 473; } } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x10101x0xx1xxxxxxxxxx1xxxxx1xxxx - blrabz. */ - return 650; - } - } - } - } - else - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 25) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1010101xx0xxxxxxxxxxxxxxxxxxxxx - xaflag. */ - return 811; } else { - if (((word >> 10) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1010111xx0xxxxxxxxxx0xxxxxxxxxx - braa. */ - return 643; + xx00110x111xxxxxxx0xxxxxxxxxxxxx + ld2. */ + return 476; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1010111xx0xxxxxxxxxx1xxxxxxxxxx - brab. */ - return 644; + xx00110x111xxxxxxx1xxxxxxxxxxxxx + ld4. */ + return 477; } } } else { - if (((word >> 25) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1010101xx1xxxxxxxxxxxxxxxxxxxxx - tstart. */ - return 1193; - } - else - { - if (((word >> 10) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1010111xx1xxxxxxxxxx0xxxxxxxxxx - blraa. */ - return 645; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1010111xx1xxxxxxxxxx1xxxxxxxxxx - blrab. */ - return 646; - } - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx10110x11xxxxxxxxxxxxxxxxxxxxxx + ldp. */ + return 984; } } } @@ -16406,427 +17396,757 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 24) & 0x1) == 0) { - if (((word >> 25) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx110100xxxxxxxxxxxxxxxxxxxxxxxx - cbz. */ - return 655; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx110110xxxxxxxxxxxxxxxxxxxxxxxx - tbz. */ - return 1251; - } - } - else - { - if (((word >> 25) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx110101xxxxxxxxxxxxxxxxxxxxxxxx - cbnz. */ - return 656; - } - else + if (((word >> 29) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx110111xxxxxxxxxxxxxxxxxxxxxxxx - tbnz. */ - return 1252; - } - } - } - } - } - else - { - if (((word >> 25) & 0x1) == 0) - { - if (((word >> 28) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) + xx011100xxxxxxxxxxxxxxxxxxxxxxxx + ldr. */ + return 988; + } + else { - if (((word >> 24) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 29) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx111100x0xxxxxxxxxx00xxxxxxxxxx + stur. */ + return 925; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx111100x1xxxxxxxxxx00xxxxxxxxxx + ldur. */ + return 926; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx111100x0xxxxxxxxxx10xxxxxxxxxx + str. */ + return 904; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx111100x1xxxxxxxxxx10xxxxxxxxxx + ldr. */ + return 905; + } + } + } + else + { + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx00110000xxxxxxxxxxxxxxxxxxxxxx - st4. */ - return 440; + xx111100x0xxxxxxxxxxx1xxxxxxxxxx + str. */ + return 873; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx10110000xxxxxxxxxxxxxxxxxxxxxx - stnp. */ - return 973; + xx111100x1xxxxxxxxxxx1xxxxxxxxxx + ldr. */ + return 874; } } - else + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 29) & 0x1) == 0) { - if (((word >> 29) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { if (((word >> 13) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101000xxxxxxx0xxxxxxxxxxxxx - st1. */ - return 456; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0000xxxxxxxxxxxx + cpyp. */ + return 2559; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0000xxxxxxxxxxxx + cpye. */ + return 2561; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1000xxxxxxxxxxxx + cpyprn. */ + return 2565; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1000xxxxxxxxxxxx + cpyern. */ + return 2567; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101001xxxxxxx0xxxxxxxxxxxxx - st2. */ - return 458; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0100xxxxxxxxxxxx + cpypwn. */ + return 2562; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0100xxxxxxxxxxxx + cpyewn. */ + return 2564; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1100xxxxxxxxxxxx + cpypn. */ + return 2568; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1100xxxxxxxxxxxx + cpyen. */ + return 2570; + } + } } } else { - if (((word >> 21) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101000xxxxxxx1xxxxxxxxxxxxx - st3. */ - return 457; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0010xxxxxxxxxxxx + cpyprt. */ + return 2583; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0010xxxxxxxxxxxx + cpyert. */ + return 2585; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1010xxxxxxxxxxxx + cpyprtrn. */ + return 2589; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1010xxxxxxxxxxxx + cpyertrn. */ + return 2591; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101001xxxxxxx1xxxxxxxxxxxxx - st4. */ - return 459; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0110xxxxxxxxxxxx + cpyprtwn. */ + return 2586; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0110xxxxxxxxxxxx + cpyertwn. */ + return 2588; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1110xxxxxxxxxxxx + cpyprtn. */ + return 2592; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1110xxxxxxxxxxxx + cpyertn. */ + return 2594; + } + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0001xxxxxxxxxxxx + cpypwt. */ + return 2571; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0001xxxxxxxxxxxx + cpyewt. */ + return 2573; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1001xxxxxxxxxxxx + cpypwtrn. */ + return 2577; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1001xxxxxxxxxxxx + cpyewtrn. */ + return 2579; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0101xxxxxxxxxxxx + cpypwtwn. */ + return 2574; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0101xxxxxxxxxxxx + cpyewtwn. */ + return 2576; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1101xxxxxxxxxxxx + cpypwtn. */ + return 2580; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1101xxxxxxxxxxxx + cpyewtn. */ + return 2582; + } + } } } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx10110100xxxxxxxxxxxxxxxxxxxxxx - stp. */ - return 977; - } - } - } - else - { - if (((word >> 29) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 24) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001100100xxxxxxxxxxxxxxxxxxxxx - st4. */ - return 448; - } else { - if (((word >> 13) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101100xxxxxxx0xxxxxxxxxxxxx - st1. */ - return 468; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0011xxxxxxxxxxxx + cpypt. */ + return 2595; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0011xxxxxxxxxxxx + cpyet. */ + return 2597; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1011xxxxxxxxxxxx + cpyptrn. */ + return 2601; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1011xxxxxxxxxxxx + cpyetrn. */ + return 2603; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101100xxxxxxx1xxxxxxxxxxxxx - st3. */ - return 469; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx0111xxxxxxxxxxxx + cpyptwn. */ + return 2598; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx0111xxxxxxxxxxxx + cpyetwn. */ + return 2600; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110100xxxxxx1111xxxxxxxxxxxx + cpyptn. */ + return 2604; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110110xxxxxx1111xxxxxxxxxxxx + cpyetn. */ + return 2606; + } + } } } } - else - { - if (((word >> 13) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx00110x101xxxxxxx0xxxxxxxxxxxxx - st2. */ - return 470; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx00110x101xxxxxxx1xxxxxxxxxxxxx - st4. */ - return 471; - } - } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx10110x10xxxxxxxxxxxxxxxxxxxxxx - stp. */ - return 983; + xx111101x0xxxxxxxxxxxxxxxxxxxxxx + str. */ + return 892; } } - } - else - { - if (((word >> 23) & 0x1) == 0) + else { - if (((word >> 24) & 0x1) == 0) - { - if (((word >> 29) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx00110001xxxxxxxxxxxxxxxxxxxxxx - ld4. */ - return 444; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx10110001xxxxxxxxxxxxxxxxxxxxxx - ldnp. */ - return 974; - } - } - else + if (((word >> 29) & 0x1) == 0) { - if (((word >> 29) & 0x1) == 0) + if (((word >> 12) & 0x1) == 0) { if (((word >> 13) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101010xxxxxxx0xxxxxxxxxxxxx - ld1. */ - return 460; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0000xxxxxxxxxxxx + cpym. */ + return 2560; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0000xxxxxxxxxxxx + setgp. */ + return 2619; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx1000xxxxxxxxxxxx + cpymrn. */ + return 2566; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx1000xxxxxxxxxxxx + setge. */ + return 2621; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101011xxxxxxx0xxxxxxxxxxxxx - ld2. */ - return 464; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0100xxxxxxxxxxxx + cpymwn. */ + return 2563; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0100xxxxxxxxxxxx + setgm. */ + return 2620; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011101x1xxxxxx1100xxxxxxxxxxxx + cpymn. */ + return 2569; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0010xxxxxxxxxxxx + cpymrt. */ + return 2584; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0010xxxxxxxxxxxx + setgpn. */ + return 2625; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx1010xxxxxxxxxxxx + cpymrtrn. */ + return 2590; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx1010xxxxxxxxxxxx + setgen. */ + return 2627; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0110xxxxxxxxxxxx + cpymrtwn. */ + return 2587; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0110xxxxxxxxxxxx + setgmn. */ + return 2626; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011101x1xxxxxx1110xxxxxxxxxxxx + cpymrtn. */ + return 2593; + } } } - else + } + else + { + if (((word >> 13) & 0x1) == 0) { - if (((word >> 21) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101010xxxxxxx1xxxxxxxxxxxxx - ld3. */ - return 461; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0001xxxxxxxxxxxx + cpymwt. */ + return 2572; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0001xxxxxxxxxxxx + setgpt. */ + return 2622; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx1001xxxxxxxxxxxx + cpymwtrn. */ + return 2578; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx1001xxxxxxxxxxxx + setget. */ + return 2624; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101011xxxxxxx1xxxxxxxxxxxxx - ld4. */ - return 465; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0101xxxxxxxxxxxx + cpymwtwn. */ + return 2575; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0101xxxxxxxxxxxx + setgmt. */ + return 2623; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011101x1xxxxxx1101xxxxxxxxxxxx + cpymwtn. */ + return 2581; + } } } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx10110101xxxxxxxxxxxxxxxxxxxxxx - ldp. */ - return 978; - } - } - } - else - { - if (((word >> 29) & 0x1) == 0) - { - if (((word >> 21) & 0x1) == 0) - { - if (((word >> 24) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001100110xxxxxxxxxxxxxxxxxxxxx - ld4. */ - return 452; - } else { - if (((word >> 13) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101110xxxxxxx0xxxxxxxxxxxxx - ld1. */ - return 472; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0011xxxxxxxxxxxx + cpymt. */ + return 2596; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0011xxxxxxxxxxxx + setgptn. */ + return 2628; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx1011xxxxxxxxxxxx + cpymtrn. */ + return 2602; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx1011xxxxxxxxxxxx + setgetn. */ + return 2630; + } + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx001101110xxxxxxx1xxxxxxxxxxxxx - ld3. */ - return 473; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110101xxxxxx0111xxxxxxxxxxxx + cpymtwn. */ + return 2599; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx01110111xxxxxx0111xxxxxxxxxxxx + setgmtn. */ + return 2629; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx011101x1xxxxxx1111xxxxxxxxxxxx + cpymtn. */ + return 2605; + } } } } - else - { - if (((word >> 13) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx00110x111xxxxxxx0xxxxxxxxxxxxx - ld2. */ - return 476; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx00110x111xxxxxxx1xxxxxxxxxxxxx - ld4. */ - return 477; - } - } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xx10110x11xxxxxxxxxxxxxxxxxxxxxx - ldp. */ - return 984; - } - } - } - } - else - { - if (((word >> 24) & 0x1) == 0) - { - if (((word >> 29) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx011100xxxxxxxxxxxxxxxxxxxxxxxx - ldr. */ - return 988; - } - else - { - if (((word >> 10) & 0x1) == 0) - { - if (((word >> 11) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx111100x0xxxxxxxxxx00xxxxxxxxxx - stur. */ - return 925; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx111100x1xxxxxxxxxx00xxxxxxxxxx - ldur. */ - return 926; - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx111100x0xxxxxxxxxx10xxxxxxxxxx - str. */ - return 904; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx111100x1xxxxxxxxxx10xxxxxxxxxx - ldr. */ - return 905; - } - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx111100x0xxxxxxxxxxx1xxxxxxxxxx - str. */ - return 873; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx111100x1xxxxxxxxxxx1xxxxxxxxxx - ldr. */ - return 874; - } + xx111101x1xxxxxxxxxxxxxxxxxxxxxx + ldr. */ + return 893; } } } - else - { - if (((word >> 22) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11101x0xxxxxxxxxxxxxxxxxxxxxx - str. */ - return 892; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx11101x1xxxxxxxxxxxxxxxxxxxxxx - ldr. */ - return 893; - } - } } } else @@ -24638,6 +25958,10 @@ aarch64_extract_operand (const aarch64_operand *self, return aarch64_ext_sme_sm_za (self, info, code, inst, errors); case 220: return aarch64_ext_sme_pred_reg_with_index (self, info, code, inst, errors); + case 223: + case 224: + case 225: + return aarch64_ext_x0_to_x30 (self, info, code, inst, errors); default: assert (0); abort (); } } diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c index 46d602d..8e6123d 100644 --- a/opcodes/aarch64-dis.c +++ b/opcodes/aarch64-dis.c @@ -2053,6 +2053,17 @@ aarch64_ext_sve_shrimm (const aarch64_operand *self, info->imm.value = get_top_bit (info->imm.value) * 2 - info->imm.value; return true; } + +/* Decode X0-X30. Register 31 is unallocated. */ +bool +aarch64_ext_x0_to_x30 (const aarch64_operand *self, aarch64_opnd_info *info, + const aarch64_insn code, + const aarch64_inst *inst ATTRIBUTE_UNUSED, + aarch64_operand_error *errors ATTRIBUTE_UNUSED) +{ + info->reg.regno = extract_field (self->fields[0], code, 0); + return info->reg.regno <= 30; +} /* Bitfields that are commonly used to encode certain operands' information may be partially used as part of the base opcode in some instructions. diff --git a/opcodes/aarch64-dis.h b/opcodes/aarch64-dis.h index df59d22..9174dd9 100644 --- a/opcodes/aarch64-dis.h +++ b/opcodes/aarch64-dis.h @@ -130,6 +130,7 @@ AARCH64_DECL_OPD_EXTRACTOR (ext_sme_sm_za); AARCH64_DECL_OPD_EXTRACTOR (ext_sme_pred_reg_with_index); AARCH64_DECL_OPD_EXTRACTOR (ext_imm_rotate1); AARCH64_DECL_OPD_EXTRACTOR (ext_imm_rotate2); +AARCH64_DECL_OPD_EXTRACTOR (ext_x0_to_x30); #undef AARCH64_DECL_OPD_EXTRACTOR diff --git a/opcodes/aarch64-opc-2.c b/opcodes/aarch64-opc-2.c index c583bd0..e0aec42 100644 --- a/opcodes/aarch64-opc-2.c +++ b/opcodes/aarch64-opc-2.c @@ -247,6 +247,9 @@ const struct aarch64_operand aarch64_operands[] = {AARCH64_OPND_CLASS_SVE_REG, "SME_PnT_Wm_imm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Rm,FLD_SVE_Pn,FLD_SME_i1,FLD_SME_tszh,FLD_SME_tszl}, "Source scalable predicate register with index "}, {AARCH64_OPND_CLASS_IMMEDIATE, "TME_UIMM16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm16}, "a 16-bit unsigned immediate for TME tcancel"}, {AARCH64_OPND_CLASS_SIMD_ELEMENT, "SM3_IMM2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SM3_imm2}, "an indexed SM3 vector immediate"}, + {AARCH64_OPND_CLASS_INT_REG, "MOPS_ADDR_Rd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "a register destination address with writeback"}, + {AARCH64_OPND_CLASS_INT_REG, "MOPS_ADDR_Rs", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rs}, "a register source address with writeback"}, + {AARCH64_OPND_CLASS_INT_REG, "MOPS_WB_Rd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an integer register with writeback"}, {AARCH64_OPND_CLASS_NIL, "", 0, {0}, "DUMMY"}, }; diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index a77070e..cfd4781 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -3921,6 +3921,17 @@ aarch64_print_operand (char *buf, size_t size, bfd_vma pc, snprintf (buf, size, "%s", opnd->hint_option->name); break; + case AARCH64_OPND_MOPS_ADDR_Rd: + case AARCH64_OPND_MOPS_ADDR_Rs: + snprintf (buf, size, "[%s]!", + get_int_reg_name (opnd->reg.regno, AARCH64_OPND_QLF_X, 0)); + break; + + case AARCH64_OPND_MOPS_WB_Rn: + snprintf (buf, size, "%s!", + get_int_reg_name (opnd->reg.regno, AARCH64_OPND_QLF_X, 0)); + break; + default: snprintf (buf, size, ""); break; @@ -5409,6 +5420,36 @@ verify_elem_sd (const struct aarch64_inst *inst, const aarch64_insn insn, return ERR_OK; } +/* Check an instruction that takes three register operands and that + requires the register numbers to be distinct from one another. */ + +static enum err_type +verify_three_different_regs (const struct aarch64_inst *inst, + const aarch64_insn insn ATTRIBUTE_UNUSED, + bfd_vma pc ATTRIBUTE_UNUSED, + bool encoding ATTRIBUTE_UNUSED, + aarch64_operand_error *mismatch_detail + ATTRIBUTE_UNUSED, + aarch64_instr_sequence *insn_sequence + ATTRIBUTE_UNUSED) +{ + int rd, rs, rn; + + rd = inst->operands[0].reg.regno; + rs = inst->operands[1].reg.regno; + rn = inst->operands[2].reg.regno; + if (rd == rs || rd == rn || rs == rn) + { + mismatch_detail->kind = AARCH64_OPDE_SYNTAX_ERROR; + mismatch_detail->error + = _("the three register operands must be distinct from one another"); + mismatch_detail->index = -1; + return ERR_UND; + } + + return ERR_OK; +} + /* Add INST to the end of INSN_SEQUENCE. */ static void diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 3c0e990..48d2fa8 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -2493,6 +2493,10 @@ static const aarch64_feature_set aarch64_feature_ls64 = AARCH64_FEATURE (AARCH64_FEATURE_V8_6 | AARCH64_FEATURE_LS64, 0); static const aarch64_feature_set aarch64_feature_flagm = AARCH64_FEATURE (AARCH64_FEATURE_FLAGM, 0); +static const aarch64_feature_set aarch64_feature_mops = + AARCH64_FEATURE (AARCH64_FEATURE_MOPS, 0); +static const aarch64_feature_set aarch64_feature_mops_memtag = + AARCH64_FEATURE (AARCH64_FEATURE_MOPS | AARCH64_FEATURE_MEMTAG, 0); #define CORE &aarch64_feature_v8 #define FP &aarch64_feature_fp @@ -2544,6 +2548,8 @@ static const aarch64_feature_set aarch64_feature_flagm = #define ARMV8_7 &aarch64_feature_v8_7 #define LS64 &aarch64_feature_ls64 #define FLAGM &aarch64_feature_flagm +#define MOPS &aarch64_feature_mops +#define MOPS_MEMTAG &aarch64_feature_mops_memtag #define CORE_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS) \ { NAME, OPCODE, MASK, CLASS, OP, CORE, OPS, QUALS, FLAGS, 0, 0, NULL } @@ -2669,6 +2675,52 @@ static const aarch64_feature_set aarch64_feature_flagm = { NAME, OPCODE, MASK, CLASS, 0, LS64, OPS, QUALS, FLAGS, 0, 0, NULL } #define FLAGM_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \ { NAME, OPCODE, MASK, CLASS, 0, FLAGM, OPS, QUALS, FLAGS, 0, 0, NULL } +#define MOPS_INSN(NAME, OPCODE, MASK, CLASS, OPS, QUALS, FLAGS, CONSTRAINTS, VERIFIER) \ + { NAME, OPCODE, MASK, CLASS, 0, MOPS, OPS, QUALS, FLAGS, CONSTRAINTS, \ + 0, VERIFIER } +#define MOPS_MEMTAG_INSN(NAME, OPCODE, MASK, CLASS, OPS, QUALS, FLAGS, CONSTRAINTS, VERIFIER) \ + { NAME, OPCODE, MASK, CLASS, 0, MOPS_MEMTAG, OPS, QUALS, FLAGS, \ + CONSTRAINTS, 0, VERIFIER } + +#define MOPS_CPY_OP1_OP2_PME_INSN(NAME, OPCODE, MASK, FLAGS, CONSTRAINTS) \ + MOPS_INSN (NAME, OPCODE, MASK, 0, \ + OP3 (MOPS_ADDR_Rd, MOPS_ADDR_Rs, MOPS_WB_Rn), QL_I3SAMEX, \ + FLAGS, CONSTRAINTS, VERIFIER (three_different_regs)) + +#define MOPS_CPY_OP1_OP2_INSN(NAME, SUFFIX, OPCODE, MASK) \ + MOPS_CPY_OP1_OP2_PME_INSN (NAME "p" SUFFIX, OPCODE, MASK, F_SCAN, 0), \ + MOPS_CPY_OP1_OP2_PME_INSN (NAME "m" SUFFIX, OPCODE | 0x400000, MASK, 0, 0), \ + MOPS_CPY_OP1_OP2_PME_INSN (NAME "e" SUFFIX, OPCODE | 0x800000, MASK, 0, 0) + +#define MOPS_CPY_OP1_INSN(NAME, SUFFIX, OPCODE, MASK) \ + MOPS_CPY_OP1_OP2_INSN (NAME, SUFFIX, OPCODE, MASK), \ + MOPS_CPY_OP1_OP2_INSN (NAME, SUFFIX "wn", OPCODE | 0x4000, MASK), \ + MOPS_CPY_OP1_OP2_INSN (NAME, SUFFIX "rn", OPCODE | 0x8000, MASK), \ + MOPS_CPY_OP1_OP2_INSN (NAME, SUFFIX "n", OPCODE | 0xc000, MASK) + +#define MOPS_CPY_INSN(NAME, OPCODE, MASK) \ + MOPS_CPY_OP1_INSN (NAME, "", OPCODE, MASK), \ + MOPS_CPY_OP1_INSN (NAME, "wt", OPCODE | 0x1000, MASK), \ + MOPS_CPY_OP1_INSN (NAME, "rt", OPCODE | 0x2000, MASK), \ + MOPS_CPY_OP1_INSN (NAME, "t", OPCODE | 0x3000, MASK) + +#define MOPS_SET_OP1_OP2_PME_INSN(NAME, OPCODE, MASK, FLAGS, CONSTRAINTS, ISA) \ + ISA (NAME, OPCODE, MASK, 0, \ + OP3 (MOPS_ADDR_Rd, MOPS_WB_Rn, Rm), QL_I3SAMEX, FLAGS, \ + CONSTRAINTS, VERIFIER (three_different_regs)) + +#define MOPS_SET_OP1_OP2_INSN(NAME, SUFFIX, OPCODE, MASK, ISA) \ + MOPS_SET_OP1_OP2_PME_INSN (NAME "p" SUFFIX, OPCODE, MASK, 0, 0, ISA), \ + MOPS_SET_OP1_OP2_PME_INSN (NAME "m" SUFFIX, OPCODE | 0x4000, MASK, \ + 0, 0, ISA), \ + MOPS_SET_OP1_OP2_PME_INSN (NAME "e" SUFFIX, OPCODE | 0x8000, MASK, \ + 0, 0, ISA) + +#define MOPS_SET_INSN(NAME, OPCODE, MASK, ISA) \ + MOPS_SET_OP1_OP2_INSN (NAME, "", OPCODE, MASK, ISA), \ + MOPS_SET_OP1_OP2_INSN (NAME, "t", OPCODE | 0x1000, MASK, ISA), \ + MOPS_SET_OP1_OP2_INSN (NAME, "n", OPCODE | 0x2000, MASK, ISA), \ + MOPS_SET_OP1_OP2_INSN (NAME, "tn", OPCODE | 0x3000, MASK, ISA) const struct aarch64_opcode aarch64_opcode_table[] = { @@ -5312,6 +5364,51 @@ const struct aarch64_opcode aarch64_opcode_table[] = BFLOAT16_INSN ("bfmlalb", 0x2ec0fc00, 0xffe0fc00, bfloat16, OP3 (Vd, Vn, Vm), QL_BFMMLA, 0), BFLOAT16_INSN ("bfmlalt", 0x4fc0f000, 0xffc0f400, bfloat16, OP3 (Vd, Vn, Em16), QL_V3BFML4S, 0), BFLOAT16_INSN ("bfmlalb", 0x0fc0f000, 0xffc0f400, bfloat16, OP3 (Vd, Vn, Em16), QL_V3BFML4S, 0), + + /* cpyfp cpyfprn cpyfpwn cpyfpn + cpyfm cpyfmrn cpyfmwn cpyfmn + cpyfe cpyfern cpyfewn cpyfen + + cpyfprt cpyfprtrn cpyfprtwn cpyfprtn + cpyfmrt cpyfmrtrn cpyfmrtwn cpyfmrtn + cpyfert cpyfertrn cpyfertwn cpyfertn + + cpyfpwt cpyfpwtrn cpyfpwtwn cpyfpwtn + cpyfmwt cpyfmwtrn cpyfmwtwn cpyfmwtn + cpyfewt cpyfewtrn cpyfewtwn cpyfewtn + + cpyfpt cpyfptrn cpyfptwn cpyfptn + cpyfmt cpyfmtrn cpyfmtwn cpyfmtn + cpyfet cpyfetrn cpyfetwn cpyfetn. */ + MOPS_CPY_INSN ("cpyf", 0x19000400, 0xffe0fc00), + + /* cpyp cpyprn cpypwn cpypn + cpym cpymrn cpymwn cpymn + cpye cpyern cpyewn cpyen + + cpyprt cpyprtrn cpyprtwn cpyprtn + cpymrt cpymrtrn cpymrtwn cpymrtn + cpyert cpyertrn cpyertwn cpyertn + + cpypwt cpypwtrn cpypwtwn cpypwtn + cpymwt cpymwtrn cpymwtwn cpymwtn + cpyewt cpyewtrn cpyewtwn cpyewtn + + cpypt cpyptrn cpyptwn cpyptn + cpymt cpymtrn cpymtwn cpymtn + cpyet cpyetrn cpyetwn cpyetn. */ + MOPS_CPY_INSN ("cpy", 0x1d000400, 0xffe0fc00), + + /* setp setpt setpn setptn + setm setmt setmn setmtn + sete setet seten setetn */ + MOPS_SET_INSN ("set", 0x19c00400, 0xffe0fc00, MOPS_INSN), + + /* setgp setgpt setgpn setgptn + setgm setgmt setgmn setgmtn + setge setget setgen setgetn */ + MOPS_SET_INSN ("setg", 0x1dc00400, 0xffe0fc00, MOPS_MEMTAG_INSN), + {0, 0, 0, 0, 0, 0, {}, {}, 0, 0, 0, NULL}, }; @@ -5795,4 +5892,12 @@ const struct aarch64_opcode aarch64_opcode_table[] = Y(IMMEDIATE, imm, "TME_UIMM16", 0, F(FLD_imm16), \ "a 16-bit unsigned immediate for TME tcancel") \ Y(SIMD_ELEMENT, reglane, "SM3_IMM2", 0, F(FLD_SM3_imm2), \ - "an indexed SM3 vector immediate") + "an indexed SM3 vector immediate") \ + /* These next two are really register fields; the [...] notation \ + is just syntactic sugar. */ \ + Y(INT_REG, x0_to_x30, "MOPS_ADDR_Rd", 0, F(FLD_Rd), \ + "a register destination address with writeback") \ + Y(INT_REG, x0_to_x30, "MOPS_ADDR_Rs", 0, F(FLD_Rs), \ + "a register source address with writeback") \ + Y(INT_REG, x0_to_x30, "MOPS_WB_Rd", 0, F(FLD_Rn), \ + "an integer register with writeback") -- cgit v1.1