]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
aarch64: Add support for FEAT_SVE2p2 and FEAT_SME2p2
authorAlice Carlotti <alice.carlotti@arm.com>
Tue, 3 Jun 2025 19:35:34 +0000 (20:35 +0100)
committerAlice Carlotti <alice.carlotti@arm.com>
Tue, 8 Jul 2025 20:15:43 +0000 (21:15 +0100)
15 files changed:
gas/config/tc-aarch64.c
gas/doc/c-aarch64.texi
gas/testsuite/gas/aarch64/illegal-bfloat16.l
gas/testsuite/gas/aarch64/illegal-sve2.l
gas/testsuite/gas/aarch64/sme2p2.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2p2.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sve2p2.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sve2p2.s [new file with mode: 0644]
include/opcode/aarch64.h
opcodes/aarch64-asm.c
opcodes/aarch64-dis-2.c
opcodes/aarch64-dis.c
opcodes/aarch64-opc.c
opcodes/aarch64-opc.h
opcodes/aarch64-tbl.h

index 1d10de97506bb89ba8a1418c2df7546cad4bb766..29a81d17112b15a09301a9cb518265e08a316c27 100644 (file)
@@ -10797,6 +10797,8 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = {
   {"sme-b16b16",       AARCH64_FEATURE (SME_B16B16),
                        AARCH64_FEATURES (2, SVE_B16B16, SME2)},
   {"pops",             AARCH64_FEATURE (PoPS), AARCH64_NO_FEATURES},
+  {"sve2p2",           AARCH64_FEATURE (SVE2p2), AARCH64_FEATURE (SVE2)},
+  {"sme2p2",           AARCH64_FEATURE (SME2p2), AARCH64_FEATURE (SME2)},
   {NULL,               AARCH64_NO_FEATURES, AARCH64_NO_FEATURES},
 };
 
@@ -10817,12 +10819,15 @@ static const struct aarch64_virtual_dependency_table aarch64_dependencies[] = {
   {AARCH64_FEATURE (SSVE_FP8DOT2), AARCH64_FEATURE (FP8DOT2_SVE)},
   {AARCH64_FEATURE (SME_F16F16), AARCH64_FEATURE (SME_F16F16_F8F16)},
   {AARCH64_FEATURE (SME_F8F16), AARCH64_FEATURE (SME_F16F16_F8F16)},
+  {AARCH64_FEATURE (SVE), AARCH64_FEATURE (SVE_SME2p2)},
   {AARCH64_FEATURE (SME), AARCH64_FEATURE (SVE2p1_SME)},
   {AARCH64_FEATURE (SVE2), AARCH64_FEATURE (SVE2_SME2)},
   {AARCH64_FEATURE (SME2), AARCH64_FEATURES (2, SVE2_SME2, SVE2p1_SME2)},
   {AARCH64_FEATURE (SVE2p1), AARCH64_FEATURES (3, SVE2p1_SME, SVE2p1_SME2,
                                               SVE2p1_SME2p1)},
   {AARCH64_FEATURE (SME2p1), AARCH64_FEATURE (SVE2p1_SME2p1)},
+  {AARCH64_FEATURE (SVE2p2), AARCH64_FEATURE (SVE2p2_SME2p2)},
+  {AARCH64_FEATURE (SME2p2), AARCH64_FEATURES (2, SVE_SME2p2, SVE2p2_SME2p2)},
 };
 
 static aarch64_feature_set
index d7e9c95111dd960778e623d39935db7c492dfc9d..acfa00378c1114dea792370d07eb77d12f69305b 100644 (file)
@@ -299,6 +299,8 @@ automatically cause those extensions to be disabled.
  @tab Enable SME2.
 @item @code{sme2p1} @tab @code{sme2}
  @tab Enable SME2.1.
+@item @code{sme2p2} @tab @code{sme2p1}
+ @tab Enable SME2.2.
 @item @code{ssbs} @tab
  @tab Enable Speculative Store Bypassing Safe state read and write.
 @item @code{ssve-fp8dot2} @tab @code{sme2}, @code{fp8}
@@ -327,6 +329,8 @@ automatically cause those extensions to be disabled.
  @tab Enable the SVE2 SM4 Extension.
 @item @code{sve2p1} @tab @code{sve2}
  @tab Enable SVE2.1.
+@item @code{sve2p2} @tab @code{sve2p1}
+ @tab Enable SVE2.2.
 @item @code{the} @tab
  @tab Enable the Translation Hardening Extension.
 @item @code{tme} @tab
index e513c3cc64c9211980952f9266ea72115341b435..6bce84eb4a6522f4b06283a1082fbdbd5dea01ae 100644 (file)
 [^ :]+:[0-9]+: Error: operand mismatch -- `bfmmla z0\.s,z1\.h,z2\.s'
 [^ :]+:[0-9]+: Info:    did you mean this\?
 [^ :]+:[0-9]+: Info:           bfmmla z0\.s, z1\.h, z2\.h
-[^ :]+:[0-9]+: Error: operand mismatch -- `bfcvt z0\.h,p1/z,z2\.s'
-[^ :]+:[0-9]+: Info:    did you mean this\?
-[^ :]+:[0-9]+: Info:           bfcvt z0\.h, p1/m, z2\.s
+[^ :]+:[0-9]+: Error: selected processor does not support `bfcvt z0\.h,p1/z,z2\.s'
 [^ :]+:[0-9]+: Error: operand mismatch -- `bfcvt z0\.h,p1/m,z2\.h'
 [^ :]+:[0-9]+: Info:    did you mean this\?
 [^ :]+:[0-9]+: Info:           bfcvt z0\.h, p1/m, z2\.s
-[^ :]+:[0-9]+: Error: operand mismatch -- `bfcvtnt z0\.h,p1/z,z2\.s'
-[^ :]+:[0-9]+: Info:    did you mean this\?
-[^ :]+:[0-9]+: Info:           bfcvtnt z0\.h, p1/m, z2\.s
+[^ :]+:[0-9]+: Error: selected processor does not support `bfcvtnt z0\.h,p1/z,z2\.s'
 [^ :]+:[0-9]+: Error: operand mismatch -- `bfcvtnt z0\.h,p1/m,z2\.h'
 [^ :]+:[0-9]+: Info:    did you mean this\?
 [^ :]+:[0-9]+: Info:           bfcvtnt z0\.h, p1/m, z2\.s
index b5e166259bdedfeb13772aa5ea4a8688548f306e..ca13c4423c04454c8afc7d5aa3f0dfb158d41715 100644 (file)
 [^ :]+:[0-9]+: Error: operand mismatch -- `fcvtlt z0\.s,p0/m,z0\.s'
 [^ :]+:[0-9]+: Info:    did you mean this\?
 [^ :]+:[0-9]+: Info:           fcvtlt z0\.d, p0/m, z0\.s
-[^ :]+:[0-9]+: Error: operand mismatch -- `fcvtlt z0\.s,p0/z,z0\.h'
-[^ :]+:[0-9]+: Info:    did you mean this\?
-[^ :]+:[0-9]+: Info:           fcvtlt z0\.s, p0/m, z0\.h
+[^ :]+:[0-9]+: Error: selected processor does not support `fcvtlt z0\.s,p0/z,z0\.h'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 1 -- `fcvtlt z32\.d,p0/m,z0\.s'
 [^ :]+:[0-9]+: Error: p0-p7 expected at operand 2 -- `fcvtlt z0\.d,p8/m,z0\.s'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 3 -- `fcvtlt z0\.d,p0/m,z32\.s'
 [^ :]+:[0-9]+: Error: operand mismatch -- `fcvtlt z0\.d,p0/m,z0\.d'
 [^ :]+:[0-9]+: Info:    did you mean this\?
 [^ :]+:[0-9]+: Info:           fcvtlt z0\.d, p0/m, z0\.s
-[^ :]+:[0-9]+: Error: operand mismatch -- `fcvtlt z0\.d,p0/z,z0\.s'
-[^ :]+:[0-9]+: Info:    did you mean this\?
-[^ :]+:[0-9]+: Info:           fcvtlt z0\.d, p0/m, z0\.s
+[^ :]+:[0-9]+: Error: selected processor does not support `fcvtlt z0\.d,p0/z,z0\.s'
 [^ :]+:[0-9]+: Warning: SVE `movprfx' compatible instruction expected -- `fcvtnt z0\.h,p0/m,z0\.s'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 1 -- `fcvtnt z32\.h,p0/m,z0\.s'
 [^ :]+:[0-9]+: Error: p0-p7 expected at operand 2 -- `fcvtnt z0\.h,p8/m,z0\.s'
 [^ :]+:[0-9]+: Error: operand mismatch -- `fcvtnt z0\.h,p0/m,z0\.h'
 [^ :]+:[0-9]+: Info:    did you mean this\?
 [^ :]+:[0-9]+: Info:           fcvtnt z0\.h, p0/m, z0\.s
-[^ :]+:[0-9]+: Error: operand mismatch -- `fcvtnt z0\.h,p0/z,z0\.s'
-[^ :]+:[0-9]+: Info:    did you mean this\?
-[^ :]+:[0-9]+: Info:           fcvtnt z0\.h, p0/m, z0\.s
+[^ :]+:[0-9]+: Error: selected processor does not support `fcvtnt z0\.h,p0/z,z0\.s'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 1 -- `fcvtnt z32\.s,p0/m,z0\.d'
 [^ :]+:[0-9]+: Error: p0-p7 expected at operand 2 -- `fcvtnt z0\.s,p8/m,z0\.d'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 3 -- `fcvtnt z0\.s,p0/m,z32\.d'
 [^ :]+:[0-9]+: Error: operand mismatch -- `fcvtnt z0\.s,p0/m,z0\.s'
 [^ :]+:[0-9]+: Info:    did you mean this\?
 [^ :]+:[0-9]+: Info:           fcvtnt z0\.s, p0/m, z0\.d
-[^ :]+:[0-9]+: Error: operand mismatch -- `fcvtnt z0\.s,p0/z,z0\.d'
-[^ :]+:[0-9]+: Info:    did you mean this\?
-[^ :]+:[0-9]+: Info:           fcvtnt z0\.s, p0/m, z0\.d
+[^ :]+:[0-9]+: Error: selected processor does not support `fcvtnt z0\.s,p0/z,z0\.d'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 1 -- `fcvtx z32\.s,p0/m,z0\.d'
 [^ :]+:[0-9]+: Error: p0-p7 expected at operand 2 -- `fcvtx z0\.s,p8/m,z0\.d'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 3 -- `fcvtx z0\.s,p0/m,z32\.d'
 [^ :]+:[0-9]+: Error: operand mismatch -- `fcvtx z0\.s,p0/m,z0\.s'
 [^ :]+:[0-9]+: Info:    did you mean this\?
 [^ :]+:[0-9]+: Info:           fcvtx z0\.s, p0/m, z0\.d
-[^ :]+:[0-9]+: Error: operand mismatch -- `fcvtx z0\.s,p0/z,z0\.d'
-[^ :]+:[0-9]+: Info:    did you mean this\?
-[^ :]+:[0-9]+: Info:           fcvtx z0\.s, p0/m, z0\.d
+[^ :]+:[0-9]+: Error: selected processor does not support `fcvtx z0\.s,p0/z,z0\.d'
 [^ :]+:[0-9]+: Warning: register size not compatible with previous `movprfx' at operand 1 -- `fcvtx z0\.s,p0/m,z2\.d'
 [^ :]+:[0-9]+: Warning: SVE `movprfx' compatible instruction expected -- `fcvtxnt z0\.s,p0/m,z0\.d'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 1 -- `fcvtxnt z32\.s,p0/m,z0\.d'
 [^ :]+:[0-9]+: Error: operand mismatch -- `fcvtxnt z0\.s,p0/m,z0\.s'
 [^ :]+:[0-9]+: Info:    did you mean this\?
 [^ :]+:[0-9]+: Info:           fcvtxnt z0\.s, p0/m, z0\.d
-[^ :]+:[0-9]+: Error: operand mismatch -- `fcvtxnt z0\.s,p0/z,z0\.d'
-[^ :]+:[0-9]+: Info:    did you mean this\?
-[^ :]+:[0-9]+: Info:           fcvtxnt z0\.s, p0/m, z0\.d
+[^ :]+:[0-9]+: Error: selected processor does not support `fcvtxnt z0\.s,p0/z,z0\.d'
 [^ :]+:[0-9]+: Error: operand mismatch -- `flogb z0\.b,p0/m,z0\.b'
 [^ :]+:[0-9]+: Info:    did you mean this\?
 [^ :]+:[0-9]+: Info:           flogb z0\.h, p0/m, z0\.h
 [^ :]+:[0-9]+: Info:    other valid variant\(s\):
 [^ :]+:[0-9]+: Info:           flogb z0\.s, p0/m, z0\.s
 [^ :]+:[0-9]+: Info:           flogb z0\.d, p0/m, z0\.d
-[^ :]+:[0-9]+: Error: operand mismatch -- `flogb z0\.h,p0/z,z0\.h'
-[^ :]+:[0-9]+: Info:    did you mean this\?
-[^ :]+:[0-9]+: Info:           flogb z0\.h, p0/m, z0\.h
-[^ :]+:[0-9]+: Info:    other valid variant\(s\):
-[^ :]+:[0-9]+: Info:           flogb z0\.s, p0/m, z0\.s
-[^ :]+:[0-9]+: Info:           flogb z0\.d, p0/m, z0\.d
+[^ :]+:[0-9]+: Error: selected processor does not support `flogb z0\.h,p0/z,z0\.h'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 1 -- `flogb z32\.h,p0/m,z0\.h'
 [^ :]+:[0-9]+: Error: p0-p7 expected at operand 2 -- `flogb z0\.h,p8/m,z0\.h'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 3 -- `flogb z0\.h,p0/m,z32\.h'
 [^ :]+:[0-9]+: Info:           sqabs z0\.h, p0/m, z0\.h
 [^ :]+:[0-9]+: Info:           sqabs z0\.s, p0/m, z0\.s
 [^ :]+:[0-9]+: Info:           sqabs z0\.d, p0/m, z0\.d
-[^ :]+:[0-9]+: Error: operand mismatch -- `sqabs z0\.b,p0/z,z0\.b'
-[^ :]+:[0-9]+: Info:    did you mean this\?
-[^ :]+:[0-9]+: Info:           sqabs z0\.b, p0/m, z0\.b
-[^ :]+:[0-9]+: Info:    other valid variant\(s\):
-[^ :]+:[0-9]+: Info:           sqabs z0\.h, p0/m, z0\.h
-[^ :]+:[0-9]+: Info:           sqabs z0\.s, p0/m, z0\.s
-[^ :]+:[0-9]+: Info:           sqabs z0\.d, p0/m, z0\.d
+[^ :]+:[0-9]+: Error: selected processor does not support `sqabs z0\.b,p0/z,z0\.b'
 [^ :]+:[0-9]+: Error: expected a register at operand 1 -- `sqadd z32\.b,p0/m,z0\.b,z0\.b'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 3 -- `sqadd z0\.b,p0/m,z32\.b,z0\.b'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 4 -- `sqadd z0\.b,p0/m,z0\.b,z32\.b'
 [^ :]+:[0-9]+: Info:           sqneg z0\.h, p0/m, z0\.h
 [^ :]+:[0-9]+: Info:           sqneg z0\.s, p0/m, z0\.s
 [^ :]+:[0-9]+: Info:           sqneg z0\.d, p0/m, z0\.d
-[^ :]+:[0-9]+: Error: operand mismatch -- `sqneg z0\.b,p0/z,z0\.b'
-[^ :]+:[0-9]+: Info:    did you mean this\?
-[^ :]+:[0-9]+: Info:           sqneg z0\.b, p0/m, z0\.b
-[^ :]+:[0-9]+: Info:    other valid variant\(s\):
-[^ :]+:[0-9]+: Info:           sqneg z0\.h, p0/m, z0\.h
-[^ :]+:[0-9]+: Info:           sqneg z0\.s, p0/m, z0\.s
-[^ :]+:[0-9]+: Info:           sqneg z0\.d, p0/m, z0\.d
+[^ :]+:[0-9]+: Error: selected processor does not support `sqneg z0\.b,p0/z,z0\.b'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 1 -- `sqrdcmlah z32\.h,z0\.h,z0\.h\[0\],#0'
 [^ :]+:[0-9]+: Error: expected an SVE vector register at operand 2 -- `sqrdcmlah z0\.h,z32\.h,z0\.h\[0\],#0'
 [^ :]+:[0-9]+: Error: z0-z7 expected at operand 3 -- `sqrdcmlah z0\.h,z0\.h,z8\.h\[0\],#0'
