[binutils-gdb] aarch64: Add support for FEAT_SVE2p2 and FEAT_SME2p2

Alice Carlotti acarlotti@sourceware.org
Tue Jul 8 20:16:20 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e68a412e16b45fea9562f8a604a56ee01014916f

commit e68a412e16b45fea9562f8a604a56ee01014916f
Author: Alice Carlotti <alice.carlotti@arm.com>
Date:   Tue Jun 3 20:35:34 2025 +0100

    aarch64: Add support for FEAT_SVE2p2 and FEAT_SME2p2

Diff:
---
 gas/config/tc-aarch64.c                      |    5 +
 gas/doc/c-aarch64.texi                       |    4 +
 gas/testsuite/gas/aarch64/illegal-bfloat16.l |    8 +-
 gas/testsuite/gas/aarch64/illegal-sve2.l     |   47 +-
 gas/testsuite/gas/aarch64/sme2p2.d           |   57 +
 gas/testsuite/gas/aarch64/sme2p2.s           |   50 +
 gas/testsuite/gas/aarch64/sve2p2.d           |  694 ++++++++
 gas/testsuite/gas/aarch64/sve2p2.s           |  738 +++++++++
 include/opcode/aarch64.h                     |   13 +-
 opcodes/aarch64-asm.c                        |   13 +
 opcodes/aarch64-dis-2.c                      | 2250 ++++++++++++++++++--------
 opcodes/aarch64-dis.c                        |   15 +
 opcodes/aarch64-opc.c                        |    2 +
 opcodes/aarch64-opc.h                        |    2 +
 opcodes/aarch64-tbl.h                        |  160 +-
 15 files changed, 3375 insertions(+), 683 deletions(-)

diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index 1d10de97506..29a81d17112 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -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
diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi
index d7e9c95111d..acfa00378c1 100644
--- a/gas/doc/c-aarch64.texi
+++ b/gas/doc/c-aarch64.texi
@@ -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
diff --git a/gas/testsuite/gas/aarch64/illegal-bfloat16.l b/gas/testsuite/gas/aarch64/illegal-bfloat16.l
index e513c3cc64c..6bce84eb4a6 100644
--- a/gas/testsuite/gas/aarch64/illegal-bfloat16.l
+++ b/gas/testsuite/gas/aarch64/illegal-bfloat16.l
@@ -10,15 +10,11 @@
 [^ :]+:[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
diff --git a/gas/testsuite/gas/aarch64/illegal-sve2.l b/gas/testsuite/gas/aarch64/illegal-sve2.l
index b5e166259bd..ca13c4423c0 100644
--- a/gas/testsuite/gas/aarch64/illegal-sve2.l
+++ b/gas/testsuite/gas/aarch64/illegal-sve2.l
@@ -280,18 +280,14 @@
 [^ :]+:[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'
@@ -299,27 +295,21 @@
 [^ :]+:[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'
@@ -328,9 +318,7 @@
 [^ :]+:[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
@@ -343,12 +331,7 @@
 [^ :]+:[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'
@@ -1302,13 +1285,7 @@
 [^ :]+:[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'
@@ -1555,13 +1532,7 @@
 [^ :]+:[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
index 00000000000..5bcac530b05
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2p2.d
@@ -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
index 00000000000..2c9773310d4
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2p2.s
@@ -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
index 00000000000..f401cb4fc30
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sve2p2.d
@@ -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
index 00000000000..a0a01759b3b
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sve2p2.s
@@ -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
+
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
index 7c1163dba57..dab6eacb5f8 100644
--- a/include/opcode/aarch64.h
+++ b/include/opcode/aarch64.h
@@ -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,
diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c
index 00ac4ae774c..a9d0aeb1946 100644
--- a/opcodes/aarch64-asm.c
+++ b/opcodes/aarch64-asm.c
@@ -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)),
diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c
index 02e9852772b..1460a926824 100644
--- a/opcodes/aarch64-dis-2.c
+++ b/opcodes/aarch64-dis-2.c
@@ -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 366[...]

[diff truncated at 100000 bytes]


More information about the Binutils-cvs mailing list