aarch64: Add support for +mops
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 2 Dec 2021 15:00:57 +0000 (15:00 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 2 Dec 2021 15:00:57 +0000 (15:00 +0000)
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.

17 files changed:
gas/config/tc-aarch64.c
gas/doc/c-aarch64.texi
gas/testsuite/gas/aarch64/mops.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/mops.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/mops_invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/mops_invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/mops_invalid.s [new file with mode: 0644]
include/opcode/aarch64.h
opcodes/aarch64-asm-2.c
opcodes/aarch64-asm.c
opcodes/aarch64-asm.h
opcodes/aarch64-dis-2.c
opcodes/aarch64-dis.c
opcodes/aarch64-dis.h
opcodes/aarch64-opc-2.c
opcodes/aarch64-opc.c
opcodes/aarch64-tbl.h

index 2181fa12bfd4f142817904974c49e33c8a3adae3..4aadf5bf99f567431d924660b7efb99997b510b4 100644 (file)
@@ -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},
 };
 
index 3051b6f6d76f97c0d4247a37ecff2ef1206b168f..7edcccec7eb766ccaf85a525c52613e7297df38c 100644 (file)
@@ -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 (file)
index 0000000..a49ef1a
--- /dev/null
@@ -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 (file)
index 0000000..5cd9e3a
--- /dev/null
@@ -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 (file)
index 0000000..af66fff
--- /dev/null
@@ -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 (file)
index 0000000..8f5e588
--- /dev/null
@@ -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 (file)
index 0000000..5281d37
--- /dev/null
@@ -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
index 493b7973f1c10e471f00f6c80f01c0c8e1188b10..183d28150c3f599eec8d301c72285bc11899b5bc 100644 (file)
@@ -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 <Pn>.<T>[<Wm>, #<imm>].  */
   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
index bbe4b683100e058529a613adddb4da23997ea9cf..57c9e30606c1fa9af08038b7acc266774cba56a9 100644 (file)
@@ -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 ();
     }
 }
index 9b66fd34c7ec63929fcb153c782df97dd925a79a..f8328eb5426cd8016bf01e988b994a1caf79d910 100644 (file)
@@ -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
index 47f775da2237b676c3b3515fed7627d18c0f0813..ac97b9ec6939707788e9df217cf1f215287b11a3 100644 (file)
@@ -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
 
index f9999adc28d6794aa48661f77ce6d70816f37dd1..70cbf908e812f3d5faaf19262a61f3db0214d4f4 100644 (file)
@@ -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
@@ -3053,100 +3229,276 @@ 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 ();
     }
 }
index 46d602de07f1c2149286a427facd3b120913ba98..8e6123db02e682b8da84f0217e0f3c809616ded2 100644 (file)
@@ -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;
+}
 \f
 /* Bitfields that are commonly used to encode certain operands' information
    may be partially used as part of the base opcode in some instructions.
index df59d22e98d18b87f2d938943b062de51aab6091..9174dd9c41bc2f4484e1f39f330111e48db8100f 100644 (file)
@@ -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
 
index c583bd0cc490d2196519a9180c772c284d761638..e0aec42dbfc459e09d84c94f5846df7deb0a76a8 100644 (file)
@@ -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"},
 };
 
index a77070e187ab6ed79c731d19bbd3a9c09122c07e..cfd4781268406656b1533caf5579823892007e10 100644 (file)
@@ -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, "<invalid>");
       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
index 3c0e990fb147b00f582e4e94049c5b405a8410e3..48d2fa8ff64a8d08bd0c4058905cfb5a0cddd49b 100644 (file)
@@ -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")