diff --git a/gas/testsuite/gas/aarch64/sme2p2.d b/gas/testsuite/gas/aarch64/sme2p2.d
new file mode 100644 (file)
index 0000000..5bcac53
--- /dev/null
@@ -0,0 +1,57 @@
+#as: -march=armv8-a+sme2p2
+#objdump: -dr
+
+.*:     file format .*
+
+
+Disassembly of section \.text:
+
+0+ <\.text>:
+ *[0-9a-f]+:   c160e800        fmul    {z0\.h-z1\.h}, {z0\.h-z1\.h}, z0\.h
+ *[0-9a-f]+:   c160e81e        fmul    {z30\.h-z31\.h}, {z0\.h-z1\.h}, z0\.h
+ *[0-9a-f]+:   c160ebc0        fmul    {z0\.h-z1\.h}, {z30\.h-z31\.h}, z0\.h
+ *[0-9a-f]+:   c17ee800        fmul    {z0\.h-z1\.h}, {z0\.h-z1\.h}, z15\.h
+ *[0-9a-f]+:   c1a0e800        fmul    {z0\.s-z1\.s}, {z0\.s-z1\.s}, z0\.s
+ *[0-9a-f]+:   c1a0e81e        fmul    {z30\.s-z31\.s}, {z0\.s-z1\.s}, z0\.s
+ *[0-9a-f]+:   c1a0ebc0        fmul    {z0\.s-z1\.s}, {z30\.s-z31\.s}, z0\.s
+ *[0-9a-f]+:   c1bee800        fmul    {z0\.s-z1\.s}, {z0\.s-z1\.s}, z15\.s
+ *[0-9a-f]+:   c1e0e800        fmul    {z0\.d-z1\.d}, {z0\.d-z1\.d}, z0\.d
+ *[0-9a-f]+:   c1e0e81e        fmul    {z30\.d-z31\.d}, {z0\.d-z1\.d}, z0\.d
+ *[0-9a-f]+:   c1e0ebc0        fmul    {z0\.d-z1\.d}, {z30\.d-z31\.d}, z0\.d
+ *[0-9a-f]+:   c1fee800        fmul    {z0\.d-z1\.d}, {z0\.d-z1\.d}, z15\.d
+ *[0-9a-f]+:   c161e800        fmul    {z0\.h-z3\.h}, {z0\.h-z3\.h}, z0\.h
+ *[0-9a-f]+:   c161e81c        fmul    {z28\.h-z31\.h}, {z0\.h-z3\.h}, z0\.h
+ *[0-9a-f]+:   c161eb80        fmul    {z0\.h-z3\.h}, {z28\.h-z31\.h}, z0\.h
+ *[0-9a-f]+:   c17fe800        fmul    {z0\.h-z3\.h}, {z0\.h-z3\.h}, z15\.h
+ *[0-9a-f]+:   c1a1e800        fmul    {z0\.s-z3\.s}, {z0\.s-z3\.s}, z0\.s
+ *[0-9a-f]+:   c1a1e81c        fmul    {z28\.s-z31\.s}, {z0\.s-z3\.s}, z0\.s
+ *[0-9a-f]+:   c1a1eb80        fmul    {z0\.s-z3\.s}, {z28\.s-z31\.s}, z0\.s
+ *[0-9a-f]+:   c1bfe800        fmul    {z0\.s-z3\.s}, {z0\.s-z3\.s}, z15\.s
+ *[0-9a-f]+:   c1e1e800        fmul    {z0\.d-z3\.d}, {z0\.d-z3\.d}, z0\.d
+ *[0-9a-f]+:   c1e1e81c        fmul    {z28\.d-z31\.d}, {z0\.d-z3\.d}, z0\.d
+ *[0-9a-f]+:   c1e1eb80        fmul    {z0\.d-z3\.d}, {z28\.d-z31\.d}, z0\.d
+ *[0-9a-f]+:   c1ffe800        fmul    {z0\.d-z3\.d}, {z0\.d-z3\.d}, z15\.d
+ *[0-9a-f]+:   c160e400        fmul    {z0\.h-z1\.h}, {z0\.h-z1\.h}, {z0\.h-z1\.h}
+ *[0-9a-f]+:   c160e41e        fmul    {z30\.h-z31\.h}, {z0\.h-z1\.h}, {z0\.h-z1\.h}
+ *[0-9a-f]+:   c160e7c0        fmul    {z0\.h-z1\.h}, {z30\.h-z31\.h}, {z0\.h-z1\.h}
+ *[0-9a-f]+:   c17ee400        fmul    {z0\.h-z1\.h}, {z0\.h-z1\.h}, {z30\.h-z31\.h}
+ *[0-9a-f]+:   c1a0e400        fmul    {z0\.s-z1\.s}, {z0\.s-z1\.s}, {z0\.s-z1\.s}
+ *[0-9a-f]+:   c1a0e41e        fmul    {z30\.s-z31\.s}, {z0\.s-z1\.s}, {z0\.s-z1\.s}
+ *[0-9a-f]+:   c1a0e7c0        fmul    {z0\.s-z1\.s}, {z30\.s-z31\.s}, {z0\.s-z1\.s}
+ *[0-9a-f]+:   c1bee400        fmul    {z0\.s-z1\.s}, {z0\.s-z1\.s}, {z30\.s-z31\.s}
+ *[0-9a-f]+:   c1e0e400        fmul    {z0\.d-z1\.d}, {z0\.d-z1\.d}, {z0\.d-z1\.d}
+ *[0-9a-f]+:   c1e0e41e        fmul    {z30\.d-z31\.d}, {z0\.d-z1\.d}, {z0\.d-z1\.d}
+ *[0-9a-f]+:   c1e0e7c0        fmul    {z0\.d-z1\.d}, {z30\.d-z31\.d}, {z0\.d-z1\.d}
+ *[0-9a-f]+:   c1fee400        fmul    {z0\.d-z1\.d}, {z0\.d-z1\.d}, {z30\.d-z31\.d}
+ *[0-9a-f]+:   c161e400        fmul    {z0\.h-z3\.h}, {z0\.h-z3\.h}, {z0\.h-z3\.h}
+ *[0-9a-f]+:   c161e41c        fmul    {z28\.h-z31\.h}, {z0\.h-z3\.h}, {z0\.h-z3\.h}
+ *[0-9a-f]+:   c161e780        fmul    {z0\.h-z3\.h}, {z28\.h-z31\.h}, {z0\.h-z3\.h}
+ *[0-9a-f]+:   c17de400        fmul    {z0\.h-z3\.h}, {z0\.h-z3\.h}, {z28\.h-z31\.h}
+ *[0-9a-f]+:   c1a1e400        fmul    {z0\.s-z3\.s}, {z0\.s-z3\.s}, {z0\.s-z3\.s}
+ *[0-9a-f]+:   c1a1e41c        fmul    {z28\.s-z31\.s}, {z0\.s-z3\.s}, {z0\.s-z3\.s}
+ *[0-9a-f]+:   c1a1e780        fmul    {z0\.s-z3\.s}, {z28\.s-z31\.s}, {z0\.s-z3\.s}
+ *[0-9a-f]+:   c1bde400        fmul    {z0\.s-z3\.s}, {z0\.s-z3\.s}, {z28\.s-z31\.s}
+ *[0-9a-f]+:   c1e1e400        fmul    {z0\.d-z3\.d}, {z0\.d-z3\.d}, {z0\.d-z3\.d}
+ *[0-9a-f]+:   c1e1e41c        fmul    {z28\.d-z31\.d}, {z0\.d-z3\.d}, {z0\.d-z3\.d}
+ *[0-9a-f]+:   c1e1e780        fmul    {z0\.d-z3\.d}, {z28\.d-z31\.d}, {z0\.d-z3\.d}
+ *[0-9a-f]+:   c1fde400        fmul    {z0\.d-z3\.d}, {z0\.d-z3\.d}, {z28\.d-z31\.d}
diff --git a/gas/testsuite/gas/aarch64/sme2p2.s b/gas/testsuite/gas/aarch64/sme2p2.s
new file mode 100644 (file)
index 0000000..2c97733
--- /dev/null
@@ -0,0 +1,50 @@
+       fmul    {z0.h-z1.h}, {z0.h-z1.h}, z0.h
+       fmul    {z30.h-z31.h}, {z0.h-z1.h}, z0.h
+       fmul    {z0.h-z1.h}, {z30.h-z31.h}, z0.h
+       fmul    {z0.h-z1.h}, {z0.h-z1.h}, z15.h
+       fmul    {z0.s-z1.s}, {z0.s-z1.s}, z0.s
+       fmul    {z30.s-z31.s}, {z0.s-z1.s}, z0.s
+       fmul    {z0.s-z1.s}, {z30.s-z31.s}, z0.s
+       fmul    {z0.s-z1.s}, {z0.s-z1.s}, z15.s
+       fmul    {z0.d-z1.d}, {z0.d-z1.d}, z0.d
+       fmul    {z30.d-z31.d}, {z0.d-z1.d}, z0.d
+       fmul    {z0.d-z1.d}, {z30.d-z31.d}, z0.d
+       fmul    {z0.d-z1.d}, {z0.d-z1.d}, z15.d
+       fmul    {z0.h-z3.h}, {z0.h-z3.h}, z0.h
+       fmul    {z28.h-z31.h}, {z0.h-z3.h}, z0.h
+       fmul    {z0.h-z3.h}, {z28.h-z31.h}, z0.h
+       fmul    {z0.h-z3.h}, {z0.h-z3.h}, z15.h
+       fmul    {z0.s-z3.s}, {z0.s-z3.s}, z0.s
+       fmul    {z28.s-z31.s}, {z0.s-z3.s}, z0.s
+       fmul    {z0.s-z3.s}, {z28.s-z31.s}, z0.s
+       fmul    {z0.s-z3.s}, {z0.s-z3.s}, z15.s
+       fmul    {z0.d-z3.d}, {z0.d-z3.d}, z0.d
+       fmul    {z28.d-z31.d}, {z0.d-z3.d}, z0.d
+       fmul    {z0.d-z3.d}, {z28.d-z31.d}, z0.d
+       fmul    {z0.d-z3.d}, {z0.d-z3.d}, z15.d
+
+       fmul    {z0.h-z1.h}, {z0.h-z1.h}, {z0.h-z1.h}
+       fmul    {z30.h-z31.h}, {z0.h-z1.h}, {z0.h-z1.h}
+       fmul    {z0.h-z1.h}, {z30.h-z31.h}, {z0.h-z1.h}
+       fmul    {z0.h-z1.h}, {z0.h-z1.h}, {z30.h-z31.h}
+       fmul    {z0.s-z1.s}, {z0.s-z1.s}, {z0.s-z1.s}
+       fmul    {z30.s-z31.s}, {z0.s-z1.s}, {z0.s-z1.s}
+       fmul    {z0.s-z1.s}, {z30.s-z31.s}, {z0.s-z1.s}
+       fmul    {z0.s-z1.s}, {z0.s-z1.s}, {z30.s-z31.s}
+       fmul    {z0.d-z1.d}, {z0.d-z1.d}, {z0.d-z1.d}
+       fmul    {z30.d-z31.d}, {z0.d-z1.d}, {z0.d-z1.d}
+       fmul    {z0.d-z1.d}, {z30.d-z31.d}, {z0.d-z1.d}
+       fmul    {z0.d-z1.d}, {z0.d-z1.d}, {z30.d-z31.d}
+       fmul    {z0.h-z3.h}, {z0.h-z3.h}, {z0.h-z3.h}
+       fmul    {z28.h-z31.h}, {z0.h-z3.h}, {z0.h-z3.h}
+       fmul    {z0.h-z3.h}, {z28.h-z31.h}, {z0.h-z3.h}
+       fmul    {z0.h-z3.h}, {z0.h-z3.h}, {z28.h-z31.h}
+       fmul    {z0.s-z3.s}, {z0.s-z3.s}, {z0.s-z3.s}
+       fmul    {z28.s-z31.s}, {z0.s-z3.s}, {z0.s-z3.s}
+       fmul    {z0.s-z3.s}, {z28.s-z31.s}, {z0.s-z3.s}
+       fmul    {z0.s-z3.s}, {z0.s-z3.s}, {z28.s-z31.s}
+       fmul    {z0.d-z3.d}, {z0.d-z3.d}, {z0.d-z3.d}
+       fmul    {z28.d-z31.d}, {z0.d-z3.d}, {z0.d-z3.d}
+       fmul    {z0.d-z3.d}, {z28.d-z31.d}, {z0.d-z3.d}
+       fmul    {z0.d-z3.d}, {z0.d-z3.d}, {z28.d-z31.d}
+
diff --git a/gas/testsuite/gas/aarch64/sve2p2.d b/gas/testsuite/gas/aarch64/sve2p2.d
new file mode 100644 (file)
index 0000000..f401cb4
--- /dev/null
@@ -0,0 +1,694 @@
+#as: -march=armv8-a+sve2p2
+#as: -march=armv8-a+sme2p2
+#objdump: -dr
+
+.*:     file format .*
+
+
+Disassembly of section \.text:
+
+0+ <\.text>:
+ *[0-9a-f]+:   0406a000        abs     z0\.b, p0/z, z0\.b
+ *[0-9a-f]+:   0406a01f        abs     z31\.b, p0/z, z0\.b
+ *[0-9a-f]+:   0406bc00        abs     z0\.b, p7/z, z0\.b
+ *[0-9a-f]+:   0406a3e0        abs     z0\.b, p0/z, z31\.b
+ *[0-9a-f]+:   0446a000        abs     z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0446a01f        abs     z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0446bc00        abs     z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   0446a3e0        abs     z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   0486a000        abs     z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0486a01f        abs     z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0486bc00        abs     z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   0486a3e0        abs     z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04c6a000        abs     z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c6a01f        abs     z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c6bc00        abs     z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04c6a3e0        abs     z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   649ac000        bfcvt   z0\.h, p0/z, z0\.s
+ *[0-9a-f]+:   649ac01f        bfcvt   z31\.h, p0/z, z0\.s
+ *[0-9a-f]+:   649adc00        bfcvt   z0\.h, p7/z, z0\.s
+ *[0-9a-f]+:   649ac3e0        bfcvt   z0\.h, p0/z, z31\.s
+ *[0-9a-f]+:   6482a000        bfcvtnt z0\.h, p0/z, z0\.s
+ *[0-9a-f]+:   6482a01f        bfcvtnt z31\.h, p0/z, z0\.s
+ *[0-9a-f]+:   6482bc00        bfcvtnt z0\.h, p7/z, z0\.s
+ *[0-9a-f]+:   6482a3e0        bfcvtnt z0\.h, p0/z, z31\.s
+ *[0-9a-f]+:   0408a000        cls     z0\.b, p0/z, z0\.b
+ *[0-9a-f]+:   0408a01f        cls     z31\.b, p0/z, z0\.b
+ *[0-9a-f]+:   0408bc00        cls     z0\.b, p7/z, z0\.b
+ *[0-9a-f]+:   0408a3e0        cls     z0\.b, p0/z, z31\.b
+ *[0-9a-f]+:   0448a000        cls     z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0448a01f        cls     z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0448bc00        cls     z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   0448a3e0        cls     z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   0488a000        cls     z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0488a01f        cls     z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0488bc00        cls     z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   0488a3e0        cls     z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04c8a000        cls     z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c8a01f        cls     z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c8bc00        cls     z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04c8a3e0        cls     z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   0409a000        clz     z0\.b, p0/z, z0\.b
+ *[0-9a-f]+:   0409a01f        clz     z31\.b, p0/z, z0\.b
+ *[0-9a-f]+:   0409bc00        clz     z0\.b, p7/z, z0\.b
+ *[0-9a-f]+:   0409a3e0        clz     z0\.b, p0/z, z31\.b
+ *[0-9a-f]+:   0449a000        clz     z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0449a01f        clz     z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0449bc00        clz     z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   0449a3e0        clz     z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   0489a000        clz     z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0489a01f        clz     z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0489bc00        clz     z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   0489a3e0        clz     z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04c9a000        clz     z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c9a01f        clz     z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c9bc00        clz     z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04c9a3e0        clz     z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   040ba000        cnot    z0\.b, p0/z, z0\.b
+ *[0-9a-f]+:   040ba01f        cnot    z31\.b, p0/z, z0\.b
+ *[0-9a-f]+:   040bbc00        cnot    z0\.b, p7/z, z0\.b
+ *[0-9a-f]+:   040ba3e0        cnot    z0\.b, p0/z, z31\.b
+ *[0-9a-f]+:   044ba000        cnot    z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   044ba01f        cnot    z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   044bbc00        cnot    z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   044ba3e0        cnot    z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   048ba000        cnot    z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   048ba01f        cnot    z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   048bbc00        cnot    z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   048ba3e0        cnot    z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04cba000        cnot    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04cba01f        cnot    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04cbbc00        cnot    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04cba3e0        cnot    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   040aa000        cnt     z0\.b, p0/z, z0\.b
+ *[0-9a-f]+:   040aa01f        cnt     z31\.b, p0/z, z0\.b
+ *[0-9a-f]+:   040abc00        cnt     z0\.b, p7/z, z0\.b
+ *[0-9a-f]+:   040aa3e0        cnt     z0\.b, p0/z, z31\.b
+ *[0-9a-f]+:   044aa000        cnt     z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   044aa01f        cnt     z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   044abc00        cnt     z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   044aa3e0        cnt     z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   048aa000        cnt     z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   048aa01f        cnt     z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   048abc00        cnt     z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   048aa3e0        cnt     z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04caa000        cnt     z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04caa01f        cnt     z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04cabc00        cnt     z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04caa3e0        cnt     z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   05218000        compact z0\.b, p0, z0\.b
+ *[0-9a-f]+:   0521801f        compact z31\.b, p0, z0\.b
+ *[0-9a-f]+:   05219c00        compact z0\.b, p7, z0\.b
+ *[0-9a-f]+:   052183e0        compact z0\.b, p0, z31\.b
+ *[0-9a-f]+:   05618000        compact z0\.h, p0, z0\.h
+ *[0-9a-f]+:   0561801f        compact z31\.h, p0, z0\.h
+ *[0-9a-f]+:   05619c00        compact z0\.h, p7, z0\.h
+ *[0-9a-f]+:   056183e0        compact z0\.h, p0, z31\.h
+ *[0-9a-f]+:   05a18000        compact z0\.s, p0, z0\.s
+ *[0-9a-f]+:   05a1801f        compact z31\.s, p0, z0\.s
+ *[0-9a-f]+:   05a19c00        compact z0\.s, p7, z0\.s
+ *[0-9a-f]+:   05a183e0        compact z0\.s, p0, z31\.s
+ *[0-9a-f]+:   05e18000        compact z0\.d, p0, z0\.d
+ *[0-9a-f]+:   05e1801f        compact z31\.d, p0, z0\.d
+ *[0-9a-f]+:   05e19c00        compact z0\.d, p7, z0\.d
+ *[0-9a-f]+:   05e183e0        compact z0\.d, p0, z31\.d
+ *[0-9a-f]+:   05318000        expand  z0\.b, p0, z0\.b
+ *[0-9a-f]+:   0531801f        expand  z31\.b, p0, z0\.b
+ *[0-9a-f]+:   05319c00        expand  z0\.b, p7, z0\.b
+ *[0-9a-f]+:   053183e0        expand  z0\.b, p0, z31\.b
+ *[0-9a-f]+:   05718000        expand  z0\.h, p0, z0\.h
+ *[0-9a-f]+:   0571801f        expand  z31\.h, p0, z0\.h
+ *[0-9a-f]+:   05719c00        expand  z0\.h, p7, z0\.h
+ *[0-9a-f]+:   057183e0        expand  z0\.h, p0, z31\.h
+ *[0-9a-f]+:   05b18000        expand  z0\.s, p0, z0\.s
+ *[0-9a-f]+:   05b1801f        expand  z31\.s, p0, z0\.s
+ *[0-9a-f]+:   05b19c00        expand  z0\.s, p7, z0\.s
+ *[0-9a-f]+:   05b183e0        expand  z0\.s, p0, z31\.s
+ *[0-9a-f]+:   05f18000        expand  z0\.d, p0, z0\.d
+ *[0-9a-f]+:   05f1801f        expand  z31\.d, p0, z0\.d
+ *[0-9a-f]+:   05f19c00        expand  z0\.d, p7, z0\.d
+ *[0-9a-f]+:   05f183e0        expand  z0\.d, p0, z31\.d
+ *[0-9a-f]+:   044ca000        fabs    z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   044ca01f        fabs    z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   044cbc00        fabs    z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   044ca3e0        fabs    z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   048ca000        fabs    z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   048ca01f        fabs    z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   048cbc00        fabs    z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   048ca3e0        fabs    z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04cca000        fabs    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04cca01f        fabs    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04ccbc00        fabs    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04cca3e0        fabs    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   649aa000        fcvt    z0\.s, p0/z, z0\.h
+ *[0-9a-f]+:   649aa01f        fcvt    z31\.s, p0/z, z0\.h
+ *[0-9a-f]+:   649abc00        fcvt    z0\.s, p7/z, z0\.h
+ *[0-9a-f]+:   649aa3e0        fcvt    z0\.s, p0/z, z31\.h
+ *[0-9a-f]+:   64daa000        fcvt    z0\.d, p0/z, z0\.h
+ *[0-9a-f]+:   64daa01f        fcvt    z31\.d, p0/z, z0\.h
+ *[0-9a-f]+:   64dabc00        fcvt    z0\.d, p7/z, z0\.h
+ *[0-9a-f]+:   64daa3e0        fcvt    z0\.d, p0/z, z31\.h
+ *[0-9a-f]+:   649a8000        fcvt    z0\.h, p0/z, z0\.s
+ *[0-9a-f]+:   649a801f        fcvt    z31\.h, p0/z, z0\.s
+ *[0-9a-f]+:   649a9c00        fcvt    z0\.h, p7/z, z0\.s
+ *[0-9a-f]+:   649a83e0        fcvt    z0\.h, p0/z, z31\.s
+ *[0-9a-f]+:   64dae000        fcvt    z0\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64dae01f        fcvt    z31\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64dafc00        fcvt    z0\.d, p7/z, z0\.s
+ *[0-9a-f]+:   64dae3e0        fcvt    z0\.d, p0/z, z31\.s
+ *[0-9a-f]+:   64da8000        fcvt    z0\.h, p0/z, z0\.d
+ *[0-9a-f]+:   64da801f        fcvt    z31\.h, p0/z, z0\.d
+ *[0-9a-f]+:   64da9c00        fcvt    z0\.h, p7/z, z0\.d
+ *[0-9a-f]+:   64da83e0        fcvt    z0\.h, p0/z, z31\.d
+ *[0-9a-f]+:   64dac000        fcvt    z0\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64dac01f        fcvt    z31\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64dadc00        fcvt    z0\.s, p7/z, z0\.d
+ *[0-9a-f]+:   64dac3e0        fcvt    z0\.s, p0/z, z31\.d
+ *[0-9a-f]+:   6481a000        fcvtlt  z0\.s, p0/z, z0\.h
+ *[0-9a-f]+:   6481a01f        fcvtlt  z31\.s, p0/z, z0\.h
+ *[0-9a-f]+:   6481bc00        fcvtlt  z0\.s, p7/z, z0\.h
+ *[0-9a-f]+:   6481a3e0        fcvtlt  z0\.s, p0/z, z31\.h
+ *[0-9a-f]+:   64c3a000        fcvtlt  z0\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64c3a01f        fcvtlt  z31\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64c3bc00        fcvtlt  z0\.d, p7/z, z0\.s
+ *[0-9a-f]+:   64c3a3e0        fcvtlt  z0\.d, p0/z, z31\.s
+ *[0-9a-f]+:   6480a000        fcvtnt  z0\.h, p0/z, z0\.s
+ *[0-9a-f]+:   6480a01f        fcvtnt  z31\.h, p0/z, z0\.s
+ *[0-9a-f]+:   6480bc00        fcvtnt  z0\.h, p7/z, z0\.s
+ *[0-9a-f]+:   6480a3e0        fcvtnt  z0\.h, p0/z, z31\.s
+ *[0-9a-f]+:   64c2a000        fcvtnt  z0\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64c2a01f        fcvtnt  z31\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64c2bc00        fcvtnt  z0\.s, p7/z, z0\.d
+ *[0-9a-f]+:   64c2a3e0        fcvtnt  z0\.s, p0/z, z31\.d
+ *[0-9a-f]+:   641ac000        fcvtx   z0\.s, p0/z, z0\.d
+ *[0-9a-f]+:   641ac01f        fcvtx   z31\.s, p0/z, z0\.d
+ *[0-9a-f]+:   641adc00        fcvtx   z0\.s, p7/z, z0\.d
+ *[0-9a-f]+:   641ac3e0        fcvtx   z0\.s, p0/z, z31\.d
+ *[0-9a-f]+:   6402a000        fcvtxnt z0\.s, p0/z, z0\.d
+ *[0-9a-f]+:   6402a01f        fcvtxnt z31\.s, p0/z, z0\.d
+ *[0-9a-f]+:   6402bc00        fcvtxnt z0\.s, p7/z, z0\.d
+ *[0-9a-f]+:   6402a3e0        fcvtxnt z0\.s, p0/z, z31\.d
+ *[0-9a-f]+:   645ec000        fcvtzs  z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645ec01f        fcvtzs  z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645edc00        fcvtzs  z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   645ec3e0        fcvtzs  z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   645f8000        fcvtzs  z0\.s, p0/z, z0\.h
+ *[0-9a-f]+:   645f801f        fcvtzs  z31\.s, p0/z, z0\.h
+ *[0-9a-f]+:   645f9c00        fcvtzs  z0\.s, p7/z, z0\.h
+ *[0-9a-f]+:   645f83e0        fcvtzs  z0\.s, p0/z, z31\.h
+ *[0-9a-f]+:   645fc000        fcvtzs  z0\.d, p0/z, z0\.h
+ *[0-9a-f]+:   645fc01f        fcvtzs  z31\.d, p0/z, z0\.h
+ *[0-9a-f]+:   645fdc00        fcvtzs  z0\.d, p7/z, z0\.h
+ *[0-9a-f]+:   645fc3e0        fcvtzs  z0\.d, p0/z, z31\.h
+ *[0-9a-f]+:   649f8000        fcvtzs  z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649f801f        fcvtzs  z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649f9c00        fcvtzs  z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   649f83e0        fcvtzs  z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64df8000        fcvtzs  z0\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64df801f        fcvtzs  z31\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64df9c00        fcvtzs  z0\.d, p7/z, z0\.s
+ *[0-9a-f]+:   64df83e0        fcvtzs  z0\.d, p0/z, z31\.s
+ *[0-9a-f]+:   64de8000        fcvtzs  z0\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64de801f        fcvtzs  z31\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64de9c00        fcvtzs  z0\.s, p7/z, z0\.d
+ *[0-9a-f]+:   64de83e0        fcvtzs  z0\.s, p0/z, z31\.d
+ *[0-9a-f]+:   64dfc000        fcvtzs  z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64dfc01f        fcvtzs  z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64dfdc00        fcvtzs  z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64dfc3e0        fcvtzs  z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   645ee000        fcvtzu  z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645ee01f        fcvtzu  z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645efc00        fcvtzu  z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   645ee3e0        fcvtzu  z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   645fa000        fcvtzu  z0\.s, p0/z, z0\.h
+ *[0-9a-f]+:   645fa01f        fcvtzu  z31\.s, p0/z, z0\.h
+ *[0-9a-f]+:   645fbc00        fcvtzu  z0\.s, p7/z, z0\.h
+ *[0-9a-f]+:   645fa3e0        fcvtzu  z0\.s, p0/z, z31\.h
+ *[0-9a-f]+:   645fe000        fcvtzu  z0\.d, p0/z, z0\.h
+ *[0-9a-f]+:   645fe01f        fcvtzu  z31\.d, p0/z, z0\.h
+ *[0-9a-f]+:   645ffc00        fcvtzu  z0\.d, p7/z, z0\.h
+ *[0-9a-f]+:   645fe3e0        fcvtzu  z0\.d, p0/z, z31\.h
+ *[0-9a-f]+:   649fa000        fcvtzu  z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649fa01f        fcvtzu  z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649fbc00        fcvtzu  z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   649fa3e0        fcvtzu  z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64dfa000        fcvtzu  z0\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64dfa01f        fcvtzu  z31\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64dfbc00        fcvtzu  z0\.d, p7/z, z0\.s
+ *[0-9a-f]+:   64dfa3e0        fcvtzu  z0\.d, p0/z, z31\.s
+ *[0-9a-f]+:   64dea000        fcvtzu  z0\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64dea01f        fcvtzu  z31\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64debc00        fcvtzu  z0\.s, p7/z, z0\.d
+ *[0-9a-f]+:   64dea3e0        fcvtzu  z0\.s, p0/z, z31\.d
+ *[0-9a-f]+:   64dfe000        fcvtzu  z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64dfe01f        fcvtzu  z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64dffc00        fcvtzu  z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64dfe3e0        fcvtzu  z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   25218000        firstp  x0, p0, p0\.b
+ *[0-9a-f]+:   2521801f        firstp  xzr, p0, p0\.b
+ *[0-9a-f]+:   2521bc00        firstp  x0, p15, p0\.b
+ *[0-9a-f]+:   252181e0        firstp  x0, p0, p15\.b
+ *[0-9a-f]+:   25618000        firstp  x0, p0, p0\.h
+ *[0-9a-f]+:   2561801f        firstp  xzr, p0, p0\.h
+ *[0-9a-f]+:   2561bc00        firstp  x0, p15, p0\.h
+ *[0-9a-f]+:   256181e0        firstp  x0, p0, p15\.h
+ *[0-9a-f]+:   25a18000        firstp  x0, p0, p0\.s
+ *[0-9a-f]+:   25a1801f        firstp  xzr, p0, p0\.s
+ *[0-9a-f]+:   25a1bc00        firstp  x0, p15, p0\.s
+ *[0-9a-f]+:   25a181e0        firstp  x0, p0, p15\.s
+ *[0-9a-f]+:   25e18000        firstp  x0, p0, p0\.d
+ *[0-9a-f]+:   25e1801f        firstp  xzr, p0, p0\.d
+ *[0-9a-f]+:   25e1bc00        firstp  x0, p15, p0\.d
+ *[0-9a-f]+:   25e181e0        firstp  x0, p0, p15\.d
+ *[0-9a-f]+:   641ea000        flogb   z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   641ea01f        flogb   z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   641ebc00        flogb   z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   641ea3e0        flogb   z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   641ec000        flogb   z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   641ec01f        flogb   z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   641edc00        flogb   z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   641ec3e0        flogb   z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   641ee000        flogb   z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   641ee01f        flogb   z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   641efc00        flogb   z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   641ee3e0        flogb   z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   044da000        fneg    z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   044da01f        fneg    z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   044dbc00        fneg    z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   044da3e0        fneg    z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   048da000        fneg    z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   048da01f        fneg    z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   048dbc00        fneg    z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   048da3e0        fneg    z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04cda000        fneg    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04cda01f        fneg    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04cdbc00        fneg    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04cda3e0        fneg    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   645b8000        frecpx  z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645b801f        frecpx  z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645b9c00        frecpx  z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   645b83e0        frecpx  z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   649b8000        frecpx  z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649b801f        frecpx  z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649b9c00        frecpx  z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   649b83e0        frecpx  z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64db8000        frecpx  z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64db801f        frecpx  z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64db9c00        frecpx  z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64db83e0        frecpx  z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   6511a000        frint32x        z0\.s, p0/m, z0\.s
+ *[0-9a-f]+:   6511a01f        frint32x        z31\.s, p0/m, z0\.s
+ *[0-9a-f]+:   6511bc00        frint32x        z0\.s, p7/m, z0\.s
+ *[0-9a-f]+:   6511a3e0        frint32x        z0\.s, p0/m, z31\.s
+ *[0-9a-f]+:   6513a000        frint32x        z0\.d, p0/m, z0\.d
+ *[0-9a-f]+:   6513a01f        frint32x        z31\.d, p0/m, z0\.d
+ *[0-9a-f]+:   6513bc00        frint32x        z0\.d, p7/m, z0\.d
+ *[0-9a-f]+:   6513a3e0        frint32x        z0\.d, p0/m, z31\.d
+ *[0-9a-f]+:   641ca000        frint32x        z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   641ca01f        frint32x        z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   641cbc00        frint32x        z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   641ca3e0        frint32x        z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   641ce000        frint32x        z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   641ce01f        frint32x        z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   641cfc00        frint32x        z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   641ce3e0        frint32x        z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   6510a000        frint32z        z0\.s, p0/m, z0\.s
+ *[0-9a-f]+:   6510a01f        frint32z        z31\.s, p0/m, z0\.s
+ *[0-9a-f]+:   6510bc00        frint32z        z0\.s, p7/m, z0\.s
+ *[0-9a-f]+:   6510a3e0        frint32z        z0\.s, p0/m, z31\.s
+ *[0-9a-f]+:   6512a000        frint32z        z0\.d, p0/m, z0\.d
+ *[0-9a-f]+:   6512a01f        frint32z        z31\.d, p0/m, z0\.d
+ *[0-9a-f]+:   6512bc00        frint32z        z0\.d, p7/m, z0\.d
+ *[0-9a-f]+:   6512a3e0        frint32z        z0\.d, p0/m, z31\.d
+ *[0-9a-f]+:   641c8000        frint32z        z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   641c801f        frint32z        z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   641c9c00        frint32z        z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   641c83e0        frint32z        z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   641cc000        frint32z        z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   641cc01f        frint32z        z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   641cdc00        frint32z        z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   641cc3e0        frint32z        z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   6515a000        frint64x        z0\.s, p0/m, z0\.s
+ *[0-9a-f]+:   6515a01f        frint64x        z31\.s, p0/m, z0\.s
+ *[0-9a-f]+:   6515bc00        frint64x        z0\.s, p7/m, z0\.s
+ *[0-9a-f]+:   6515a3e0        frint64x        z0\.s, p0/m, z31\.s
+ *[0-9a-f]+:   6517a000        frint64x        z0\.d, p0/m, z0\.d
+ *[0-9a-f]+:   6517a01f        frint64x        z31\.d, p0/m, z0\.d
+ *[0-9a-f]+:   6517bc00        frint64x        z0\.d, p7/m, z0\.d
+ *[0-9a-f]+:   6517a3e0        frint64x        z0\.d, p0/m, z31\.d
+ *[0-9a-f]+:   641da000        frint64x        z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   641da01f        frint64x        z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   641dbc00        frint64x        z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   641da3e0        frint64x        z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   641de000        frint64x        z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   641de01f        frint64x        z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   641dfc00        frint64x        z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   641de3e0        frint64x        z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   6514a000        frint64z        z0\.s, p0/m, z0\.s
+ *[0-9a-f]+:   6514a01f        frint64z        z31\.s, p0/m, z0\.s
+ *[0-9a-f]+:   6514bc00        frint64z        z0\.s, p7/m, z0\.s
+ *[0-9a-f]+:   6514a3e0        frint64z        z0\.s, p0/m, z31\.s
+ *[0-9a-f]+:   6516a000        frint64z        z0\.d, p0/m, z0\.d
+ *[0-9a-f]+:   6516a01f        frint64z        z31\.d, p0/m, z0\.d
+ *[0-9a-f]+:   6516bc00        frint64z        z0\.d, p7/m, z0\.d
+ *[0-9a-f]+:   6516a3e0        frint64z        z0\.d, p0/m, z31\.d
+ *[0-9a-f]+:   641d8000        frint64z        z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   641d801f        frint64z        z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   641d9c00        frint64z        z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   641d83e0        frint64z        z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   641dc000        frint64z        z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   641dc01f        frint64z        z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   641ddc00        frint64z        z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   641dc3e0        frint64z        z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   6459c000        frintx  z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6459c01f        frintx  z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6459dc00        frintx  z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   6459c3e0        frintx  z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   6499c000        frintx  z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6499c01f        frintx  z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6499dc00        frintx  z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   6499c3e0        frintx  z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64d9c000        frintx  z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d9c01f        frintx  z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d9dc00        frintx  z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64d9c3e0        frintx  z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   6459e000        frinti  z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6459e01f        frinti  z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6459fc00        frinti  z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   6459e3e0        frinti  z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   6499e000        frinti  z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6499e01f        frinti  z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6499fc00        frinti  z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   6499e3e0        frinti  z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64d9e000        frinti  z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d9e01f        frinti  z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d9fc00        frinti  z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64d9e3e0        frinti  z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   64598000        frinta  z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6459801f        frinta  z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   64599c00        frinta  z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   645983e0        frinta  z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   64998000        frinta  z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6499801f        frinta  z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   64999c00        frinta  z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   649983e0        frinta  z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64d98000        frinta  z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d9801f        frinta  z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d99c00        frinta  z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64d983e0        frinta  z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   64588000        frintn  z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6458801f        frintn  z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   64589c00        frintn  z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   645883e0        frintn  z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   64988000        frintn  z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6498801f        frintn  z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   64989c00        frintn  z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   649883e0        frintn  z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64d88000        frintn  z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d8801f        frintn  z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d89c00        frintn  z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64d883e0        frintn  z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   6458e000        frintz  z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6458e01f        frintz  z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6458fc00        frintz  z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   6458e3e0        frintz  z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   6498e000        frintz  z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6498e01f        frintz  z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6498fc00        frintz  z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   6498e3e0        frintz  z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64d8e000        frintz  z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d8e01f        frintz  z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d8fc00        frintz  z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64d8e3e0        frintz  z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   6458c000        frintm  z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6458c01f        frintm  z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6458dc00        frintm  z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   6458c3e0        frintm  z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   6498c000        frintm  z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6498c01f        frintm  z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6498dc00        frintm  z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   6498c3e0        frintm  z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64d8c000        frintm  z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d8c01f        frintm  z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d8dc00        frintm  z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64d8c3e0        frintm  z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   6458a000        frintp  z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6458a01f        frintp  z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   6458bc00        frintp  z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   6458a3e0        frintp  z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   6498a000        frintp  z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6498a01f        frintp  z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   6498bc00        frintp  z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   6498a3e0        frintp  z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64d8a000        frintp  z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d8a01f        frintp  z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64d8bc00        frintp  z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64d8a3e0        frintp  z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   645ba000        fsqrt   z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645ba01f        fsqrt   z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645bbc00        fsqrt   z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   645ba3e0        fsqrt   z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   649ba000        fsqrt   z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649ba01f        fsqrt   z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649bbc00        fsqrt   z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   649ba3e0        fsqrt   z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64dba000        fsqrt   z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64dba01f        fsqrt   z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64dbbc00        fsqrt   z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64dba3e0        fsqrt   z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   25228000        lastp   x0, p0, p0\.b
+ *[0-9a-f]+:   2522801f        lastp   xzr, p0, p0\.b
+ *[0-9a-f]+:   2522bc00        lastp   x0, p15, p0\.b
+ *[0-9a-f]+:   252281e0        lastp   x0, p0, p15\.b
+ *[0-9a-f]+:   25628000        lastp   x0, p0, p0\.h
+ *[0-9a-f]+:   2562801f        lastp   xzr, p0, p0\.h
+ *[0-9a-f]+:   2562bc00        lastp   x0, p15, p0\.h
+ *[0-9a-f]+:   256281e0        lastp   x0, p0, p15\.h
+ *[0-9a-f]+:   25a28000        lastp   x0, p0, p0\.s
+ *[0-9a-f]+:   25a2801f        lastp   xzr, p0, p0\.s
+ *[0-9a-f]+:   25a2bc00        lastp   x0, p15, p0\.s
+ *[0-9a-f]+:   25a281e0        lastp   x0, p0, p15\.s
+ *[0-9a-f]+:   25e28000        lastp   x0, p0, p0\.d
+ *[0-9a-f]+:   25e2801f        lastp   xzr, p0, p0\.d
+ *[0-9a-f]+:   25e2bc00        lastp   x0, p15, p0\.d
+ *[0-9a-f]+:   25e281e0        lastp   x0, p0, p15\.d
+ *[0-9a-f]+:   0407a000        neg     z0\.b, p0/z, z0\.b
+ *[0-9a-f]+:   0407a01f        neg     z31\.b, p0/z, z0\.b
+ *[0-9a-f]+:   0407bc00        neg     z0\.b, p7/z, z0\.b
+ *[0-9a-f]+:   0407a3e0        neg     z0\.b, p0/z, z31\.b
+ *[0-9a-f]+:   0447a000        neg     z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0447a01f        neg     z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0447bc00        neg     z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   0447a3e0        neg     z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   0487a000        neg     z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0487a01f        neg     z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0487bc00        neg     z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   0487a3e0        neg     z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04c7a000        neg     z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c7a01f        neg     z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c7bc00        neg     z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04c7a3e0        neg     z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   040ea000        not     z0\.b, p0/z, z0\.b
+ *[0-9a-f]+:   040ea01f        not     z31\.b, p0/z, z0\.b
+ *[0-9a-f]+:   040ebc00        not     z0\.b, p7/z, z0\.b
+ *[0-9a-f]+:   040ea3e0        not     z0\.b, p0/z, z31\.b
+ *[0-9a-f]+:   044ea000        not     z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   044ea01f        not     z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   044ebc00        not     z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   044ea3e0        not     z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   048ea000        not     z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   048ea01f        not     z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   048ebc00        not     z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   048ea3e0        not     z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04cea000        not     z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04cea01f        not     z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04cebc00        not     z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04cea3e0        not     z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   0527a000        rbit    z0\.b, p0/z, z0\.b
+ *[0-9a-f]+:   0527a01f        rbit    z31\.b, p0/z, z0\.b
+ *[0-9a-f]+:   0527bc00        rbit    z0\.b, p7/z, z0\.b
+ *[0-9a-f]+:   0527a3e0        rbit    z0\.b, p0/z, z31\.b
+ *[0-9a-f]+:   0567a000        rbit    z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0567a01f        rbit    z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0567bc00        rbit    z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   0567a3e0        rbit    z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   05a7a000        rbit    z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   05a7a01f        rbit    z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   05a7bc00        rbit    z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   05a7a3e0        rbit    z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   05e7a000        rbit    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   05e7a01f        rbit    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   05e7bc00        rbit    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   05e7a3e0        rbit    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   0564a000        revb    z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0564a01f        revb    z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0564bc00        revb    z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   0564a3e0        revb    z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   05a4a000        revb    z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   05a4a01f        revb    z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   05a4bc00        revb    z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   05a4a3e0        revb    z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   05e4a000        revb    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   05e4a01f        revb    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   05e4bc00        revb    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   05e4a3e0        revb    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   05a5a000        revh    z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   05a5a01f        revh    z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   05a5bc00        revh    z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   05a5a3e0        revh    z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   05e5a000        revh    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   05e5a01f        revh    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   05e5bc00        revh    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   05e5a3e0        revh    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   05e6a000        revw    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   05e6a01f        revw    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   05e6bc00        revw    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   05e6a3e0        revw    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   052ea000        revd    z0\.q, p0/z, z0\.q
+ *[0-9a-f]+:   052ea01f        revd    z31\.q, p0/z, z0\.q
+ *[0-9a-f]+:   052ebc00        revd    z0\.q, p7/z, z0\.q
+ *[0-9a-f]+:   052ea3e0        revd    z0\.q, p0/z, z31\.q
+ *[0-9a-f]+:   645cc000        scvtf   z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645cc01f        scvtf   z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645cdc00        scvtf   z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   645cc3e0        scvtf   z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   645d8000        scvtf   z0\.h, p0/z, z0\.s
+ *[0-9a-f]+:   645d801f        scvtf   z31\.h, p0/z, z0\.s
+ *[0-9a-f]+:   645d9c00        scvtf   z0\.h, p7/z, z0\.s
+ *[0-9a-f]+:   645d83e0        scvtf   z0\.h, p0/z, z31\.s
+ *[0-9a-f]+:   649d8000        scvtf   z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649d801f        scvtf   z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649d9c00        scvtf   z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   649d83e0        scvtf   z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64dc8000        scvtf   z0\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64dc801f        scvtf   z31\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64dc9c00        scvtf   z0\.d, p7/z, z0\.s
+ *[0-9a-f]+:   64dc83e0        scvtf   z0\.d, p0/z, z31\.s
+ *[0-9a-f]+:   645dc000        scvtf   z0\.h, p0/z, z0\.d
+ *[0-9a-f]+:   645dc01f        scvtf   z31\.h, p0/z, z0\.d
+ *[0-9a-f]+:   645ddc00        scvtf   z0\.h, p7/z, z0\.d
+ *[0-9a-f]+:   645dc3e0        scvtf   z0\.h, p0/z, z31\.d
+ *[0-9a-f]+:   64dd8000        scvtf   z0\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64dd801f        scvtf   z31\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64dd9c00        scvtf   z0\.s, p7/z, z0\.d
+ *[0-9a-f]+:   64dd83e0        scvtf   z0\.s, p0/z, z31\.d
+ *[0-9a-f]+:   64ddc000        scvtf   z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64ddc01f        scvtf   z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64dddc00        scvtf   z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64ddc3e0        scvtf   z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   440aa000        sqabs   z0\.b, p0/z, z0\.b
+ *[0-9a-f]+:   440aa01f        sqabs   z31\.b, p0/z, z0\.b
+ *[0-9a-f]+:   440abc00        sqabs   z0\.b, p7/z, z0\.b
+ *[0-9a-f]+:   440aa3e0        sqabs   z0\.b, p0/z, z31\.b
+ *[0-9a-f]+:   444aa000        sqabs   z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   444aa01f        sqabs   z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   444abc00        sqabs   z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   444aa3e0        sqabs   z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   448aa000        sqabs   z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   448aa01f        sqabs   z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   448abc00        sqabs   z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   448aa3e0        sqabs   z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   44caa000        sqabs   z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   44caa01f        sqabs   z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   44cabc00        sqabs   z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   44caa3e0        sqabs   z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   440ba000        sqneg   z0\.b, p0/z, z0\.b
+ *[0-9a-f]+:   440ba01f        sqneg   z31\.b, p0/z, z0\.b
+ *[0-9a-f]+:   440bbc00        sqneg   z0\.b, p7/z, z0\.b
+ *[0-9a-f]+:   440ba3e0        sqneg   z0\.b, p0/z, z31\.b
+ *[0-9a-f]+:   444ba000        sqneg   z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   444ba01f        sqneg   z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   444bbc00        sqneg   z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   444ba3e0        sqneg   z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   448ba000        sqneg   z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   448ba01f        sqneg   z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   448bbc00        sqneg   z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   448ba3e0        sqneg   z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   44cba000        sqneg   z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   44cba01f        sqneg   z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   44cbbc00        sqneg   z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   44cba3e0        sqneg   z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   0440a000        sxtb    z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0440a01f        sxtb    z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0440bc00        sxtb    z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   0440a3e0        sxtb    z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   0480a000        sxtb    z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0480a01f        sxtb    z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0480bc00        sxtb    z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   0480a3e0        sxtb    z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04c0a000        sxtb    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c0a01f        sxtb    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c0bc00        sxtb    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04c0a3e0        sxtb    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   0482a000        sxth    z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0482a01f        sxth    z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0482bc00        sxth    z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   0482a3e0        sxth    z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04c2a000        sxth    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c2a01f        sxth    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c2bc00        sxth    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04c2a3e0        sxth    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   04c4a000        sxtw    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c4a01f        sxtw    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c4bc00        sxtw    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04c4a3e0        sxtw    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   645ce000        ucvtf   z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645ce01f        ucvtf   z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   645cfc00        ucvtf   z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   645ce3e0        ucvtf   z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   645da000        ucvtf   z0\.h, p0/z, z0\.s
+ *[0-9a-f]+:   645da01f        ucvtf   z31\.h, p0/z, z0\.s
+ *[0-9a-f]+:   645dbc00        ucvtf   z0\.h, p7/z, z0\.s
+ *[0-9a-f]+:   645da3e0        ucvtf   z0\.h, p0/z, z31\.s
+ *[0-9a-f]+:   649da000        ucvtf   z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649da01f        ucvtf   z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   649dbc00        ucvtf   z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   649da3e0        ucvtf   z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   64dca000        ucvtf   z0\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64dca01f        ucvtf   z31\.d, p0/z, z0\.s
+ *[0-9a-f]+:   64dcbc00        ucvtf   z0\.d, p7/z, z0\.s
+ *[0-9a-f]+:   64dca3e0        ucvtf   z0\.d, p0/z, z31\.s
+ *[0-9a-f]+:   645de000        ucvtf   z0\.h, p0/z, z0\.d
+ *[0-9a-f]+:   645de01f        ucvtf   z31\.h, p0/z, z0\.d
+ *[0-9a-f]+:   645dfc00        ucvtf   z0\.h, p7/z, z0\.d
+ *[0-9a-f]+:   645de3e0        ucvtf   z0\.h, p0/z, z31\.d
+ *[0-9a-f]+:   64dda000        ucvtf   z0\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64dda01f        ucvtf   z31\.s, p0/z, z0\.d
+ *[0-9a-f]+:   64ddbc00        ucvtf   z0\.s, p7/z, z0\.d
+ *[0-9a-f]+:   64dda3e0        ucvtf   z0\.s, p0/z, z31\.d
+ *[0-9a-f]+:   64dde000        ucvtf   z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64dde01f        ucvtf   z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   64ddfc00        ucvtf   z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   64dde3e0        ucvtf   z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   4482a000        urecpe  z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   4482a01f        urecpe  z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   4482bc00        urecpe  z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   4482a3e0        urecpe  z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   4483a000        ursqrte z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   4483a01f        ursqrte z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   4483bc00        ursqrte z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   4483a3e0        ursqrte z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   0441a000        uxtb    z0\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0441a01f        uxtb    z31\.h, p0/z, z0\.h
+ *[0-9a-f]+:   0441bc00        uxtb    z0\.h, p7/z, z0\.h
+ *[0-9a-f]+:   0441a3e0        uxtb    z0\.h, p0/z, z31\.h
+ *[0-9a-f]+:   0481a000        uxtb    z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0481a01f        uxtb    z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0481bc00        uxtb    z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   0481a3e0        uxtb    z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04c1a000        uxtb    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c1a01f        uxtb    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c1bc00        uxtb    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04c1a3e0        uxtb    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   0483a000        uxth    z0\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0483a01f        uxth    z31\.s, p0/z, z0\.s
+ *[0-9a-f]+:   0483bc00        uxth    z0\.s, p7/z, z0\.s
+ *[0-9a-f]+:   0483a3e0        uxth    z0\.s, p0/z, z31\.s
+ *[0-9a-f]+:   04c3a000        uxth    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c3a01f        uxth    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c3bc00        uxth    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04c3a3e0        uxth    z0\.d, p0/z, z31\.d
+ *[0-9a-f]+:   04c5a000        uxtw    z0\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c5a01f        uxtw    z31\.d, p0/z, z0\.d
+ *[0-9a-f]+:   04c5bc00        uxtw    z0\.d, p7/z, z0\.d
+ *[0-9a-f]+:   04c5a3e0        uxtw    z0\.d, p0/z, z31\.d
diff --git a/gas/testsuite/gas/aarch64/sve2p2.s b/gas/testsuite/gas/aarch64/sve2p2.s
new file mode 100644 (file)
index 0000000..a0a0175
--- /dev/null
@@ -0,0 +1,738 @@
+       abs     z0.b, p0/z, z0.b
+       abs     z31.b, p0/z, z0.b
+       abs     z0.b, p7/z, z0.b
+       abs     z0.b, p0/z, z31.b
+       abs     z0.h, p0/z, z0.h
+       abs     z31.h, p0/z, z0.h
+       abs     z0.h, p7/z, z0.h
+       abs     z0.h, p0/z, z31.h
+       abs     z0.s, p0/z, z0.s
+       abs     z31.s, p0/z, z0.s
+       abs     z0.s, p7/z, z0.s
+       abs     z0.s, p0/z, z31.s
+       abs     z0.d, p0/z, z0.d
+       abs     z31.d, p0/z, z0.d
+       abs     z0.d, p7/z, z0.d
+       abs     z0.d, p0/z, z31.d
+
+       bfcvt   z0.h, p0/z, z0.s
+       bfcvt   z31.h, p0/z, z0.s
+       bfcvt   z0.h, p7/z, z0.s
+       bfcvt   z0.h, p0/z, z31.s
+
+       bfcvtnt z0.h, p0/z, z0.s
+       bfcvtnt z31.h, p0/z, z0.s
+       bfcvtnt z0.h, p7/z, z0.s
+       bfcvtnt z0.h, p0/z, z31.s
+
+       cls     z0.b, p0/z, z0.b
+       cls     z31.b, p0/z, z0.b
+       cls     z0.b, p7/z, z0.b
+       cls     z0.b, p0/z, z31.b
+       cls     z0.h, p0/z, z0.h
+       cls     z31.h, p0/z, z0.h
+       cls     z0.h, p7/z, z0.h
+       cls     z0.h, p0/z, z31.h
+       cls     z0.s, p0/z, z0.s
+       cls     z31.s, p0/z, z0.s
+       cls     z0.s, p7/z, z0.s
+       cls     z0.s, p0/z, z31.s
+       cls     z0.d, p0/z, z0.d
+       cls     z31.d, p0/z, z0.d
+       cls     z0.d, p7/z, z0.d
+       cls     z0.d, p0/z, z31.d
+
+       clz     z0.b, p0/z, z0.b
+       clz     z31.b, p0/z, z0.b
+       clz     z0.b, p7/z, z0.b
+       clz     z0.b, p0/z, z31.b
+       clz     z0.h, p0/z, z0.h
+       clz     z31.h, p0/z, z0.h
+       clz     z0.h, p7/z, z0.h
+       clz     z0.h, p0/z, z31.h
+       clz     z0.s, p0/z, z0.s
+       clz     z31.s, p0/z, z0.s
+       clz     z0.s, p7/z, z0.s
+       clz     z0.s, p0/z, z31.s
+       clz     z0.d, p0/z, z0.d
+       clz     z31.d, p0/z, z0.d
+       clz     z0.d, p7/z, z0.d
+       clz     z0.d, p0/z, z31.d
+
+       cnot    z0.b, p0/z, z0.b
+       cnot    z31.b, p0/z, z0.b
+       cnot    z0.b, p7/z, z0.b
+       cnot    z0.b, p0/z, z31.b
+       cnot    z0.h, p0/z, z0.h
+       cnot    z31.h, p0/z, z0.h
+       cnot    z0.h, p7/z, z0.h
+       cnot    z0.h, p0/z, z31.h
+       cnot    z0.s, p0/z, z0.s
+       cnot    z31.s, p0/z, z0.s
+       cnot    z0.s, p7/z, z0.s
+       cnot    z0.s, p0/z, z31.s
+       cnot    z0.d, p0/z, z0.d
+       cnot    z31.d, p0/z, z0.d
+       cnot    z0.d, p7/z, z0.d
+       cnot    z0.d, p0/z, z31.d
+
+       cnt     z0.b, p0/z, z0.b
+       cnt     z31.b, p0/z, z0.b
+       cnt     z0.b, p7/z, z0.b
+       cnt     z0.b, p0/z, z31.b
+       cnt     z0.h, p0/z, z0.h
+       cnt     z31.h, p0/z, z0.h
+       cnt     z0.h, p7/z, z0.h
+       cnt     z0.h, p0/z, z31.h
+       cnt     z0.s, p0/z, z0.s
+       cnt     z31.s, p0/z, z0.s
+       cnt     z0.s, p7/z, z0.s
+       cnt     z0.s, p0/z, z31.s
+       cnt     z0.d, p0/z, z0.d
+       cnt     z31.d, p0/z, z0.d
+       cnt     z0.d, p7/z, z0.d
+       cnt     z0.d, p0/z, z31.d
+
+// Word and doubleword forms in nonstreaming mode are part of FEAT_SVE.
+       compact z0.b, p0, z0.b
+       compact z31.b, p0, z0.b
+       compact z0.b, p7, z0.b
+       compact z0.b, p0, z31.b
+       compact z0.h, p0, z0.h
+       compact z31.h, p0, z0.h
+       compact z0.h, p7, z0.h
+       compact z0.h, p0, z31.h
+       compact z0.s, p0, z0.s
+       compact z31.s, p0, z0.s
+       compact z0.s, p7, z0.s
+       compact z0.s, p0, z31.s
+       compact z0.d, p0, z0.d
+       compact z31.d, p0, z0.d
+       compact z0.d, p7, z0.d
+       compact z0.d, p0, z31.d
+
+       expand  z0.b, p0, z0.b
+       expand  z31.b, p0, z0.b
+       expand  z0.b, p7, z0.b
+       expand  z0.b, p0, z31.b
+       expand  z0.h, p0, z0.h
+       expand  z31.h, p0, z0.h
+       expand  z0.h, p7, z0.h
+       expand  z0.h, p0, z31.h
+       expand  z0.s, p0, z0.s
+       expand  z31.s, p0, z0.s
+       expand  z0.s, p7, z0.s
+       expand  z0.s, p0, z31.s
+       expand  z0.d, p0, z0.d
+       expand  z31.d, p0, z0.d
+       expand  z0.d, p7, z0.d
+       expand  z0.d, p0, z31.d
+
+       fabs    z0.h, p0/z, z0.h
+       fabs    z31.h, p0/z, z0.h
+       fabs    z0.h, p7/z, z0.h
+       fabs    z0.h, p0/z, z31.h
+       fabs    z0.s, p0/z, z0.s
+       fabs    z31.s, p0/z, z0.s
+       fabs    z0.s, p7/z, z0.s
+       fabs    z0.s, p0/z, z31.s
+       fabs    z0.d, p0/z, z0.d
+       fabs    z31.d, p0/z, z0.d
+       fabs    z0.d, p7/z, z0.d
+       fabs    z0.d, p0/z, z31.d
+
+       fcvt    z0.s, p0/z, z0.h
+       fcvt    z31.s, p0/z, z0.h
+       fcvt    z0.s, p7/z, z0.h
+       fcvt    z0.s, p0/z, z31.h
+       fcvt    z0.d, p0/z, z0.h
+       fcvt    z31.d, p0/z, z0.h
+       fcvt    z0.d, p7/z, z0.h
+       fcvt    z0.d, p0/z, z31.h
+       fcvt    z0.h, p0/z, z0.s
+       fcvt    z31.h, p0/z, z0.s
+       fcvt    z0.h, p7/z, z0.s
+       fcvt    z0.h, p0/z, z31.s
+       fcvt    z0.d, p0/z, z0.s
+       fcvt    z31.d, p0/z, z0.s
+       fcvt    z0.d, p7/z, z0.s
+       fcvt    z0.d, p0/z, z31.s
+       fcvt    z0.h, p0/z, z0.d
+       fcvt    z31.h, p0/z, z0.d
+       fcvt    z0.h, p7/z, z0.d
+       fcvt    z0.h, p0/z, z31.d
+       fcvt    z0.s, p0/z, z0.d
+       fcvt    z31.s, p0/z, z0.d
+       fcvt    z0.s, p7/z, z0.d
+       fcvt    z0.s, p0/z, z31.d
+
+       fcvtlt  z0.s, p0/z, z0.h
+       fcvtlt  z31.s, p0/z, z0.h
+       fcvtlt  z0.s, p7/z, z0.h
+       fcvtlt  z0.s, p0/z, z31.h
+       fcvtlt  z0.d, p0/z, z0.s
+       fcvtlt  z31.d, p0/z, z0.s
+       fcvtlt  z0.d, p7/z, z0.s
+       fcvtlt  z0.d, p0/z, z31.s
+
+       fcvtnt  z0.h, p0/z, z0.s
+       fcvtnt  z31.h, p0/z, z0.s
+       fcvtnt  z0.h, p7/z, z0.s
+       fcvtnt  z0.h, p0/z, z31.s
+       fcvtnt  z0.s, p0/z, z0.d
+       fcvtnt  z31.s, p0/z, z0.d
+       fcvtnt  z0.s, p7/z, z0.d
+       fcvtnt  z0.s, p0/z, z31.d
+
+       fcvtx   z0.s, p0/z, z0.d
+       fcvtx   z31.s, p0/z, z0.d
+       fcvtx   z0.s, p7/z, z0.d
+       fcvtx   z0.s, p0/z, z31.d
+
+       fcvtxnt z0.s, p0/z, z0.d
+       fcvtxnt z31.s, p0/z, z0.d
+       fcvtxnt z0.s, p7/z, z0.d
+       fcvtxnt z0.s, p0/z, z31.d
+
+       fcvtzs  z0.h, p0/z, z0.h
+       fcvtzs  z31.h, p0/z, z0.h
+       fcvtzs  z0.h, p7/z, z0.h
+       fcvtzs  z0.h, p0/z, z31.h
+       fcvtzs  z0.s, p0/z, z0.h
+       fcvtzs  z31.s, p0/z, z0.h
+       fcvtzs  z0.s, p7/z, z0.h
+       fcvtzs  z0.s, p0/z, z31.h
+       fcvtzs  z0.d, p0/z, z0.h
+       fcvtzs  z31.d, p0/z, z0.h
+       fcvtzs  z0.d, p7/z, z0.h
+       fcvtzs  z0.d, p0/z, z31.h
+       fcvtzs  z0.s, p0/z, z0.s
+       fcvtzs  z31.s, p0/z, z0.s
+       fcvtzs  z0.s, p7/z, z0.s
+       fcvtzs  z0.s, p0/z, z31.s
+       fcvtzs  z0.d, p0/z, z0.s
+       fcvtzs  z31.d, p0/z, z0.s
+       fcvtzs  z0.d, p7/z, z0.s
+       fcvtzs  z0.d, p0/z, z31.s
+       fcvtzs  z0.s, p0/z, z0.d
+       fcvtzs  z31.s, p0/z, z0.d
+       fcvtzs  z0.s, p7/z, z0.d
+       fcvtzs  z0.s, p0/z, z31.d
+       fcvtzs  z0.d, p0/z, z0.d
+       fcvtzs  z31.d, p0/z, z0.d
+       fcvtzs  z0.d, p7/z, z0.d
+       fcvtzs  z0.d, p0/z, z31.d
+
+       fcvtzu  z0.h, p0/z, z0.h
+       fcvtzu  z31.h, p0/z, z0.h
+       fcvtzu  z0.h, p7/z, z0.h
+       fcvtzu  z0.h, p0/z, z31.h
+       fcvtzu  z0.s, p0/z, z0.h
+       fcvtzu  z31.s, p0/z, z0.h
+       fcvtzu  z0.s, p7/z, z0.h
+       fcvtzu  z0.s, p0/z, z31.h
+       fcvtzu  z0.d, p0/z, z0.h
+       fcvtzu  z31.d, p0/z, z0.h
+       fcvtzu  z0.d, p7/z, z0.h
+       fcvtzu  z0.d, p0/z, z31.h
+       fcvtzu  z0.s, p0/z, z0.s
+       fcvtzu  z31.s, p0/z, z0.s
+       fcvtzu  z0.s, p7/z, z0.s
+       fcvtzu  z0.s, p0/z, z31.s
+       fcvtzu  z0.d, p0/z, z0.s
+       fcvtzu  z31.d, p0/z, z0.s
+       fcvtzu  z0.d, p7/z, z0.s
+       fcvtzu  z0.d, p0/z, z31.s
+       fcvtzu  z0.s, p0/z, z0.d
+       fcvtzu  z31.s, p0/z, z0.d
+       fcvtzu  z0.s, p7/z, z0.d
+       fcvtzu  z0.s, p0/z, z31.d
+       fcvtzu  z0.d, p0/z, z0.d
+       fcvtzu  z31.d, p0/z, z0.d
+       fcvtzu  z0.d, p7/z, z0.d
+       fcvtzu  z0.d, p0/z, z31.d
+
+       firstp  x0, p0, p0.b
+       firstp  xzr, p0, p0.b
+       firstp  x0, p15, p0.b
+       firstp  x0, p0, p15.b
+       firstp  x0, p0, p0.h
+       firstp  xzr, p0, p0.h
+       firstp  x0, p15, p0.h
+       firstp  x0, p0, p15.h
+       firstp  x0, p0, p0.s
+       firstp  xzr, p0, p0.s
+       firstp  x0, p15, p0.s
+       firstp  x0, p0, p15.s
+       firstp  x0, p0, p0.d
+       firstp  xzr, p0, p0.d
+       firstp  x0, p15, p0.d
+       firstp  x0, p0, p15.d
+
+       flogb   z0.h, p0/z, z0.h
+       flogb   z31.h, p0/z, z0.h
+       flogb   z0.h, p7/z, z0.h
+       flogb   z0.h, p0/z, z31.h
+       flogb   z0.s, p0/z, z0.s
+       flogb   z31.s, p0/z, z0.s
+       flogb   z0.s, p7/z, z0.s
+       flogb   z0.s, p0/z, z31.s
+       flogb   z0.d, p0/z, z0.d
+       flogb   z31.d, p0/z, z0.d
+       flogb   z0.d, p7/z, z0.d
+       flogb   z0.d, p0/z, z31.d
+
+       fneg    z0.h, p0/z, z0.h
+       fneg    z31.h, p0/z, z0.h
+       fneg    z0.h, p7/z, z0.h
+       fneg    z0.h, p0/z, z31.h
+       fneg    z0.s, p0/z, z0.s
+       fneg    z31.s, p0/z, z0.s
+       fneg    z0.s, p7/z, z0.s
+       fneg    z0.s, p0/z, z31.s
+       fneg    z0.d, p0/z, z0.d
+       fneg    z31.d, p0/z, z0.d
+       fneg    z0.d, p7/z, z0.d
+       fneg    z0.d, p0/z, z31.d
+
+       frecpx  z0.h, p0/z, z0.h
+       frecpx  z31.h, p0/z, z0.h
+       frecpx  z0.h, p7/z, z0.h
+       frecpx  z0.h, p0/z, z31.h
+       frecpx  z0.s, p0/z, z0.s
+       frecpx  z31.s, p0/z, z0.s
+       frecpx  z0.s, p7/z, z0.s
+       frecpx  z0.s, p0/z, z31.s
+       frecpx  z0.d, p0/z, z0.d
+       frecpx  z31.d, p0/z, z0.d
+       frecpx  z0.d, p7/z, z0.d
+       frecpx  z0.d, p0/z, z31.d
+
+       frint32x z0.s, p0/m, z0.s
+       frint32x z31.s, p0/m, z0.s
+       frint32x z0.s, p7/m, z0.s
+       frint32x z0.s, p0/m, z31.s
+       frint32x z0.d, p0/m, z0.d
+       frint32x z31.d, p0/m, z0.d
+       frint32x z0.d, p7/m, z0.d
+       frint32x z0.d, p0/m, z31.d
+       frint32x z0.s, p0/z, z0.s
+       frint32x z31.s, p0/z, z0.s
+       frint32x z0.s, p7/z, z0.s
+       frint32x z0.s, p0/z, z31.s
+       frint32x z0.d, p0/z, z0.d
+       frint32x z31.d, p0/z, z0.d
+       frint32x z0.d, p7/z, z0.d
+       frint32x z0.d, p0/z, z31.d
+
+       frint32z z0.s, p0/m, z0.s
+       frint32z z31.s, p0/m, z0.s
+       frint32z z0.s, p7/m, z0.s
+       frint32z z0.s, p0/m, z31.s
+       frint32z z0.d, p0/m, z0.d
+       frint32z z31.d, p0/m, z0.d
+       frint32z z0.d, p7/m, z0.d
+       frint32z z0.d, p0/m, z31.d
+       frint32z z0.s, p0/z, z0.s
+       frint32z z31.s, p0/z, z0.s
+       frint32z z0.s, p7/z, z0.s
+       frint32z z0.s, p0/z, z31.s
+       frint32z z0.d, p0/z, z0.d
+       frint32z z31.d, p0/z, z0.d
+       frint32z z0.d, p7/z, z0.d
+       frint32z z0.d, p0/z, z31.d
+
+       frint64x z0.s, p0/m, z0.s
+       frint64x z31.s, p0/m, z0.s
+       frint64x z0.s, p7/m, z0.s
+       frint64x z0.s, p0/m, z31.s
+       frint64x z0.d, p0/m, z0.d
+       frint64x z31.d, p0/m, z0.d
+       frint64x z0.d, p7/m, z0.d
+       frint64x z0.d, p0/m, z31.d
+       frint64x z0.s, p0/z, z0.s
+       frint64x z31.s, p0/z, z0.s
+       frint64x z0.s, p7/z, z0.s
+       frint64x z0.s, p0/z, z31.s
+       frint64x z0.d, p0/z, z0.d
+       frint64x z31.d, p0/z, z0.d
+       frint64x z0.d, p7/z, z0.d
+       frint64x z0.d, p0/z, z31.d
+
+       frint64z z0.s, p0/m, z0.s
+       frint64z z31.s, p0/m, z0.s
+       frint64z z0.s, p7/m, z0.s
+       frint64z z0.s, p0/m, z31.s
+       frint64z z0.d, p0/m, z0.d
+       frint64z z31.d, p0/m, z0.d
+       frint64z z0.d, p7/m, z0.d
+       frint64z z0.d, p0/m, z31.d
+       frint64z z0.s, p0/z, z0.s
+       frint64z z31.s, p0/z, z0.s
+       frint64z z0.s, p7/z, z0.s
+       frint64z z0.s, p0/z, z31.s
+       frint64z z0.d, p0/z, z0.d
+       frint64z z31.d, p0/z, z0.d
+       frint64z z0.d, p7/z, z0.d
+       frint64z z0.d, p0/z, z31.d
+
+       frintx z0.h, p0/z, z0.h
+       frintx z31.h, p0/z, z0.h
+       frintx z0.h, p7/z, z0.h
+       frintx z0.h, p0/z, z31.h
+       frintx z0.s, p0/z, z0.s
+       frintx z31.s, p0/z, z0.s
+       frintx z0.s, p7/z, z0.s
+       frintx z0.s, p0/z, z31.s
+       frintx z0.d, p0/z, z0.d
+       frintx z31.d, p0/z, z0.d
+       frintx z0.d, p7/z, z0.d
+       frintx z0.d, p0/z, z31.d
+
+       frinti z0.h, p0/z, z0.h
+       frinti z31.h, p0/z, z0.h
+       frinti z0.h, p7/z, z0.h
+       frinti z0.h, p0/z, z31.h
+       frinti z0.s, p0/z, z0.s
+       frinti z31.s, p0/z, z0.s
+       frinti z0.s, p7/z, z0.s
+       frinti z0.s, p0/z, z31.s
+       frinti z0.d, p0/z, z0.d
+       frinti z31.d, p0/z, z0.d
+       frinti z0.d, p7/z, z0.d
+       frinti z0.d, p0/z, z31.d
+
+       frinta z0.h, p0/z, z0.h
+       frinta z31.h, p0/z, z0.h
+       frinta z0.h, p7/z, z0.h
+       frinta z0.h, p0/z, z31.h
+       frinta z0.s, p0/z, z0.s
+       frinta z31.s, p0/z, z0.s
+       frinta z0.s, p7/z, z0.s
+       frinta z0.s, p0/z, z31.s
+       frinta z0.d, p0/z, z0.d
+       frinta z31.d, p0/z, z0.d
+       frinta z0.d, p7/z, z0.d
+       frinta z0.d, p0/z, z31.d
+
+       frintn z0.h, p0/z, z0.h
+       frintn z31.h, p0/z, z0.h
+       frintn z0.h, p7/z, z0.h
+       frintn z0.h, p0/z, z31.h
+       frintn z0.s, p0/z, z0.s
+       frintn z31.s, p0/z, z0.s
+       frintn z0.s, p7/z, z0.s
+       frintn z0.s, p0/z, z31.s
+       frintn z0.d, p0/z, z0.d
+       frintn z31.d, p0/z, z0.d
+       frintn z0.d, p7/z, z0.d
+       frintn z0.d, p0/z, z31.d
+
+       frintz z0.h, p0/z, z0.h
+       frintz z31.h, p0/z, z0.h
+       frintz z0.h, p7/z, z0.h
+       frintz z0.h, p0/z, z31.h
+       frintz z0.s, p0/z, z0.s
+       frintz z31.s, p0/z, z0.s
+       frintz z0.s, p7/z, z0.s
+       frintz z0.s, p0/z, z31.s
+       frintz z0.d, p0/z, z0.d
+       frintz z31.d, p0/z, z0.d
+       frintz z0.d, p7/z, z0.d
+       frintz z0.d, p0/z, z31.d
+
+       frintm z0.h, p0/z, z0.h
+       frintm z31.h, p0/z, z0.h
+       frintm z0.h, p7/z, z0.h
+       frintm z0.h, p0/z, z31.h
+       frintm z0.s, p0/z, z0.s
+       frintm z31.s, p0/z, z0.s
+       frintm z0.s, p7/z, z0.s
+       frintm z0.s, p0/z, z31.s
+       frintm z0.d, p0/z, z0.d
+       frintm z31.d, p0/z, z0.d
+       frintm z0.d, p7/z, z0.d
+       frintm z0.d, p0/z, z31.d
+
+       frintp z0.h, p0/z, z0.h
+       frintp z31.h, p0/z, z0.h
+       frintp z0.h, p7/z, z0.h
+       frintp z0.h, p0/z, z31.h
+       frintp z0.s, p0/z, z0.s
+       frintp z31.s, p0/z, z0.s
+       frintp z0.s, p7/z, z0.s
+       frintp z0.s, p0/z, z31.s
+       frintp z0.d, p0/z, z0.d
+       frintp z31.d, p0/z, z0.d
+       frintp z0.d, p7/z, z0.d
+       frintp z0.d, p0/z, z31.d
+
+       fsqrt z0.h, p0/z, z0.h
+       fsqrt z31.h, p0/z, z0.h
+       fsqrt z0.h, p7/z, z0.h
+       fsqrt z0.h, p0/z, z31.h
+       fsqrt z0.s, p0/z, z0.s
+       fsqrt z31.s, p0/z, z0.s
+       fsqrt z0.s, p7/z, z0.s
+       fsqrt z0.s, p0/z, z31.s
+       fsqrt z0.d, p0/z, z0.d
+       fsqrt z31.d, p0/z, z0.d
+       fsqrt z0.d, p7/z, z0.d
+       fsqrt z0.d, p0/z, z31.d
+
+       lastp   x0, p0, p0.b
+       lastp   xzr, p0, p0.b
+       lastp   x0, p15, p0.b
+       lastp   x0, p0, p15.b
+       lastp   x0, p0, p0.h
+       lastp   xzr, p0, p0.h
+       lastp   x0, p15, p0.h
+       lastp   x0, p0, p15.h
+       lastp   x0, p0, p0.s
+       lastp   xzr, p0, p0.s
+       lastp   x0, p15, p0.s
+       lastp   x0, p0, p15.s
+       lastp   x0, p0, p0.d
+       lastp   xzr, p0, p0.d
+       lastp   x0, p15, p0.d
+       lastp   x0, p0, p15.d
+
+       neg     z0.b, p0/z, z0.b
+       neg     z31.b, p0/z, z0.b
+       neg     z0.b, p7/z, z0.b
+       neg     z0.b, p0/z, z31.b
+       neg     z0.h, p0/z, z0.h
+       neg     z31.h, p0/z, z0.h
+       neg     z0.h, p7/z, z0.h
+       neg     z0.h, p0/z, z31.h
+       neg     z0.s, p0/z, z0.s
+       neg     z31.s, p0/z, z0.s
+       neg     z0.s, p7/z, z0.s
+       neg     z0.s, p0/z, z31.s
+       neg     z0.d, p0/z, z0.d
+       neg     z31.d, p0/z, z0.d
+       neg     z0.d, p7/z, z0.d
+       neg     z0.d, p0/z, z31.d
+
+       not     z0.b, p0/z, z0.b
+       not     z31.b, p0/z, z0.b
+       not     z0.b, p7/z, z0.b
+       not     z0.b, p0/z, z31.b
+       not     z0.h, p0/z, z0.h
+       not     z31.h, p0/z, z0.h
+       not     z0.h, p7/z, z0.h
+       not     z0.h, p0/z, z31.h
+       not     z0.s, p0/z, z0.s
+       not     z31.s, p0/z, z0.s
+       not     z0.s, p7/z, z0.s
+       not     z0.s, p0/z, z31.s
+       not     z0.d, p0/z, z0.d
+       not     z31.d, p0/z, z0.d
+       not     z0.d, p7/z, z0.d
+       not     z0.d, p0/z, z31.d
+
+       rbit    z0.b, p0/z, z0.b
+       rbit    z31.b, p0/z, z0.b
+       rbit    z0.b, p7/z, z0.b
+       rbit    z0.b, p0/z, z31.b
+       rbit    z0.h, p0/z, z0.h
+       rbit    z31.h, p0/z, z0.h
+       rbit    z0.h, p7/z, z0.h
+       rbit    z0.h, p0/z, z31.h
+       rbit    z0.s, p0/z, z0.s
+       rbit    z31.s, p0/z, z0.s
+       rbit    z0.s, p7/z, z0.s
+       rbit    z0.s, p0/z, z31.s
+       rbit    z0.d, p0/z, z0.d
+       rbit    z31.d, p0/z, z0.d
+       rbit    z0.d, p7/z, z0.d
+       rbit    z0.d, p0/z, z31.d
+
+       revb    z0.h, p0/z, z0.h
+       revb    z31.h, p0/z, z0.h
+       revb    z0.h, p7/z, z0.h
+       revb    z0.h, p0/z, z31.h
+       revb    z0.s, p0/z, z0.s
+       revb    z31.s, p0/z, z0.s
+       revb    z0.s, p7/z, z0.s
+       revb    z0.s, p0/z, z31.s
+       revb    z0.d, p0/z, z0.d
+       revb    z31.d, p0/z, z0.d
+       revb    z0.d, p7/z, z0.d
+       revb    z0.d, p0/z, z31.d
+
+       revh    z0.s, p0/z, z0.s
+       revh    z31.s, p0/z, z0.s
+       revh    z0.s, p7/z, z0.s
+       revh    z0.s, p0/z, z31.s
+       revh    z0.d, p0/z, z0.d
+       revh    z31.d, p0/z, z0.d
+       revh    z0.d, p7/z, z0.d
+       revh    z0.d, p0/z, z31.d
+
+       revw    z0.d, p0/z, z0.d
+       revw    z31.d, p0/z, z0.d
+       revw    z0.d, p7/z, z0.d
+       revw    z0.d, p0/z, z31.d
+
+       revd    z0.q, p0/z, z0.q
+       revd    z31.q, p0/z, z0.q
+       revd    z0.q, p7/z, z0.q
+       revd    z0.q, p0/z, z31.q
+
+       scvtf z0.h, p0/z, z0.h
+       scvtf z31.h, p0/z, z0.h
+       scvtf z0.h, p7/z, z0.h
+       scvtf z0.h, p0/z, z31.h
+       scvtf z0.h, p0/z, z0.s
+       scvtf z31.h, p0/z, z0.s
+       scvtf z0.h, p7/z, z0.s
+       scvtf z0.h, p0/z, z31.s
+       scvtf z0.s, p0/z, z0.s
+       scvtf z31.s, p0/z, z0.s
+       scvtf z0.s, p7/z, z0.s
+       scvtf z0.s, p0/z, z31.s
+       scvtf z0.d, p0/z, z0.s
+       scvtf z31.d, p0/z, z0.s
+       scvtf z0.d, p7/z, z0.s
+       scvtf z0.d, p0/z, z31.s
+       scvtf z0.h, p0/z, z0.d
+       scvtf z31.h, p0/z, z0.d
+       scvtf z0.h, p7/z, z0.d
+       scvtf z0.h, p0/z, z31.d
+       scvtf z0.s, p0/z, z0.d
+       scvtf z31.s, p0/z, z0.d
+       scvtf z0.s, p7/z, z0.d
+       scvtf z0.s, p0/z, z31.d
+       scvtf z0.d, p0/z, z0.d
+       scvtf z31.d, p0/z, z0.d
+       scvtf z0.d, p7/z, z0.d
+       scvtf z0.d, p0/z, z31.d
+
+       sqabs   z0.b, p0/z, z0.b
+       sqabs   z31.b, p0/z, z0.b
+       sqabs   z0.b, p7/z, z0.b
+       sqabs   z0.b, p0/z, z31.b
+       sqabs   z0.h, p0/z, z0.h
+       sqabs   z31.h, p0/z, z0.h
+       sqabs   z0.h, p7/z, z0.h
+       sqabs   z0.h, p0/z, z31.h
+       sqabs   z0.s, p0/z, z0.s
+       sqabs   z31.s, p0/z, z0.s
+       sqabs   z0.s, p7/z, z0.s
+       sqabs   z0.s, p0/z, z31.s
+       sqabs   z0.d, p0/z, z0.d
+       sqabs   z31.d, p0/z, z0.d
+       sqabs   z0.d, p7/z, z0.d
+       sqabs   z0.d, p0/z, z31.d
+
+       sqneg   z0.b, p0/z, z0.b
+       sqneg   z31.b, p0/z, z0.b
+       sqneg   z0.b, p7/z, z0.b
+       sqneg   z0.b, p0/z, z31.b
+       sqneg   z0.h, p0/z, z0.h
+       sqneg   z31.h, p0/z, z0.h
+       sqneg   z0.h, p7/z, z0.h
+       sqneg   z0.h, p0/z, z31.h
+       sqneg   z0.s, p0/z, z0.s
+       sqneg   z31.s, p0/z, z0.s
+       sqneg   z0.s, p7/z, z0.s
+       sqneg   z0.s, p0/z, z31.s
+       sqneg   z0.d, p0/z, z0.d
+       sqneg   z31.d, p0/z, z0.d
+       sqneg   z0.d, p7/z, z0.d
+       sqneg   z0.d, p0/z, z31.d
+
+       sxtb    z0.h, p0/z, z0.h
+       sxtb    z31.h, p0/z, z0.h
+       sxtb    z0.h, p7/z, z0.h
+       sxtb    z0.h, p0/z, z31.h
+       sxtb    z0.s, p0/z, z0.s
+       sxtb    z31.s, p0/z, z0.s
+       sxtb    z0.s, p7/z, z0.s
+       sxtb    z0.s, p0/z, z31.s
+       sxtb    z0.d, p0/z, z0.d
+       sxtb    z31.d, p0/z, z0.d
+       sxtb    z0.d, p7/z, z0.d
+       sxtb    z0.d, p0/z, z31.d
+
+       sxth    z0.s, p0/z, z0.s
+       sxth    z31.s, p0/z, z0.s
+       sxth    z0.s, p7/z, z0.s
+       sxth    z0.s, p0/z, z31.s
+       sxth    z0.d, p0/z, z0.d
+       sxth    z31.d, p0/z, z0.d
+       sxth    z0.d, p7/z, z0.d
+       sxth    z0.d, p0/z, z31.d
+
+       sxtw    z0.d, p0/z, z0.d
+       sxtw    z31.d, p0/z, z0.d
+       sxtw    z0.d, p7/z, z0.d
+       sxtw    z0.d, p0/z, z31.d
+
+       ucvtf z0.h, p0/z, z0.h
+       ucvtf z31.h, p0/z, z0.h
+       ucvtf z0.h, p7/z, z0.h
+       ucvtf z0.h, p0/z, z31.h
+       ucvtf z0.h, p0/z, z0.s
+       ucvtf z31.h, p0/z, z0.s
+       ucvtf z0.h, p7/z, z0.s
+       ucvtf z0.h, p0/z, z31.s
+       ucvtf z0.s, p0/z, z0.s
+       ucvtf z31.s, p0/z, z0.s
+       ucvtf z0.s, p7/z, z0.s
+       ucvtf z0.s, p0/z, z31.s
+       ucvtf z0.d, p0/z, z0.s
+       ucvtf z31.d, p0/z, z0.s
+       ucvtf z0.d, p7/z, z0.s
+       ucvtf z0.d, p0/z, z31.s
+       ucvtf z0.h, p0/z, z0.d
+       ucvtf z31.h, p0/z, z0.d
+       ucvtf z0.h, p7/z, z0.d
+       ucvtf z0.h, p0/z, z31.d
+       ucvtf z0.s, p0/z, z0.d
+       ucvtf z31.s, p0/z, z0.d
+       ucvtf z0.s, p7/z, z0.d
+       ucvtf z0.s, p0/z, z31.d
+       ucvtf z0.d, p0/z, z0.d
+       ucvtf z31.d, p0/z, z0.d
+       ucvtf z0.d, p7/z, z0.d
+       ucvtf z0.d, p0/z, z31.d
+
+       urecpe z0.s, p0/z, z0.s
+       urecpe z31.s, p0/z, z0.s
+       urecpe z0.s, p7/z, z0.s
+       urecpe z0.s, p0/z, z31.s
+
+       ursqrte z0.s, p0/z, z0.s
+       ursqrte z31.s, p0/z, z0.s
+       ursqrte z0.s, p7/z, z0.s
+       ursqrte z0.s, p0/z, z31.s
+
+       uxtb    z0.h, p0/z, z0.h
+       uxtb    z31.h, p0/z, z0.h
+       uxtb    z0.h, p7/z, z0.h
+       uxtb    z0.h, p0/z, z31.h
+       uxtb    z0.s, p0/z, z0.s
+       uxtb    z31.s, p0/z, z0.s
+       uxtb    z0.s, p7/z, z0.s
+       uxtb    z0.s, p0/z, z31.s
+       uxtb    z0.d, p0/z, z0.d
+       uxtb    z31.d, p0/z, z0.d
+       uxtb    z0.d, p7/z, z0.d
+       uxtb    z0.d, p0/z, z31.d
+
+       uxth    z0.s, p0/z, z0.s
+       uxth    z31.s, p0/z, z0.s
+       uxth    z0.s, p7/z, z0.s
+       uxth    z0.s, p0/z, z31.s
+       uxth    z0.d, p0/z, z0.d
+       uxth    z31.d, p0/z, z0.d
+       uxth    z0.d, p7/z, z0.d
+       uxth    z0.d, p0/z, z31.d
+
+       uxtw    z0.d, p0/z, z0.d
+       uxtw    z31.d, p0/z, z0.d
+       uxtw    z0.d, p7/z, z0.d
+       uxtw    z0.d, p0/z, z31.d
+
index 7c1163dba57e716f4019761ecabbf9e92e95b483..dab6eacb5f8718eacd3c73991c8669e79589b1d0 100644 (file)
@@ -282,6 +282,10 @@ enum aarch64_feature_bit {
   AARCH64_FEATURE_SVE_B16B16,
   /* SME non-widening BFloat16 instructions.  */
   AARCH64_FEATURE_SME_B16B16,
+  /* SVE2.2.  */
+  AARCH64_FEATURE_SVE2p2,
+  /* SME2.2.  */
+  AARCH64_FEATURE_SME2p2,
   /* Armv9.1-A processors.  */
   AARCH64_FEATURE_V9_1A,
   /* Armv9.2-A processors.  */
@@ -307,6 +311,8 @@ enum aarch64_feature_bit {
   AARCH64_FEATURE_FP8DOT2_SVE,
   /* +sme-f16f16 or +sme-f8f16  */
   AARCH64_FEATURE_SME_F16F16_F8F16,
+  /* +sve or +sme2p2 */
+  AARCH64_FEATURE_SVE_SME2p2,
   /* +sve2 or +sme2 */
   AARCH64_FEATURE_SVE2_SME2,
   /* +sve2p1 or +sme */
@@ -315,6 +321,8 @@ enum aarch64_feature_bit {
   AARCH64_FEATURE_SVE2p1_SME2,
   /* +sve2p1 or +sme2p1 */
   AARCH64_FEATURE_SVE2p1_SME2p1,
+  /* +sve2p2 or +sme2p2 */
+  AARCH64_FEATURE_SVE2p2_SME2p2,
   AARCH64_NUM_FEATURES
 };
 
@@ -1192,13 +1200,16 @@ enum aarch64_insn_class
   sve_pred_zm,
   sve_shift_pred,
   sve_shift_unpred,
+  sve_size_bh,
   sve_size_bhs,
   sve_size_bhsd,
   sve_size_hsd,
   sve_size_hsd2,
+  sve_size_hsd3,
   sve_size_sd,
-  sve_size_bh,
   sve_size_sd2,
+  sve_size_sd3,
+  sve_size_sd4,
   sve_size_13,
   sve_shift_tsz_hsd,
   sve_shift_tsz_bhsd,
index 00ac4ae774c315138c7a2af2c57bea86d8252833..a9d0aeb1946431787f6eb220dfe36c8e089f2c83 100644 (file)
@@ -2279,11 +2279,24 @@ aarch64_encode_variant_using_iclass (struct aarch64_inst *inst)
       insert_field (FLD_SVE_sz2, &inst->value, aarch64_get_variant (inst), 0);
       break;
 
+    case sve_size_sd3:
+      insert_field (FLD_SVE_sz3, &inst->value, aarch64_get_variant (inst), 0);
+      break;
+
+    case sve_size_sd4:
+      insert_field (FLD_SVE_sz4, &inst->value, aarch64_get_variant (inst), 0);
+      break;
+
     case sve_size_hsd2:
       insert_field (FLD_SVE_size, &inst->value,
                    aarch64_get_variant (inst) + 1, 0);
       break;
 
+    case sve_size_hsd3:
+      insert_field (FLD_len, &inst->value,
+                   aarch64_get_variant (inst) + 1, 0);
+      break;
+
     case sve_size_tsz_bhs:
       insert_fields (&inst->value,
                     (1 << aarch64_get_variant (inst)),
index 02e9852772b3979d74173f4272ae7ceb43abaad6..1460a92682458352d98ab4bec3435c8d8b826545 100644 (file)
@@ -15381,38 +15381,82 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x0000101xxxxxxxxxxxxx
-                                                                 sxtb.  */
-                                                              return 2054;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000000101xxxxxxxxxxxxx
+                                                                     sxtb.  */
+                                                                  return 3733;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx010000101xxxxxxxxxxxxx
+                                                                     sxtb.  */
+                                                                  return 2054;
+                                                                }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1000101xxxxxxxxxxxxx
-                                                                 cls.  */
-                                                              return 1432;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001000101xxxxxxxxxxxxx
+                                                                     cls.  */
+                                                                  return 3663;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx011000101xxxxxxxxxxxxx
+                                                                     cls.  */
+                                                                  return 1432;
+                                                                }
                                                             }
                                                         }
                                                       else
                                                         {
                                                           if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x0100101xxxxxxxxxxxxx
-                                                                 sxtw.  */
-                                                              return 2056;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000100101xxxxxxxxxxxxx
+                                                                     sxtw.  */
+                                                                  return 3735;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx010100101xxxxxxxxxxxxx
+                                                                     sxtw.  */
+                                                                  return 2056;
+                                                                }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1100101xxxxxxxxxxxxx
-                                                                 fabs.  */
-                                                              return 1494;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001100101xxxxxxxxxxxxx
+                                                                     fabs.  */
+                                                                  return 3669;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx011100101xxxxxxxxxxxxx
+                                                                     fabs.  */
+                                                                  return 1494;
+                                                                }
                                                             }
                                                         }
                                                     }
@@ -15422,38 +15466,82 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x0010101xxxxxxxxxxxxx
-                                                                 sxth.  */
-                                                              return 2055;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000010101xxxxxxxxxxxxx
+                                                                     sxth.  */
+                                                                  return 3734;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx010010101xxxxxxxxxxxxx
+                                                                     sxth.  */
+                                                                  return 2055;
+                                                                }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1010101xxxxxxxxxxxxx
-                                                                 cnt.  */
-                                                              return 1461;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001010101xxxxxxxxxxxxx
+                                                                     cnt.  */
+                                                                  return 3666;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx011010101xxxxxxxxxxxxx
+                                                                     cnt.  */
+                                                                  return 1461;
+                                                                }
                                                             }
                                                         }
                                                       else
                                                         {
                                                           if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x0110101xxxxxxxxxxxxx
-                                                                 abs.  */
-                                                              return 1390;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000110101xxxxxxxxxxxxx
+                                                                     abs.  */
+                                                                  return 3660;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx010110101xxxxxxxxxxxxx
+                                                                     abs.  */
+                                                                  return 1390;
+                                                                }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1110101xxxxxxxxxxxxx
-                                                                 not.  */
-                                                              return 1853;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001110101xxxxxxxxxxxxx
+                                                                     not.  */
+                                                                  return 3718;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx011110101xxxxxxxxxxxxx
+                                                                     not.  */
+                                                                  return 1853;
+                                                                }
                                                             }
                                                         }
                                                     }
@@ -15466,38 +15554,82 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x0001101xxxxxxxxxxxxx
-                                                                 uxtb.  */
-                                                              return 2117;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000001101xxxxxxxxxxxxx
+                                                                     uxtb.  */
+                                                                  return 3745;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx010001101xxxxxxxxxxxxx
+                                                                     uxtb.  */
+                                                                  return 2117;
+                                                                }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1001101xxxxxxxxxxxxx
-                                                                 clz.  */
-                                                              return 1433;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001001101xxxxxxxxxxxxx
+                                                                     clz.  */
+                                                                  return 3664;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx011001101xxxxxxxxxxxxx
+                                                                     clz.  */
+                                                                  return 1433;
+                                                                }
                                                             }
                                                         }
                                                       else
                                                         {
                                                           if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x0101101xxxxxxxxxxxxx
-                                                                 uxtw.  */
-                                                              return 2119;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000101101xxxxxxxxxxxxx
+                                                                     uxtw.  */
+                                                                  return 3747;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx010101101xxxxxxxxxxxxx
+                                                                     uxtw.  */
+                                                                  return 2119;
+                                                                }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1101101xxxxxxxxxxxxx
-                                                                 fneg.  */
-                                                              return 1571;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001101101xxxxxxxxxxxxx
+                                                                     fneg.  */
+                                                                  return 3698;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx011101101xxxxxxxxxxxxx
+                                                                     fneg.  */
+                                                                  return 1571;
+                                                                }
                                                             }
                                                         }
                                                     }
@@ -15506,30 +15638,63 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                       if (((word >> 18) & 0x1) == 0)
                                                         {
                                                           if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000011101xxxxxxxxxxxxx
+                                                                     uxth.  */
+                                                                  return 3746;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx010011101xxxxxxxxxxxxx
+                                                                     uxth.  */
+                                                                  return 2118;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001011101xxxxxxxxxxxxx
+                                                                     cnot.  */
+                                                                  return 3665;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx011011101xxxxxxxxxxxxx
+                                                                     cnot.  */
+                                                                  return 1460;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx0x0011101xxxxxxxxxxxxx
-                                                                 uxth.  */
-                                                              return 2118;
+                                                                 000001x0xx00x111101xxxxxxxxxxxxx
+                                                                 neg.  */
+                                                              return 3717;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx0x1011101xxxxxxxxxxxxx
-                                                                 cnot.  */
-                                                              return 1460;
+                                                                 000001x0xx01x111101xxxxxxxxxxxxx
+                                                                 neg.  */
+                                                              return 1850;
                                                             }
                                                         }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx0xx111101xxxxxxxxxxxxx
-                                                             neg.  */
-                                                          return 1850;
-                                                        }
                                                     }
                                                 }
                                             }
@@ -15712,11 +15877,33 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         010001x0xx0xxx10101xxxxxxxxxxxxx
-                                                         sminp.  */
-                                                      return 2244;
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx0x0010101xxxxxxxxxxxxx
+                                                                 urecpe.  */
+                                                              return 3743;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx0x1010101xxxxxxxxxxxxx
+                                                                 sqabs.  */
+                                                              return 3731;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xx110101xxxxxxxxxxxxx
+                                                             sminp.  */
+                                                          return 2244;
+                                                        }
                                                     }
                                                 }
                                               else
@@ -15775,11 +15962,33 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         010001x0xx0xxx11101xxxxxxxxxxxxx
-                                                         uminp.  */
-                                                      return 2369;
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx0x0011101xxxxxxxxxxxxx
+                                                                 ursqrte.  */
+                                                              return 3744;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx0x1011101xxxxxxxxxxxxx
+                                                                 sqneg.  */
+                                                              return 3732;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xx111101xxxxxxxxxxxxx
+                                                             uminp.  */
+                                                          return 2369;
+                                                        }
                                                     }
                                                 }
                                             }
@@ -17466,9 +17675,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             }
                           else
                             {
-                              if (((word >> 13) & 0x1) == 0)
+                              if (((word >> 30) & 0x1) == 0)
                                 {
-                                  if (((word >> 30) & 0x1) == 0)
+                                  if (((word >> 13) & 0x1) == 0)
                                     {
                                       if (((word >> 14) & 0x1) == 0)
                                         {
@@ -17555,121 +17764,11 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     }
                                   else
                                     {
-                                      if (((word >> 31) & 0x1) == 0)
+                                      if (((word >> 14) & 0x1) == 0)
                                         {
-                                          if (((word >> 17) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 18) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 20) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         011001x0xx00x00x1x0xxxxxxxxxxxxx
-                                                         fcadd.  */
-                                                      return 1502;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         011001x0xx01x00x1x0xxxxxxxxxxxxx
-                                                         faddp.  */
-                                                      return 2170;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 16) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         011001x0xx0xx1001x0xxxxxxxxxxxxx
-                                                         fmaxnmp.  */
-                                                      return 2178;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         011001x0xx0xx1011x0xxxxxxxxxxxxx
-                                                         fminnmp.  */
-                                                      return 2180;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 16) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     011001x0xx0xxx101x0xxxxxxxxxxxxx
-                                                     fmaxp.  */
-                                                  return 2179;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     011001x0xx0xxx111x0xxxxxxxxxxxxx
-                                                     fminp.  */
-                                                  return 2181;
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     111001x0000xxxxx1x0xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1967;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     111001x0100xxxxx1x0xxxxxxxxxxxxx
-                                                     st1h.  */
-                                                  return 1986;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     111001x0010xxxxx1x0xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1971;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     111001x0110xxxxx1x0xxxxxxxxxxxxx
-                                                     st1h.  */
-                                                  return 1992;
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 14) & 0x1) == 0)
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
-                                        {
-                                          if (((word >> 31) & 0x1) == 0)
-                                            {
-                                              if (((word >> 4) & 0x1) == 0)
+                                              if (((word >> 4) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
@@ -17773,171 +17872,6 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             }
                                         }
                                       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)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 011001x0xx0x0000101xxxxxxxxxxxxx
-                                                                 faddqv.  */
-                                                              return 3484;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 011001x0xx0x1000101xxxxxxxxxxxxx
-                                                                 fcvtnt.  */
-                                                              return 2173;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             011001x0xx0xx100101xxxxxxxxxxxxx
-                                                             fmaxnmqv.  */
-                                                          return 3485;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 18) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 22) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 23) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     011001x0000xx010101xxxxxxxxxxxxx
-                                                                     fcvtxnt.  */
-                                                                  return 2176;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     011001x0100xx010101xxxxxxxxxxxxx
-                                                                     bfcvtnt.  */
-                                                                  return 3164;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 011001x0x10xx010101xxxxxxxxxxxxx
-                                                                 fcvtnt.  */
-                                                              return 2174;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             011001x0xx0xx110101xxxxxxxxxxxxx
-                                                             fmaxqv.  */
-                                                          return 3486;
-                                                        }
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 17) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 18) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             011001x0xx0xx001101xxxxxxxxxxxxx
-                                                             fcvtlt.  */
-                                                          return 2171;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             011001x0xx0xx101101xxxxxxxxxxxxx
-                                                             fminnmqv.  */
-                                                          return 3487;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 18) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             011001x0xx0xx011101xxxxxxxxxxxxx
-                                                             fcvtlt.  */
-                                                          return 2172;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             011001x0xx0xx111101xxxxxxxxxxxxx
-                                                             fminqv.  */
-                                                          return 3488;
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 22) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         111001x0000xxxxx101xxxxxxxxxxxxx
-                                                         st1b.  */
-                                                      return 1968;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         111001x0100xxxxx101xxxxxxxxxxxxx
-                                                         st1h.  */
-                                                      return 1987;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         111001x0010xxxxx101xxxxxxxxxxxxx
-                                                         st1b.  */
-                                                      return 1975;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         111001x0110xxxxx101xxxxxxxxxxxxx
-                                                         st1h.  */
-                                                      return 1996;
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
                                         {
                                           if (((word >> 31) & 0x1) == 0)
                                             {
@@ -18011,17 +17945,875 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 }
                                             }
                                         }
-                                      else
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      if (((word >> 17) & 0x1) == 0)
                                         {
-                                          if (((word >> 20) & 0x1) == 0)
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 18) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0x000xxxx111xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1973;
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0xx00000x100xxxxxxxxxxxxx
+                                                                 fcadd.  */
+                                                              return 1502;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0xx01000x100xxxxxxxxxxxxx
+                                                                 faddp.  */
+                                                              return 2170;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0xx0x1000100xxxxxxxxxxxxx
+                                                                 frintn.  */
+                                                              return 3711;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0xx0x1001100xxxxxxxxxxxxx
+                                                                 frinta.  */
+                                                              return 3710;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0xx000110xxxxxxxxxxxxx
+                                                             frintm.  */
+                                                          return 3713;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0xx001110xxxxxxxxxxxxx
+                                                             frintx.  */
+                                                          return 3708;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0x01001x0xxxxxxxxxxxxx
+                                                             fmaxnmp.  */
+                                                          return 2178;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0x00x11001x0xxxxxxxxxxxxx
+                                                                 frint32z.  */
+                                                              return 3703;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 14) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0x10x1100100xxxxxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 3727;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0x10x1100110xxxxxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 3724;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0x01011x0xxxxxxxxxxxxx
+                                                             fminnmp.  */
+                                                          return 2180;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0000x11011x0xxxxxxxxxxxxx
+                                                                     frint64z.  */
+                                                                  return 3707;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0100x11011x0xxxxxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 3726;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 14) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0010x1101100xxxxxxxxxxxxx
+                                                                         scvtf.  */
+                                                                      return 3725;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0110x1101100xxxxxxxxxxxxx
+                                                                         scvtf.  */
+                                                                      return 3729;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0010x1101110xxxxxxxxxxxxx
+                                                                         scvtf.  */
+                                                                      return 3728;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0110x1101110xxxxxxxxxxxxx
+                                                                         scvtf.  */
+                                                                      return 3730;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 16) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 18) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 14) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0xx000000101xxxxxxxxxxxxx
+                                                                     fcvtnt.  */
+                                                                  return 3678;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0xx010000101xxxxxxxxxxxxx
+                                                                     faddqv.  */
+                                                                  return 3484;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0xx001000101xxxxxxxxxxxxx
+                                                                     fcvtnt.  */
+                                                                  return 2173;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0xx011000101xxxxxxxxxxxxx
+                                                                     frintp.  */
+                                                                  return 3714;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0xx000111xxxxxxxxxxxxx
+                                                             frintz.  */
+                                                          return 3712;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0x01001x1xxxxxxxxxxxxx
+                                                             fmaxnmqv.  */
+                                                          return 3485;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0x00x11001x1xxxxxxxxxxxxx
+                                                                 frint32x.  */
+                                                              return 3701;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 14) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0x10x1100101xxxxxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 3739;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0x10x1100111xxxxxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 3736;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 18) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 14) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0xx0x0001101xxxxxxxxxxxxx
+                                                                 fcvtlt.  */
+                                                              return 3676;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0xx0x1001101xxxxxxxxxxxxx
+                                                                 fcvtlt.  */
+                                                              return 2171;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0xx001111xxxxxxxxxxxxx
+                                                             frinti.  */
+                                                          return 3709;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0x01011x1xxxxxxxxxxxxx
+                                                             fminnmqv.  */
+                                                          return 3487;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0000x11011x1xxxxxxxxxxxxx
+                                                                     frint64x.  */
+                                                                  return 3705;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0100x11011x1xxxxxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 3738;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 14) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0010x1101101xxxxxxxxxxxxx
+                                                                         ucvtf.  */
+                                                                      return 3737;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0110x1101101xxxxxxxxxxxxx
+                                                                         ucvtf.  */
+                                                                      return 3741;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0010x1101111xxxxxxxxxxxxx
+                                                                         ucvtf.  */
+                                                                      return 3740;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0110x1101111xxxxxxxxxxxxx
+                                                                         ucvtf.  */
+                                                                      return 3742;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 16) & 0x1) == 0)
+                                            {
+                                              if (((word >> 18) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 13) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 14) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0x00xx010100xxxxxxxxxxxxx
+                                                                 fcvt.  */
+                                                              return 3672;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0x10xx010100xxxxxxxxxxxxx
+                                                                 fcvt.  */
+                                                              return 3674;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0000xx010110xxxxxxxxxxxxx
+                                                                     fcvtx.  */
+                                                                  return 3680;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0100xx010110xxxxxxxxxxxxx
+                                                                     bfcvt.  */
+                                                                  return 3661;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0x10xx010110xxxxxxxxxxxxx
+                                                                 fcvt.  */
+                                                              return 3675;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 14) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0000x0010101xxxxxxxxxxxxx
+                                                                         fcvtxnt.  */
+                                                                      return 3681;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0100x0010101xxxxxxxxxxxxx
+                                                                         bfcvtnt.  */
+                                                                      return 3662;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0x10x0010101xxxxxxxxxxxxx
+                                                                     fcvtnt.  */
+                                                                  return 3679;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 22) & 0x1) == 0)
+                                                                    {
+                                                                      if (((word >> 23) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x000001010101xxxxxxxxxxxxx
+                                                                             fcvtxnt.  */
+                                                                          return 2176;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x010001010101xxxxxxxxxxxxx
+                                                                             bfcvtnt.  */
+                                                                          return 3164;
+                                                                        }
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0x1001010101xxxxxxxxxxxxx
+                                                                         fcvtnt.  */
+                                                                      return 2174;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 22) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0x0011010101xxxxxxxxxxxxx
+                                                                         fcvt.  */
+                                                                      return 3670;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0x1011010101xxxxxxxxxxxxx
+                                                                         fcvt.  */
+                                                                      return 3671;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0xx010111xxxxxxxxxxxxx
+                                                             fcvt.  */
+                                                          return 3673;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 19) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 13) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0x01101x0xxxxxxxxxxxxx
+                                                             fmaxp.  */
+                                                          return 2179;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0x01101x1xxxxxxxxxxxxx
+                                                             fmaxqv.  */
+                                                          return 3486;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0x00x11101xxxxxxxxxxxxxxx
+                                                             flogb.  */
+                                                          return 3697;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 13) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 14) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0x10x1110100xxxxxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 3687;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0x10x1110110xxxxxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 3682;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 14) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0x10x1110101xxxxxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 3694;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0x10x1110111xxxxxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 3689;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0xx011100xxxxxxxxxxxxx
+                                                             frecpx.  */
+                                                          return 3699;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0xx0x0111100xxxxxxxxxxxxx
+                                                                 fminp.  */
+                                                              return 2181;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0x00x1111100xxxxxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 3685;
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0010x1111100xxxxxxxxxxxxx
+                                                                         fcvtzs.  */
+                                                                      return 3683;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0110x1111100xxxxxxxxxxxxx
+                                                                         fcvtzs.  */
+                                                                      return 3686;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x00x0xxx11110xxxxxxxxxxxxx
+                                                             fcvtzs.  */
+                                                          return 3684;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x01x0xxx11110xxxxxxxxxxxxx
+                                                             fcvtzs.  */
+                                                          return 3688;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0xx0x0011101xxxxxxxxxxxxx
+                                                                 fcvtlt.  */
+                                                              return 3677;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0xx001011101xxxxxxxxxxxxx
+                                                                     fcvtlt.  */
+                                                                  return 2172;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0xx011011101xxxxxxxxxxxxx
+                                                                     fsqrt.  */
+                                                                  return 3715;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0xx0x0111101xxxxxxxxxxxxx
+                                                                 fminqv.  */
+                                                              return 3488;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0x00x1111101xxxxxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 3692;
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0010x1111101xxxxxxxxxxxxx
+                                                                         fcvtzu.  */
+                                                                      return 3690;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x0110x1111101xxxxxxxxxxxxx
+                                                                         fcvtzu.  */
+                                                                      return 3693;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x00x0xxx11111xxxxxxxxxxxxx
+                                                             fcvtzu.  */
+                                                          return 3691;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x01x0xxx11111xxxxxxxxxxxxx
+                                                             fcvtzu.  */
+                                                          return 3695;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0000xxxxx1x0xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1967;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0100xxxxx1x0xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1986;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0010xxxxx1x0xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1971;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0110xxxxx1x0xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1992;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 14) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0000xxxxx101xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1968;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0100xxxxx101xxxxxxxxxxxxx
+                                                         st1h.  */
+                                                      return 1987;
+                                                    }
                                                 }
                                               else
                                                 {
@@ -18029,58 +18821,91 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x11001x00100xxxx111xxxxxxxxxxxxx
+                                                         111001x0010xxxxx101xxxxxxxxxxxxx
                                                          st1b.  */
-                                                      return 1976;
+                                                      return 1975;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x11001x01100xxxx111xxxxxxxxxxxxx
+                                                         111001x0110xxxxx101xxxxxxxxxxxxx
                                                          st1h.  */
-                                                      return 1997;
+                                                      return 1996;
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 20) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x11001x00001xxxx111xxxxxxxxxxxxx
-                                                         stnt1b.  */
-                                                      return 2037;
+                                                         111001x0x000xxxx111xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1973;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x01001xxxx111xxxxxxxxxxxxx
-                                                         stnt1h.  */
-                                                      return 2041;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x00100xxxx111xxxxxxxxxxxxx
+                                                             st1b.  */
+                                                          return 1976;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x01100xxxx111xxxxxxxxxxxxx
+                                                             st1h.  */
+                                                          return 1997;
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x00101xxxx111xxxxxxxxxxxxx
-                                                         st3b.  */
-                                                      return 2021;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x00001xxxx111xxxxxxxxxxxxx
+                                                             stnt1b.  */
+                                                          return 2037;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x01001xxxx111xxxxxxxxxxxxx
+                                                             stnt1h.  */
+                                                          return 2041;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x01101xxxx111xxxxxxxxxxxxx
-                                                         st3h.  */
-                                                      return 2025;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x00101xxxx111xxxxxxxxxxxxx
+                                                             st3b.  */
+                                                          return 2021;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x01101xxxx111xxxxxxxxxxxxx
+                                                             st3h.  */
+                                                          return 2025;
+                                                        }
                                                     }
                                                 }
                                             }
@@ -19610,11 +20435,33 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x1xx1x0001100xxxxxxxxxxxxx
-                                                                 compact.  */
-                                                              return 1467;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x10x100001100xxxxxxxxxxxxx
+                                                                         compact.  */
+                                                                      return 3667;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x11x100001100xxxxxxxxxxxxx
+                                                                         compact.  */
+                                                                      return 1467;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1xx110001100xxxxxxxxxxxxx
+                                                                     expand.  */
+                                                                  return 3668;
+                                                                }
                                                             }
                                                           else
                                                             {
@@ -19934,51 +20781,106 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x1xx100xx0101xxxxxxxxxxxxx
-                                                             lasta.  */
-                                                          return 1613;
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1xx100000101xxxxxxxxxxxxx
+                                                                     lasta.  */
+                                                                  return 1613;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1xx110000101xxxxxxxxxxxxx
+                                                                     clasta.  */
+                                                                  return 1428;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1000101xxxxxxxxxxxxx
+                                                                 cpy.  */
+                                                              return 1469;
+                                                            }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x1xx110xx0101xxxxxxxxxxxxx
-                                                             clasta.  */
-                                                          return 1428;
+                                                             000001x1xx1xx100101xxxxxxxxxxxxx
+                                                             revb.  */
+                                                          return 3720;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x1xx1x1xx0101xxxxxxxxxxxxx
-                                                         cpy.  */
-                                                      return 1469;
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1x0x10101xxxxxxxxxxxxx
+                                                             revw.  */
+                                                          return 3722;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1x1x10101xxxxxxxxxxxxx
+                                                             revd.  */
+                                                          return 3723;
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 20) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x1xx10xxx1101xxxxxxxxxxxxx
-                                                         lastb.  */
-                                                      return 1615;
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx10x001101xxxxxxxxxxxxx
+                                                                 lastb.  */
+                                                              return 1615;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx11x001101xxxxxxxxxxxxx
+                                                                 clastb.  */
+                                                              return 1431;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xx101101xxxxxxxxxxxxx
+                                                             revh.  */
+                                                          return 3721;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         000001x1xx11xxx1101xxxxxxxxxxxxx
-                                                         clastb.  */
-                                                      return 1431;
+                                                         000001x1xx1xxx11101xxxxxxxxxxxxx
+                                                         rbit.  */
+                                                      return 3719;
                                                     }
                                                 }
                                             }
@@ -24432,11 +25334,11 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   if (((word >> 19) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 17) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 20) & 0x1) == 0)
+                                                              if (((word >> 17) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
@@ -24448,77 +25350,55 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     011001x1xx010000101xxxxxxxxxxxxx
-                                                                     scvtf.  */
-                                                                  return 1914;
+                                                                     011001x1xx000010101xxxxxxxxxxxxx
+                                                                     frintm.  */
+                                                                  return 1581;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 20) & 0x1) == 0)
+                                                              if (((word >> 22) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     011001x1xx000100101xxxxxxxxxxxxx
-                                                                     frinta.  */
-                                                                  return 1579;
+                                                                     011001x1x00100x0101xxxxxxxxxxxxx
+                                                                     frint32z.  */
+                                                                  return 3702;
                                                                 }
                                                               else
                                                                 {
-                                                                  if (((word >> 22) & 0x1) == 0)
+                                                                  if (((word >> 17) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         011001x1x0010100101xxxxxxxxxxxxx
+                                                                         011001x1x1010000101xxxxxxxxxxxxx
                                                                          scvtf.  */
-                                                                      return 1913;
+                                                                      return 1914;
                                                                     }
                                                                   else
                                                                     {
-                                                                      if (((word >> 23) & 0x1) == 0)
-                                                                        {
-                                                                          /* 33222222222211111111110000000000
-                                                                             10987654321098765432109876543210
-                                                                             011001x101010100101xxxxxxxxxxxxx
-                                                                             scvtf.  */
-                                                                          return 1912;
-                                                                        }
-                                                                      else
-                                                                        {
-                                                                          /* 33222222222211111111110000000000
-                                                                             10987654321098765432109876543210
-                                                                             011001x111010100101xxxxxxxxxxxxx
-                                                                             scvtf.  */
-                                                                          return 1916;
-                                                                        }
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x1x1010010101xxxxxxxxxxxxx
+                                                                         scvtf.  */
+                                                                      return 1911;
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 20) & 0x1) == 0)
+                                                              if (((word >> 17) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     011001x1xx000010101xxxxxxxxxxxxx
-                                                                     frintm.  */
-                                                                  return 1581;
+                                                                     011001x1xx000100101xxxxxxxxxxxxx
+                                                                     frinta.  */
+                                                                  return 1579;
                                                                 }
                                                               else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     011001x1xx010010101xxxxxxxxxxxxx
-                                                                     scvtf.  */
-                                                                  return 1911;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
@@ -24526,23 +25406,67 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      frintx.  */
                                                                   return 1584;
                                                                 }
-                                                              else
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
                                                                 {
                                                                   if (((word >> 23) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         011001x10x010110101xxxxxxxxxxxxx
-                                                                         scvtf.  */
-                                                                      return 1915;
+                                                                         011001x1000101x0101xxxxxxxxxxxxx
+                                                                         frint64z.  */
+                                                                      return 3706;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         011001x11x010110101xxxxxxxxxxxxx
+                                                                         011001x1100101x0101xxxxxxxxxxxxx
                                                                          scvtf.  */
-                                                                      return 1917;
+                                                                      return 1913;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 17) & 0x1) == 0)
+                                                                    {
+                                                                      if (((word >> 23) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x101010100101xxxxxxxxxxxxx
+                                                                             scvtf.  */
+                                                                          return 1912;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x111010100101xxxxxxxxxxxxx
+                                                                             scvtf.  */
+                                                                          return 1916;
+                                                                        }
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      if (((word >> 23) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x101010110101xxxxxxxxxxxxx
+                                                                             scvtf.  */
+                                                                          return 1915;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x111010110101xxxxxxxxxxxxx
+                                                                             scvtf.  */
+                                                                          return 1917;
+                                                                        }
                                                                     }
                                                                 }
                                                             }
@@ -24702,13 +25626,13 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 17) & 0x1) == 0)
+                                                  if (((word >> 18) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 20) & 0x1) == 0)
+                                                              if (((word >> 17) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
@@ -24720,12 +25644,45 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     011001x1xx010001101xxxxxxxxxxxxx
-                                                                     ucvtf.  */
-                                                                  return 2067;
+                                                                     011001x1xx000011101xxxxxxxxxxxxx
+                                                                     frintz.  */
+                                                                  return 1585;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1x00100x1101xxxxxxxxxxxxx
+                                                                     frint32x.  */
+                                                                  return 3700;
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 17) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x1x1010001101xxxxxxxxxxxxx
+                                                                         ucvtf.  */
+                                                                      return 2067;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x1x1010011101xxxxxxxxxxxxx
+                                                                         ucvtf.  */
+                                                                      return 2064;
+                                                                    }
                                                                 }
                                                             }
-                                                          else
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 17) & 0x1) == 0)
                                                             {
                                                               if (((word >> 20) & 0x1) == 0)
                                                                 {
@@ -24755,40 +25712,106 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                   return 1535;
                                                                 }
                                                             }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          else
                                                             {
-                                                              if (((word >> 22) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     011001x1x00x0101101xxxxxxxxxxxxx
-                                                                     ucvtf.  */
-                                                                  return 2066;
+                                                                     011001x1xx001011101xxxxxxxxxxxxx
+                                                                     fcvt.  */
+                                                                  return 1523;
                                                                 }
                                                               else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx011011101xxxxxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 1531;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x1xx0001x1101xxxxxxxxxxxxx
+                                                                 frinti.  */
+                                                              return 1580;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
                                                                 {
                                                                   if (((word >> 23) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         011001x1010x0101101xxxxxxxxxxxxx
-                                                                         ucvtf.  */
-                                                                      return 2065;
+                                                                         011001x1000101x1101xxxxxxxxxxxxx
+                                                                         frint64x.  */
+                                                                      return 3704;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         011001x1110x0101101xxxxxxxxxxxxx
+                                                                         011001x1100101x1101xxxxxxxxxxxxx
                                                                          ucvtf.  */
-                                                                      return 2069;
+                                                                      return 2066;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 17) & 0x1) == 0)
+                                                                    {
+                                                                      if (((word >> 23) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x101010101101xxxxxxxxxxxxx
+                                                                             ucvtf.  */
+                                                                          return 2065;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x111010101101xxxxxxxxxxxxx
+                                                                             ucvtf.  */
+                                                                          return 2069;
+                                                                        }
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      if (((word >> 23) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x101010111101xxxxxxxxxxxxx
+                                                                             ucvtf.  */
+                                                                          return 2068;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x111010111101xxxxxxxxxxxxx
+                                                                             ucvtf.  */
+                                                                          return 2070;
+                                                                        }
                                                                     }
                                                                 }
                                                             }
-                                                          else
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 17) & 0x1) == 0)
                                                             {
                                                               if (((word >> 20) & 0x1) == 0)
                                                                 {
@@ -24829,83 +25852,6 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     }
                                                                 }
                                                             }
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 18) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 20) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     011001x1xx000011101xxxxxxxxxxxxx
-                                                                     frintz.  */
-                                                                  return 1585;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     011001x1xx010011101xxxxxxxxxxxxx
-                                                                     ucvtf.  */
-                                                                  return 2064;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 20) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     011001x1xx001011101xxxxxxxxxxxxx
-                                                                     fcvt.  */
-                                                                  return 1523;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     011001x1xx011011101xxxxxxxxxxxxx
-                                                                     fcvtzu.  */
-                                                                  return 1531;
-                                                                }
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 20) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     011001x1xx000111101xxxxxxxxxxxxx
-                                                                     frinti.  */
-                                                                  return 1580;
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         011001x10x010111101xxxxxxxxxxxxx
-                                                                         ucvtf.  */
-                                                                      return 2068;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         011001x11x010111101xxxxxxxxxxxxx
-                                                                         ucvtf.  */
-                                                                      return 2070;
-                                                                    }
-                                                                }
-                                                            }
                                                           else
                                                             {
                                                               if (((word >> 23) & 0x1) == 0)
@@ -25158,109 +26104,131 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 10) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 11) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 001001x1xx1xxx1010xx000xxxxxxxxx
-                                                                 sqdecp.  */
-                                                              return 1944;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 001001x1xx1xxx1010xx100xxxxxxxxx
-                                                                 sqdecp.  */
-                                                              return 1946;
-                                                            }
-                                                        }
-                                                      else
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             001001x1xx1xxx1010xxx10xxxxxxxxx
-                                                             sqdecp.  */
-                                                          return 1945;
+                                                             001001x1xx1x0x1010xxxx0xxxxxxxxx
+                                                             lastp.  */
+                                                          return 3716;
                                                         }
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 10) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 11) & 0x1) == 0)
+                                                      else
                                                         {
-                                                          if (((word >> 17) & 0x1) == 0)
+                                                          if (((word >> 10) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 18) & 0x1) == 0)
+                                                              if (((word >> 11) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     001001x1xx1xx00110xx000xxxxxxxxx
-                                                                     uqincp.  */
-                                                                  return 2107;
+                                                                     001001x1xx1x1x1010xx000xxxxxxxxx
+                                                                     sqdecp.  */
+                                                                  return 1944;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     001001x1xx1xx10110xx000xxxxxxxxx
-                                                                     decp.  */
-                                                                  return 1478;
+                                                                     001001x1xx1x1x1010xx100xxxxxxxxx
+                                                                     sqdecp.  */
+                                                                  return 1946;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 001001x1xx1xxx1110xx000xxxxxxxxx
-                                                                 uqdecp.  */
-                                                              return 2093;
+                                                                 001001x1xx1x1x1010xxx10xxxxxxxxx
+                                                                 sqdecp.  */
+                                                              return 1945;
                                                             }
                                                         }
-                                                      else
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 17) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 18) & 0x1) == 0)
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1x000110xxxx0xxxxxxxxx
+                                                                 firstp.  */
+                                                              return 3696;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 10) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     001001x1xx1xx00110xx100xxxxxxxxx
-                                                                     uqincp.  */
-                                                                  return 2108;
+                                                                  if (((word >> 11) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         001001x1xx1x100110xx000xxxxxxxxx
+                                                                         uqincp.  */
+                                                                      return 2107;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         001001x1xx1x100110xx100xxxxxxxxx
+                                                                         uqincp.  */
+                                                                      return 2108;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     001001x1xx1xx10110xx100xxxxxxxxx
-                                                                     decp.  */
-                                                                  return 1479;
+                                                                     001001x1xx1x100110xxx10xxxxxxxxx
+                                                                     uqincp.  */
+                                                                  return 2109;
                                                                 }
                                                             }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 11) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xx10110xx0x0xxxxxxxxx
+                                                                 decp.  */
+                                                              return 1478;
+                                                            }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 001001x1xx1xxx1110xx100xxxxxxxxx
-                                                                 uqdecp.  */
-                                                              return 2094;
+                                                                 001001x1xx1xx10110xx1x0xxxxxxxxx
+                                                                 decp.  */
+                                                              return 1479;
                                                             }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 17) & 0x1) == 0)
+                                                      if (((word >> 10) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             001001x1xx1xxx0110xxx10xxxxxxxxx
-                                                             uqincp.  */
-                                                          return 2109;
+                                                          if (((word >> 11) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxx1110xx000xxxxxxxxx
+                                                                 uqdecp.  */
+                                                              return 2093;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxx1110xx100xxxxxxxxx
+                                                                 uqdecp.  */
+                                                              return 2094;
+                                                            }
                                                         }
                                                       else
                                                         {
@@ -35399,6 +36367,10 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
     case 3399: return NULL;            /* bfmax --> NULL.  */
     case 3012: value = 3566; break;    /* bfscale --> fscale.  */
     case 3566: return NULL;            /* fscale --> NULL.  */
+    case 3015: value = 3748; break;    /* bfmul --> fmul.  */
+    case 3748: return NULL;            /* fmul --> NULL.  */
+    case 3016: value = 3749; break;    /* bfmul --> fmul.  */
+    case 3749: return NULL;            /* fmul --> NULL.  */
     case 2575: value = 3401; break;    /* fmax --> bfmax.  */
     case 3401: return NULL;            /* bfmax --> NULL.  */
     case 3014: value = 3568; break;    /* bfscale --> fscale.  */
@@ -35415,6 +36387,10 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
     case 3411: return NULL;            /* bfminnm --> NULL.  */
     case 2587: value = 3413; break;    /* fminnm --> bfminnm.  */
     case 3413: return NULL;            /* bfminnm --> NULL.  */
+    case 3017: value = 3750; break;    /* bfmul --> fmul.  */
+    case 3750: return NULL;            /* fmul --> NULL.  */
+    case 3018: value = 3751; break;    /* bfmul --> fmul.  */
+    case 3751: return NULL;            /* fmul --> NULL.  */
     case 12: value = 19; break;        /* add --> addg.  */
     case 19: value = 3305; break;      /* addg --> smax.  */
     case 3305: value = 3306; break;    /* smax --> umax.  */
index 2aab6306c5c7f14dbaaf6c29b2074a90edaa7f0a..75ff8717c648b86d10f661f7ff3d21cf283bd589 100644 (file)
@@ -3603,6 +3603,14 @@ aarch64_decode_variant_using_iclass (aarch64_inst *inst)
       variant = extract_field (FLD_SVE_sz2, inst->value, 0);
       break;
 
+    case sve_size_sd3:
+      variant = extract_field (FLD_SVE_sz3, inst->value, 0);
+      break;
+
+    case sve_size_sd4:
+      variant = extract_field (FLD_SVE_sz4, inst->value, 0);
+      break;
+
     case sve_size_hsd2:
       i = extract_field (FLD_SVE_size, inst->value, 0);
       if (i < 1)
@@ -3610,6 +3618,13 @@ aarch64_decode_variant_using_iclass (aarch64_inst *inst)
       variant = i - 1;
       break;
 
+    case sve_size_hsd3:
+      i = extract_field (FLD_len, inst->value, 0);
+      if (i < 1)
+       return false;
+      variant = i - 1;
+      break;
+
     case sve_size_13:
       /* Ignore low bit of this field since that is set in the opcode for
         instructions of this iclass.  */
index 60facbfb05617c5a89295b7f1cf34509ff2554e3..ba08050427490aa7e2d1066a8fe3c1a97e9948b6 100644 (file)
@@ -329,6 +329,8 @@ const aarch64_field fields[] =
     { 17,  2 }, /* SVE_size: 2-bit element size, bits [18,17].  */
     { 22,  1 }, /* SVE_sz: 1-bit element size select.  */
     { 30,  1 }, /* SVE_sz2: 1-bit element size select.  */
+    { 17,  1 }, /* SVE_sz3: 1-bit element size select.  */
+    { 14,  1 }, /* SVE_sz4: 1-bit element size select.  */
     { 16,  4 }, /* SVE_tsz: triangular size select.  */
     { 22,  2 }, /* SVE_tszh: triangular size select high, bits [23,22].  */
     {  8,  2 }, /* SVE_tszl_8: triangular size select low, bits [9,8].  */
index dc8787a7f019aa3191f47edda716b16f6d2ef623..d46c56dbf0a51daf52a39c8abd27b7b7b0055f00 100644 (file)
@@ -133,6 +133,8 @@ enum aarch64_field_kind
   FLD_SVE_size,
   FLD_SVE_sz,
   FLD_SVE_sz2,
+  FLD_SVE_sz3,
+  FLD_SVE_sz4,
   FLD_SVE_tsz,
   FLD_SVE_tszh,
   FLD_SVE_tszl_8,
index d573ecc561e41311b48aafb5406750d0ce75ca72..bf91efec43d47875ba452d0e2203f067e6682fe3 100644 (file)
 {                                                       \
   QLF3(S_D,P_Z,S_D),                                    \
 }
+#define OP_SVE_DZH                                      \
+{                                                       \
+  QLF3(S_D,P_Z,S_H),                                    \
+}
+#define OP_SVE_DZS                                      \
+{                                                       \
+  QLF3(S_D,P_Z,S_S),                                    \
+}
 #define OP_SVE_DZU                                      \
 {                                                       \
   QLF3(S_D,P_Z,NIL),                                    \
 {                                                       \
   QLF3(S_H,NIL,NIL),                                    \
 }
+#define OP_SVE_HZD                                      \
+{                                                       \
+  QLF3(S_H,P_Z,S_D),                                    \
+}
+#define OP_SVE_HZH                                      \
+{                                                       \
+  QLF3(S_H,P_Z,S_H),                                    \
+}
+#define OP_SVE_HZS                                      \
+{                                                       \
+  QLF3(S_H,P_Z,S_S),                                    \
+}
 #define OP_SVE_HZU                                      \
 {                                                       \
   QLF3(S_H,P_Z,NIL),                                    \
 {                                                       \
   QLF3(S_Q,NIL,NIL),                                    \
 }
+#define OP_SVE_QZQ                                      \
+{                                                       \
+  QLF3(S_Q,P_Z,S_Q),                                    \
+}
 #define OP_SVE_QZU                                      \
 {                                                       \
   QLF3(S_Q,P_Z,NIL),                                    \
 {                                                       \
   QLF3(S_S,NIL,NIL),                                    \
 }
+#define OP_SVE_SZD                                      \
+{                                                       \
+  QLF3(S_S,P_Z,S_D),                                    \
+}
+#define OP_SVE_SZH                                      \
+{                                                       \
+  QLF3(S_S,P_Z,S_H),                                    \
+}
 #define OP_SVE_SZS                                      \
 {                                                       \
   QLF3(S_S,P_Z,S_S),                                    \
   QLF4(S_S,NIL,S_S,S_S),                                \
   QLF4(S_D,NIL,S_D,S_D),                                \
 }
+#define OP_SVE_VUV_BH                                   \
+{                                                       \
+  QLF3(S_B,NIL,S_B),                                    \
+  QLF3(S_H,NIL,S_H),                                    \
+}
 #define OP_SVE_VUV_BHSD                                 \
 {                                                       \
   QLF3(S_B,NIL,S_B),                                    \
   QLF4(S_S,X,X,NIL),                                    \
   QLF4(S_D,X,X,NIL),                                    \
 }
+#define OP_SVE_VZV_BHSD                                 \
+{                                                       \
+  QLF3(S_B,P_Z,S_B),                                    \
+  QLF3(S_H,P_Z,S_H),                                    \
+  QLF3(S_S,P_Z,S_S),                                    \
+  QLF3(S_D,P_Z,S_D),                                    \
+}
 #define OP_SVE_VZVD_BHS                                 \
 {                                                       \
   QLF4(S_B,P_Z,S_B,S_D),                                \
@@ -2942,6 +2986,12 @@ static const aarch64_feature_set aarch64_feature_sve2p1_sme2 =
   AARCH64_FEATURES (2, SVE2p1_SME2, SVE);
 static const aarch64_feature_set aarch64_feature_sve2p1_sme2p1 =
   AARCH64_FEATURES (2, SVE2p1_SME2p1, SVE);
+static const aarch64_feature_set aarch64_feature_sme2p2 =
+  AARCH64_FEATURES (2, SME2p2, SME);
+static const aarch64_feature_set aarch64_feature_sve_sme2p2 =
+  AARCH64_FEATURES (2, SVE_SME2p2, SVE);
+static const aarch64_feature_set aarch64_feature_sve2p2_sme2p2 =
+  AARCH64_FEATURES (2, SVE2p2_SME2p2, SVE);
 
 #define CORE           &aarch64_feature_v8
 #define FP             &aarch64_feature_fp
@@ -3046,6 +3096,9 @@ static const aarch64_feature_set aarch64_feature_sve2p1_sme2p1 =
 #define SVE2p1_SME     &aarch64_feature_sve2p1_sme
 #define SVE2p1_SME2    &aarch64_feature_sve2p1_sme2
 #define SVE2p1_SME2p1  &aarch64_feature_sve2p1_sme2p1
+#define SME2p2         &aarch64_feature_sme2p2
+#define SVE_SME2p2     &aarch64_feature_sve_sme2p2
+#define SVE2p2_SME2p2  &aarch64_feature_sve2p2_sme2p2
 
 #define CORE_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS) \
   { NAME, OPCODE, MASK, CLASS, OP, CORE, OPS, QUALS, FLAGS, 0, 0, NULL }
@@ -3320,6 +3373,15 @@ static const aarch64_feature_set aarch64_feature_sve2p1_sme2p1 =
 #define SVE2p1_SME2p1_INSNC(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,CONSTRAINTS,TIED) \
   { NAME, OPCODE, MASK, CLASS, OP, SVE2p1_SME2p1, OPS, QUALS, \
     F_STRICT | FLAGS, CONSTRAINTS, TIED, NULL }
+#define SVE_SME2p2_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \
+  { NAME, OPCODE, MASK, CLASS, OP, SVE_SME2p2, OPS, QUALS, \
+    FLAGS | F_STRICT, 0, TIED, NULL }
+#define SVE2p2_SME2p2_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,CONSTRAINTS,TIED) \
+  { NAME, OPCODE, MASK, CLASS, 0, SVE2p2_SME2p2, OPS, QUALS, \
+    F_STRICT | FLAGS, CONSTRAINTS, TIED, NULL }
+#define SME2p2_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,TIED) \
+  { NAME, OPCODE, MASK, CLASS, 0, SME2p2, OPS, QUALS, \
+    F_STRICT | FLAGS, 0, TIED, NULL }
 
 #define MOPS_CPY_OP1_OP2_PME_INSN(NAME, OPCODE, MASK, FLAGS, CONSTRAINTS) \
   MOPS_INSN (NAME, OPCODE, MASK, 0, \
@@ -4940,7 +5002,7 @@ const struct aarch64_opcode aarch64_opcode_table[] =
   _SVE_INSN ("cnth", 0x0460e000, 0xfff0fc00, sve_misc, 0, OP2 (Rd, SVE_PATTERN_SCALED), OP_SVE_XU, F_OPD1_OPT | F_DEFAULT(31), 0),
   _SVE_INSN ("cntp", 0x25208000, 0xff3fc200, sve_size_bhsd, 0, OP3 (Rd, SVE_Pg4_10, SVE_Pn), OP_SVE_XUV_BHSD, 0, 0),
   _SVE_INSN ("cntw", 0x04a0e000, 0xfff0fc00, sve_misc, 0, OP2 (Rd, SVE_PATTERN_SCALED), OP_SVE_XU, F_OPD1_OPT | F_DEFAULT(31), 0),
-  _SVE_INSN ("compact", 0x05a18000, 0xffbfe000, sve_size_sd, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VUV_SD, 0, 0),
+  SVE_SME2p2_INSN ("compact", 0x05a18000, 0xffbfe000, sve_size_sd, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VUV_SD, 0, 0),
   _SVE_INSNC ("cpy", 0x05208000, 0xff3fe000, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Vn), OP_SVE_VMV_BHSD, F_HAS_ALIAS, C_SCAN_MOVPRFX, 0),
   _SVE_INSNC ("cpy", 0x0528a000, 0xff3fe000, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Pg3, Rn_SP), OP_SVE_VMR_BHSD, F_HAS_ALIAS, C_SCAN_MOVPRFX, 0),
   _SVE_INSNC ("cpy", 0x05100000, 0xff308000, sve_cpy, 0, OP3 (SVE_Zd, SVE_Pg4_16, SVE_ASIMM), OP_SVE_VPU_BHSD, F_HAS_ALIAS, C_SCAN_MOVPRFX, 0),
@@ -7233,6 +7295,102 @@ const struct aarch64_opcode aarch64_opcode_table[] =
   SME_F8F32_INSNC ("fvdotb", 0xc1d00800, 0xfff09830, sme_misc, OP3 (SME_ZA_array_off3_0, SME_Znx2, SME_Zm_INDEX2_3), OP_SVE_VVV_S_B, F_OD (4) | F_VG_REQ, 0),
   SME_F8F32_INSNC ("fvdott", 0xc1d00810, 0xfff09830, sme_misc, OP3 (SME_ZA_array_off3_0, SME_Znx2, SME_Zm_INDEX2_3), OP_SVE_VVV_S_B, F_OD (4) | F_VG_REQ, 0),
 
+  /* SVE2p2 / SME2p2 instructions.  */
+  SVE2p2_SME2p2_INSN ("abs", 0x0406a000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("bfcvt", 0x649ac000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("bfcvtnt", 0x6482a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("cls", 0x0408a000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("clz", 0x0409a000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("cnot", 0x040ba000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("cnt", 0x040aa000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("compact", 0x05218000, 0xffbfe000, sve_size_bh, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VUV_BH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("expand", 0x05318000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VUV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fabs", 0x040ca000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvt", 0x649aa000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvt", 0x64daa000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvt", 0x649a8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvt", 0x64dae000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvt", 0x64da8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvt", 0x64dac000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtlt", 0x6481a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtlt", 0x64c3a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtnt", 0x6480a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtnt", 0x64c2a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtx", 0x641ac000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtxnt", 0x6402a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzs", 0x645ec000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzs", 0x645f8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzs", 0x645fc000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzs", 0x649f8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzs", 0x64df8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzs", 0x64de8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzs", 0x64dfc000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzu", 0x645ee000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzu", 0x645fa000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzu", 0x645fe000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzu", 0x649fa000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzu", 0x64dfa000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzu", 0x64dea000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fcvtzu", 0x64dfe000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("firstp", 0x25218000, 0xff3fc200, sve_size_bhsd, OP3 (Rd, SVE_Pg4_10, SVE_Pn), OP_SVE_XUV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("flogb", 0x641e8000, 0xffff8000, sve_size_hsd3, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fneg", 0x040da000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frecpx", 0x641b8000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frint32x", 0x6511a000, 0xfffde000, sve_size_sd3, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_SD, 0, C_SCAN_MOVPRFX, 0),
+  SVE2p2_SME2p2_INSN ("frint32x", 0x641ca000, 0xffffa000, sve_size_sd4, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frint32z", 0x6510a000, 0xfffde000, sve_size_sd3, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_SD, 0, C_SCAN_MOVPRFX, 0),
+  SVE2p2_SME2p2_INSN ("frint32z", 0x641c8000, 0xffffa000, sve_size_sd4, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frint64x", 0x6515a000, 0xfffde000, sve_size_sd3, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_SD, 0, C_SCAN_MOVPRFX, 0),
+  SVE2p2_SME2p2_INSN ("frint64x", 0x641da000, 0xffffa000, sve_size_sd4, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frint64z", 0x6514a000, 0xfffde000, sve_size_sd3, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_SD, 0, C_SCAN_MOVPRFX, 0),
+  SVE2p2_SME2p2_INSN ("frint64z", 0x641d8000, 0xffffa000, sve_size_sd4, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frintx", 0x6419c000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frinti", 0x6419e000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frinta", 0x64198000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frintn", 0x64188000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frintz", 0x6418e000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frintm", 0x6418c000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("frintp", 0x6418a000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("fsqrt", 0x641ba000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("lastp", 0x25228000, 0xff3fc200, sve_size_bhsd, OP3 (Rd, SVE_Pg4_10, SVE_Pn), OP_SVE_XUV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("neg", 0x0407a000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("not", 0x040ea000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("rbit", 0x0527a000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("revb", 0x0524a000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("revh", 0x05a5a000, 0xffbfe000, sve_size_sd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("revw", 0x05e6a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("revd", 0x052ea000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_QZQ, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("scvtf", 0x645cc000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("scvtf", 0x645d8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("scvtf", 0x649d8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("scvtf", 0x64dc8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("scvtf", 0x645dc000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("scvtf", 0x64dd8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("scvtf", 0x64ddc000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("sqabs", 0x440aa000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("sqneg", 0x440ba000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("sxtb", 0x0400a000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("sxth", 0x0482a000, 0xffbfe000, sve_size_sd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("sxtw", 0x04c4a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("ucvtf", 0x645ce000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZH, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("ucvtf", 0x645da000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("ucvtf", 0x649da000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("ucvtf", 0x64dca000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("ucvtf", 0x645de000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("ucvtf", 0x64dda000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("ucvtf", 0x64dde000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("urecpe", 0x4482a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("ursqrte", 0x4483a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("uxtb", 0x0401a000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("uxth", 0x0483a000, 0xffbfe000, sve_size_sd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0),
+  SVE2p2_SME2p2_INSN ("uxtw", 0x04c5a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0),
+
+  /* SME2p2 instructions.  */
+  SME2p2_INSN ("fmul", 0xc120e800, 0xff21fc21, sme_size_22_hsd, OP3 (SME_Zdnx2, SME_Znx2, SME_Zm_17), OP_SVE_VVV_HSD, 0, 0),
+  SME2p2_INSN ("fmul", 0xc121e800, 0xff21fc63, sme_size_22_hsd, OP3 (SME_Zdnx4, SME_Znx4, SME_Zm_17), OP_SVE_VVV_HSD, 0, 0),
+  SME2p2_INSN ("fmul", 0xc120e400, 0xff21fc21, sme_size_22_hsd, OP3 (SME_Zdnx2, SME_Znx2, SME_Zmx2), OP_SVE_VVV_HSD, 0, 0),
+  SME2p2_INSN ("fmul", 0xc121e400, 0xff21fc63, sme_size_22_hsd, OP3 (SME_Zdnx4, SME_Znx4, SME_Zmx4), OP_SVE_VVV_HSD, 0, 0),
+
   {0, 0, 0, 0, 0, 0, {}, {}, 0, 0, 0, NULL},
 };