From: Alice Carlotti Date: Tue, 3 Jun 2025 19:35:34 +0000 (+0100) Subject: aarch64: Add support for FEAT_SVE2p2 and FEAT_SME2p2 X-Git-Tag: binutils-2_45~133 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e68a412e16b45fea9562f8a604a56ee01014916f;p=thirdparty%2Fbinutils-gdb.git aarch64: Add support for FEAT_SVE2p2 and FEAT_SME2p2 --- 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 3665; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x0xx011011101xxxxxxxxxxxxx + cnot. */ + return 1460; + } + } + } + else + { + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x0011101xxxxxxxxxxxxx - uxth. */ - return 2118; + 000001x0xx00x111101xxxxxxxxxxxxx + neg. */ + return 3717; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x0xx0x1011101xxxxxxxxxxxxx - cnot. */ - return 1460; + 000001x0xx01x111101xxxxxxxxxxxxx + neg. */ + return 1850; } } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x0xx0xx111101xxxxxxxxxxxxx - neg. */ - return 1850; - } } } } @@ -15712,11 +15877,33 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0xx0xxx10101xxxxxxxxxxxxx - sminp. */ - return 2244; + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0x0010101xxxxxxxxxxxxx + urecpe. */ + return 3743; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0x1010101xxxxxxxxxxxxx + sqabs. */ + return 3731; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xx110101xxxxxxxxxxxxx + sminp. */ + return 2244; + } } } else @@ -15775,11 +15962,33 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 010001x0xx0xxx11101xxxxxxxxxxxxx - uminp. */ - return 2369; + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0x0011101xxxxxxxxxxxxx + ursqrte. */ + return 3744; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0x1011101xxxxxxxxxxxxx + sqneg. */ + return 3732; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 010001x0xx0xx111101xxxxxxxxxxxxx + uminp. */ + return 2369; + } } } } @@ -17466,9 +17675,9 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 13) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { if (((word >> 14) & 0x1) == 0) { @@ -17555,121 +17764,11 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 31) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx00x00x1x0xxxxxxxxxxxxx - fcadd. */ - return 1502; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx01x00x1x0xxxxxxxxxxxxx - faddp. */ - return 2170; - } - } - else - { - if (((word >> 16) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xx1001x0xxxxxxxxxxxxx - fmaxnmp. */ - return 2178; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xx1011x0xxxxxxxxxxxxx - fminnmp. */ - return 2180; - } - } - } - else - { - if (((word >> 16) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xxx101x0xxxxxxxxxxxxx - fmaxp. */ - return 2179; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xxx111x0xxxxxxxxxxxxx - fminp. */ - return 2181; - } - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0000xxxxx1x0xxxxxxxxxxxxx - st1b. */ - return 1967; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0100xxxxx1x0xxxxxxxxxxxxx - st1h. */ - return 1986; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0010xxxxx1x0xxxxxxxxxxxxx - st1b. */ - return 1971; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0110xxxxx1x0xxxxxxxxxxxxx - st1h. */ - return 1992; - } - } - } - } - } - else - { - if (((word >> 14) & 0x1) == 0) - { - if (((word >> 30) & 0x1) == 0) - { - if (((word >> 31) & 0x1) == 0) - { - if (((word >> 4) & 0x1) == 0) + if (((word >> 4) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 @@ -17773,171 +17872,6 @@ aarch64_opcode_lookup_1 (uint32_t word) } } else - { - if (((word >> 31) & 0x1) == 0) - { - if (((word >> 16) & 0x1) == 0) - { - if (((word >> 17) & 0x1) == 0) - { - if (((word >> 18) & 0x1) == 0) - { - if (((word >> 19) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0x0000101xxxxxxxxxxxxx - faddqv. */ - return 3484; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0x1000101xxxxxxxxxxxxx - fcvtnt. */ - return 2173; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xx100101xxxxxxxxxxxxx - fmaxnmqv. */ - return 3485; - } - } - else - { - if (((word >> 18) & 0x1) == 0) - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0000xx010101xxxxxxxxxxxxx - fcvtxnt. */ - return 2176; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0100xx010101xxxxxxxxxxxxx - bfcvtnt. */ - return 3164; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0x10xx010101xxxxxxxxxxxxx - fcvtnt. */ - return 2174; - } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xx110101xxxxxxxxxxxxx - fmaxqv. */ - return 3486; - } - } - } - else - { - if (((word >> 17) & 0x1) == 0) - { - if (((word >> 18) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xx001101xxxxxxxxxxxxx - fcvtlt. */ - return 2171; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xx101101xxxxxxxxxxxxx - fminnmqv. */ - return 3487; - } - } - else - { - if (((word >> 18) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xx011101xxxxxxxxxxxxx - fcvtlt. */ - return 2172; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x0xx0xx111101xxxxxxxxxxxxx - fminqv. */ - return 3488; - } - } - } - } - else - { - if (((word >> 22) & 0x1) == 0) - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0000xxxxx101xxxxxxxxxxxxx - st1b. */ - return 1968; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0100xxxxx101xxxxxxxxxxxxx - st1h. */ - return 1987; - } - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0010xxxxx101xxxxxxxxxxxxx - st1b. */ - return 1975; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 111001x0110xxxxx101xxxxxxxxxxxxx - st1h. */ - return 1996; - } - } - } - } - } - else - { - if (((word >> 30) & 0x1) == 0) { if (((word >> 31) & 0x1) == 0) { @@ -18011,17 +17945,875 @@ aarch64_opcode_lookup_1 (uint32_t word) } } } - else + } + } + else + { + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 17) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { - if (((word >> 22) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x0x000xxxx111xxxxxxxxxxxxx - st1b. */ - return 1973; + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx00000x100xxxxxxxxxxxxx + fcadd. */ + return 1502; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx01000x100xxxxxxxxxxxxx + faddp. */ + return 2170; + } + } + else + { + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x1000100xxxxxxxxxxxxx + frintn. */ + return 3711; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x1001100xxxxxxxxxxxxx + frinta. */ + return 3710; + } + } + } + else + { + if (((word >> 16) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xx000110xxxxxxxxxxxxx + frintm. */ + return 3713; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xx001110xxxxxxxxxxxxx + frintx. */ + return 3708; + } + } + } + else + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x01001x0xxxxxxxxxxxxx + fmaxnmp. */ + return 2178; + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x00x11001x0xxxxxxxxxxxxx + frint32z. */ + return 3703; + } + else + { + if (((word >> 14) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10x1100100xxxxxxxxxxxxx + scvtf. */ + return 3727; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10x1100110xxxxxxxxxxxxx + scvtf. */ + return 3724; + } + } + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x01011x0xxxxxxxxxxxxx + fminnmp. */ + return 2180; + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0000x11011x0xxxxxxxxxxxxx + frint64z. */ + return 3707; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0100x11011x0xxxxxxxxxxxxx + scvtf. */ + return 3726; + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0010x1101100xxxxxxxxxxxxx + scvtf. */ + return 3725; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0110x1101100xxxxxxxxxxxxx + scvtf. */ + return 3729; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0010x1101110xxxxxxxxxxxxx + scvtf. */ + return 3728; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0110x1101110xxxxxxxxxxxxx + scvtf. */ + return 3730; + } + } + } + } + } + } + } + else + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx000000101xxxxxxxxxxxxx + fcvtnt. */ + return 3678; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx010000101xxxxxxxxxxxxx + faddqv. */ + return 3484; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx001000101xxxxxxxxxxxxx + fcvtnt. */ + return 2173; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx011000101xxxxxxxxxxxxx + frintp. */ + return 3714; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xx000111xxxxxxxxxxxxx + frintz. */ + return 3712; + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x01001x1xxxxxxxxxxxxx + fmaxnmqv. */ + return 3485; + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x00x11001x1xxxxxxxxxxxxx + frint32x. */ + return 3701; + } + else + { + if (((word >> 14) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10x1100101xxxxxxxxxxxxx + ucvtf. */ + return 3739; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10x1100111xxxxxxxxxxxxx + ucvtf. */ + return 3736; + } + } + } + } + } + else + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x0001101xxxxxxxxxxxxx + fcvtlt. */ + return 3676; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x1001101xxxxxxxxxxxxx + fcvtlt. */ + return 2171; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xx001111xxxxxxxxxxxxx + frinti. */ + return 3709; + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x01011x1xxxxxxxxxxxxx + fminnmqv. */ + return 3487; + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0000x11011x1xxxxxxxxxxxxx + frint64x. */ + return 3705; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0100x11011x1xxxxxxxxxxxxx + ucvtf. */ + return 3738; + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0010x1101101xxxxxxxxxxxxx + ucvtf. */ + return 3737; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0110x1101101xxxxxxxxxxxxx + ucvtf. */ + return 3741; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0010x1101111xxxxxxxxxxxxx + ucvtf. */ + return 3740; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0110x1101111xxxxxxxxxxxxx + ucvtf. */ + return 3742; + } + } + } + } + } + } + } + } + else + { + if (((word >> 16) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x00xx010100xxxxxxxxxxxxx + fcvt. */ + return 3672; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10xx010100xxxxxxxxxxxxx + fcvt. */ + return 3674; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0000xx010110xxxxxxxxxxxxx + fcvtx. */ + return 3680; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0100xx010110xxxxxxxxxxxxx + bfcvt. */ + return 3661; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10xx010110xxxxxxxxxxxxx + fcvt. */ + return 3675; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0000x0010101xxxxxxxxxxxxx + fcvtxnt. */ + return 3681; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0100x0010101xxxxxxxxxxxxx + bfcvtnt. */ + return 3662; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10x0010101xxxxxxxxxxxxx + fcvtnt. */ + return 3679; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x000001010101xxxxxxxxxxxxx + fcvtxnt. */ + return 2176; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x010001010101xxxxxxxxxxxxx + bfcvtnt. */ + return 3164; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x1001010101xxxxxxxxxxxxx + fcvtnt. */ + return 2174; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x0011010101xxxxxxxxxxxxx + fcvt. */ + return 3670; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x1011010101xxxxxxxxxxxxx + fcvt. */ + return 3671; + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xx010111xxxxxxxxxxxxx + fcvt. */ + return 3673; + } + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x01101x0xxxxxxxxxxxxx + fmaxp. */ + return 2179; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x01101x1xxxxxxxxxxxxx + fmaxqv. */ + return 3486; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x00x11101xxxxxxxxxxxxxxx + flogb. */ + return 3697; + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10x1110100xxxxxxxxxxxxx + fcvtzs. */ + return 3687; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10x1110110xxxxxxxxxxxxx + fcvtzs. */ + return 3682; + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10x1110101xxxxxxxxxxxxx + fcvtzu. */ + return 3694; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x10x1110111xxxxxxxxxxxxx + fcvtzu. */ + return 3689; + } + } + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0xx011100xxxxxxxxxxxxx + frecpx. */ + return 3699; + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x0111100xxxxxxxxxxxxx + fminp. */ + return 2181; + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x00x1111100xxxxxxxxxxxxx + fcvtzs. */ + return 3685; + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0010x1111100xxxxxxxxxxxxx + fcvtzs. */ + return 3683; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0110x1111100xxxxxxxxxxxxx + fcvtzs. */ + return 3686; + } + } + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x00x0xxx11110xxxxxxxxxxxxx + fcvtzs. */ + return 3684; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x01x0xxx11110xxxxxxxxxxxxx + fcvtzs. */ + return 3688; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x0011101xxxxxxxxxxxxx + fcvtlt. */ + return 3677; + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx001011101xxxxxxxxxxxxx + fcvtlt. */ + return 2172; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx011011101xxxxxxxxxxxxx + fsqrt. */ + return 3715; + } + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0xx0x0111101xxxxxxxxxxxxx + fminqv. */ + return 3488; + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0x00x1111101xxxxxxxxxxxxx + fcvtzu. */ + return 3692; + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0010x1111101xxxxxxxxxxxxx + fcvtzu. */ + return 3690; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x0110x1111101xxxxxxxxxxxxx + fcvtzu. */ + return 3693; + } + } + } + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x00x0xxx11111xxxxxxxxxxxxx + fcvtzu. */ + return 3691; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x01x0xxx11111xxxxxxxxxxxxx + fcvtzu. */ + return 3695; + } + } + } + } + } + } + else + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0000xxxxx1x0xxxxxxxxxxxxx + st1b. */ + return 1967; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0100xxxxx1x0xxxxxxxxxxxxx + st1h. */ + return 1986; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0010xxxxx1x0xxxxxxxxxxxxx + st1b. */ + return 1971; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0110xxxxx1x0xxxxxxxxxxxxx + st1h. */ + return 1992; + } + } + } + else + { + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 22) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0000xxxxx101xxxxxxxxxxxxx + st1b. */ + return 1968; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x0100xxxxx101xxxxxxxxxxxxx + st1h. */ + return 1987; + } } else { @@ -18029,58 +18821,91 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x00100xxxx111xxxxxxxxxxxxx + 111001x0010xxxxx101xxxxxxxxxxxxx st1b. */ - return 1976; + return 1975; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x01100xxxx111xxxxxxxxxxxxx + 111001x0110xxxxx101xxxxxxxxxxxxx st1h. */ - return 1997; + return 1996; } } } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x11001x00001xxxx111xxxxxxxxxxxxx - stnt1b. */ - return 2037; + 111001x0x000xxxx111xxxxxxxxxxxxx + st1b. */ + return 1973; } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x01001xxxx111xxxxxxxxxxxxx - stnt1h. */ - return 2041; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x00100xxxx111xxxxxxxxxxxxx + st1b. */ + return 1976; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x01100xxxx111xxxxxxxxxxxxx + st1h. */ + return 1997; + } } } else { - if (((word >> 23) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x00101xxxx111xxxxxxxxxxxxx - st3b. */ - return 2021; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x00001xxxx111xxxxxxxxxxxxx + stnt1b. */ + return 2037; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x01001xxxx111xxxxxxxxxxxxx + stnt1h. */ + return 2041; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x11001x01101xxxx111xxxxxxxxxxxxx - st3h. */ - return 2025; + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x00101xxxx111xxxxxxxxxxxxx + st3b. */ + return 2021; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 111001x01101xxxx111xxxxxxxxxxxxx + st3h. */ + return 2025; + } } } } @@ -19610,11 +20435,33 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 19) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x0001100xxxxxxxxxxxxx - compact. */ - return 1467; + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x10x100001100xxxxxxxxxxxxx + compact. */ + return 3667; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x11x100001100xxxxxxxxxxxxx + compact. */ + return 1467; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx110001100xxxxxxxxxxxxx + expand. */ + return 3668; + } } else { @@ -19934,51 +20781,106 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 16) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx100xx0101xxxxxxxxxxxxx - lasta. */ - return 1613; + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx100000101xxxxxxxxxxxxx + lasta. */ + return 1613; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx110000101xxxxxxxxxxxxx + clasta. */ + return 1428; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x1000101xxxxxxxxxxxxx + cpy. */ + return 1469; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx110xx0101xxxxxxxxxxxxx - clasta. */ - return 1428; + 000001x1xx1xx100101xxxxxxxxxxxxx + revb. */ + return 3720; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx1x1xx0101xxxxxxxxxxxxx - cpy. */ - return 1469; + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x0x10101xxxxxxxxxxxxx + revw. */ + return 3722; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1x1x10101xxxxxxxxxxxxx + revd. */ + return 3723; + } } } else { - if (((word >> 20) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 000001x1xx10xxx1101xxxxxxxxxxxxx - lastb. */ - return 1615; + if (((word >> 18) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx10x001101xxxxxxxxxxxxx + lastb. */ + return 1615; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx11x001101xxxxxxxxxxxxx + clastb. */ + return 1431; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000001x1xx1xx101101xxxxxxxxxxxxx + revh. */ + return 3721; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 000001x1xx11xxx1101xxxxxxxxxxxxx - clastb. */ - return 1431; + 000001x1xx1xxx11101xxxxxxxxxxxxx + rbit. */ + return 3719; } } } @@ -24432,11 +25334,11 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 19) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 @@ -24448,77 +25350,55 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx010000101xxxxxxxxxxxxx - scvtf. */ - return 1914; + 011001x1xx000010101xxxxxxxxxxxxx + frintm. */ + return 1581; } } else { - if (((word >> 20) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx000100101xxxxxxxxxxxxx - frinta. */ - return 1579; + 011001x1x00100x0101xxxxxxxxxxxxx + frint32z. */ + return 3702; } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1x0010100101xxxxxxxxxxxxx + 011001x1x1010000101xxxxxxxxxxxxx scvtf. */ - return 1913; + return 1914; } else { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x101010100101xxxxxxxxxxxxx - scvtf. */ - return 1912; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x111010100101xxxxxxxxxxxxx - scvtf. */ - return 1916; - } + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1x1010010101xxxxxxxxxxxxx + scvtf. */ + return 1911; } } } } else { - if (((word >> 18) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx000010101xxxxxxxxxxxxx - frintm. */ - return 1581; + 011001x1xx000100101xxxxxxxxxxxxx + frinta. */ + return 1579; } else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx010010101xxxxxxxxxxxxx - scvtf. */ - return 1911; - } - } - else - { - if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 @@ -24526,23 +25406,67 @@ aarch64_opcode_lookup_1 (uint32_t word) frintx. */ return 1584; } - else + } + else + { + if (((word >> 22) & 0x1) == 0) { if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x10x010110101xxxxxxxxxxxxx - scvtf. */ - return 1915; + 011001x1000101x0101xxxxxxxxxxxxx + frint64z. */ + return 3706; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x11x010110101xxxxxxxxxxxxx + 011001x1100101x0101xxxxxxxxxxxxx scvtf. */ - return 1917; + return 1913; + } + } + else + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x101010100101xxxxxxxxxxxxx + scvtf. */ + return 1912; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x111010100101xxxxxxxxxxxxx + scvtf. */ + return 1916; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x101010110101xxxxxxxxxxxxx + scvtf. */ + return 1915; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x111010110101xxxxxxxxxxxxx + scvtf. */ + return 1917; + } } } } @@ -24702,13 +25626,13 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 17) & 0x1) == 0) + if (((word >> 18) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - if (((word >> 19) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 20) & 0x1) == 0) + if (((word >> 17) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 @@ -24720,12 +25644,45 @@ aarch64_opcode_lookup_1 (uint32_t word) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1xx010001101xxxxxxxxxxxxx - ucvtf. */ - return 2067; + 011001x1xx000011101xxxxxxxxxxxxx + frintz. */ + return 1585; + } + } + else + { + if (((word >> 22) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1x00100x1101xxxxxxxxxxxxx + frint32x. */ + return 3700; + } + else + { + if (((word >> 17) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1x1010001101xxxxxxxxxxxxx + ucvtf. */ + return 2067; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1x1010011101xxxxxxxxxxxxx + ucvtf. */ + return 2064; + } } } - else + } + else + { + if (((word >> 17) & 0x1) == 0) { if (((word >> 20) & 0x1) == 0) { @@ -24755,40 +25712,106 @@ aarch64_opcode_lookup_1 (uint32_t word) return 1535; } } - } - else - { - if (((word >> 19) & 0x1) == 0) + else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1x00x0101101xxxxxxxxxxxxx - ucvtf. */ - return 2066; + 011001x1xx001011101xxxxxxxxxxxxx + fcvt. */ + return 1523; } else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx011011101xxxxxxxxxxxxx + fcvtzu. */ + return 1531; + } + } + } + } + else + { + if (((word >> 19) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0001x1101xxxxxxxxxxxxx + frinti. */ + return 1580; + } + else + { + if (((word >> 22) & 0x1) == 0) { if (((word >> 23) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1010x0101101xxxxxxxxxxxxx - ucvtf. */ - return 2065; + 011001x1000101x1101xxxxxxxxxxxxx + frint64x. */ + return 3704; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 011001x1110x0101101xxxxxxxxxxxxx + 011001x1100101x1101xxxxxxxxxxxxx ucvtf. */ - return 2069; + return 2066; + } + } + else + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x101010101101xxxxxxxxxxxxx + ucvtf. */ + return 2065; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x111010101101xxxxxxxxxxxxx + ucvtf. */ + return 2069; + } + } + else + { + if (((word >> 23) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x101010111101xxxxxxxxxxxxx + ucvtf. */ + return 2068; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x111010111101xxxxxxxxxxxxx + ucvtf. */ + return 2070; + } } } } - else + } + else + { + if (((word >> 17) & 0x1) == 0) { if (((word >> 20) & 0x1) == 0) { @@ -24829,83 +25852,6 @@ aarch64_opcode_lookup_1 (uint32_t word) } } } - } - } - else - { - if (((word >> 18) & 0x1) == 0) - { - if (((word >> 19) & 0x1) == 0) - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx000011101xxxxxxxxxxxxx - frintz. */ - return 1585; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx010011101xxxxxxxxxxxxx - ucvtf. */ - return 2064; - } - } - else - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx001011101xxxxxxxxxxxxx - fcvt. */ - return 1523; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx011011101xxxxxxxxxxxxx - fcvtzu. */ - return 1531; - } - } - } - else - { - if (((word >> 19) & 0x1) == 0) - { - if (((word >> 20) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx000111101xxxxxxxxxxxxx - frinti. */ - return 1580; - } - else - { - if (((word >> 23) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x10x010111101xxxxxxxxxxxxx - ucvtf. */ - return 2068; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x11x010111101xxxxxxxxxxxxx - ucvtf. */ - return 2070; - } - } - } else { if (((word >> 23) & 0x1) == 0) @@ -25158,109 +26104,131 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 10) & 0x1) == 0) - { - if (((word >> 11) & 0x1) == 0) - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx1xxx1010xx000xxxxxxxxx - sqdecp. */ - return 1944; - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx1xxx1010xx100xxxxxxxxx - sqdecp. */ - return 1946; - } - } - else + if (((word >> 19) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx1xxx1010xxx10xxxxxxxxx - sqdecp. */ - return 1945; + 001001x1xx1x0x1010xxxx0xxxxxxxxx + lastp. */ + return 3716; } - } - } - else - { - if (((word >> 10) & 0x1) == 0) - { - if (((word >> 11) & 0x1) == 0) + else { - if (((word >> 17) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + if (((word >> 11) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx1xx00110xx000xxxxxxxxx - uqincp. */ - return 2107; + 001001x1xx1x1x1010xx000xxxxxxxxx + sqdecp. */ + return 1944; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx1xx10110xx000xxxxxxxxx - decp. */ - return 1478; + 001001x1xx1x1x1010xx100xxxxxxxxx + sqdecp. */ + return 1946; } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx1xxx1110xx000xxxxxxxxx - uqdecp. */ - return 2093; + 001001x1xx1x1x1010xxx10xxxxxxxxx + sqdecp. */ + return 1945; } } - else + } + } + else + { + if (((word >> 17) & 0x1) == 0) + { + if (((word >> 18) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - if (((word >> 18) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1x000110xxxx0xxxxxxxxx + firstp. */ + return 3696; + } + else + { + if (((word >> 10) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx1xx00110xx100xxxxxxxxx - uqincp. */ - return 2108; + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1x100110xx000xxxxxxxxx + uqincp. */ + return 2107; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1x100110xx100xxxxxxxxx + uqincp. */ + return 2108; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx1xx10110xx100xxxxxxxxx - decp. */ - return 1479; + 001001x1xx1x100110xxx10xxxxxxxxx + uqincp. */ + return 2109; } } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xx10110xx0x0xxxxxxxxx + decp. */ + return 1478; + } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - 001001x1xx1xxx1110xx100xxxxxxxxx - uqdecp. */ - return 2094; + 001001x1xx1xx10110xx1x0xxxxxxxxx + decp. */ + return 1479; } } } else { - if (((word >> 17) & 0x1) == 0) + if (((word >> 10) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 001001x1xx1xxx0110xxx10xxxxxxxxx - uqincp. */ - return 2109; + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xxx1110xx000xxxxxxxxx + uqdecp. */ + return 2093; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 001001x1xx1xxx1110xx100xxxxxxxxx + uqdecp. */ + return 2094; + } } else { @@ -35399,6 +36367,10 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode) case 3399: return NULL; /* bfmax --> NULL. */ case 3012: value = 3566; break; /* bfscale --> fscale. */ case 3566: return NULL; /* fscale --> NULL. */ + case 3015: value = 3748; break; /* bfmul --> fmul. */ + case 3748: return NULL; /* fmul --> NULL. */ + case 3016: value = 3749; break; /* bfmul --> fmul. */ + case 3749: return NULL; /* fmul --> NULL. */ case 2575: value = 3401; break; /* fmax --> bfmax. */ case 3401: return NULL; /* bfmax --> NULL. */ case 3014: value = 3568; break; /* bfscale --> fscale. */ @@ -35415,6 +36387,10 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode) case 3411: return NULL; /* bfminnm --> NULL. */ case 2587: value = 3413; break; /* fminnm --> bfminnm. */ case 3413: return NULL; /* bfminnm --> NULL. */ + case 3017: value = 3750; break; /* bfmul --> fmul. */ + case 3750: return NULL; /* fmul --> NULL. */ + case 3018: value = 3751; break; /* bfmul --> fmul. */ + case 3751: return NULL; /* fmul --> NULL. */ case 12: value = 19; break; /* add --> addg. */ case 19: value = 3305; break; /* addg --> smax. */ case 3305: value = 3306; break; /* smax --> umax. */ diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c index 2aab6306c5c..75ff8717c64 100644 --- a/opcodes/aarch64-dis.c +++ b/opcodes/aarch64-dis.c @@ -3603,6 +3603,14 @@ aarch64_decode_variant_using_iclass (aarch64_inst *inst) variant = extract_field (FLD_SVE_sz2, inst->value, 0); break; + case sve_size_sd3: + variant = extract_field (FLD_SVE_sz3, inst->value, 0); + break; + + case sve_size_sd4: + variant = extract_field (FLD_SVE_sz4, inst->value, 0); + break; + case sve_size_hsd2: i = extract_field (FLD_SVE_size, inst->value, 0); if (i < 1) @@ -3610,6 +3618,13 @@ aarch64_decode_variant_using_iclass (aarch64_inst *inst) variant = i - 1; break; + case sve_size_hsd3: + i = extract_field (FLD_len, inst->value, 0); + if (i < 1) + return false; + variant = i - 1; + break; + case sve_size_13: /* Ignore low bit of this field since that is set in the opcode for instructions of this iclass. */ diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index 60facbfb056..ba080504274 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -329,6 +329,8 @@ const aarch64_field fields[] = { 17, 2 }, /* SVE_size: 2-bit element size, bits [18,17]. */ { 22, 1 }, /* SVE_sz: 1-bit element size select. */ { 30, 1 }, /* SVE_sz2: 1-bit element size select. */ + { 17, 1 }, /* SVE_sz3: 1-bit element size select. */ + { 14, 1 }, /* SVE_sz4: 1-bit element size select. */ { 16, 4 }, /* SVE_tsz: triangular size select. */ { 22, 2 }, /* SVE_tszh: triangular size select high, bits [23,22]. */ { 8, 2 }, /* SVE_tszl_8: triangular size select low, bits [9,8]. */ diff --git a/opcodes/aarch64-opc.h b/opcodes/aarch64-opc.h index dc8787a7f01..d46c56dbf0a 100644 --- a/opcodes/aarch64-opc.h +++ b/opcodes/aarch64-opc.h @@ -133,6 +133,8 @@ enum aarch64_field_kind FLD_SVE_size, FLD_SVE_sz, FLD_SVE_sz2, + FLD_SVE_sz3, + FLD_SVE_sz4, FLD_SVE_tsz, FLD_SVE_tszh, FLD_SVE_tszl_8, diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index d573ecc561e..bf91efec43d 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1732,6 +1732,14 @@ { \ QLF3(S_D,P_Z,S_D), \ } +#define OP_SVE_DZH \ +{ \ + QLF3(S_D,P_Z,S_H), \ +} +#define OP_SVE_DZS \ +{ \ + QLF3(S_D,P_Z,S_S), \ +} #define OP_SVE_DZU \ { \ QLF3(S_D,P_Z,NIL), \ @@ -1792,6 +1800,18 @@ { \ QLF3(S_H,NIL,NIL), \ } +#define OP_SVE_HZD \ +{ \ + QLF3(S_H,P_Z,S_D), \ +} +#define OP_SVE_HZH \ +{ \ + QLF3(S_H,P_Z,S_H), \ +} +#define OP_SVE_HZS \ +{ \ + QLF3(S_H,P_Z,S_S), \ +} #define OP_SVE_HZU \ { \ QLF3(S_H,P_Z,NIL), \ @@ -1812,6 +1832,10 @@ { \ QLF3(S_Q,NIL,NIL), \ } +#define OP_SVE_QZQ \ +{ \ + QLF3(S_Q,P_Z,S_Q), \ +} #define OP_SVE_QZU \ { \ QLF3(S_Q,P_Z,NIL), \ @@ -1899,6 +1923,14 @@ { \ QLF3(S_S,NIL,NIL), \ } +#define OP_SVE_SZD \ +{ \ + QLF3(S_S,P_Z,S_D), \ +} +#define OP_SVE_SZH \ +{ \ + QLF3(S_S,P_Z,S_H), \ +} #define OP_SVE_SZS \ { \ QLF3(S_S,P_Z,S_S), \ @@ -2171,6 +2203,11 @@ QLF4(S_S,NIL,S_S,S_S), \ QLF4(S_D,NIL,S_D,S_D), \ } +#define OP_SVE_VUV_BH \ +{ \ + QLF3(S_B,NIL,S_B), \ + QLF3(S_H,NIL,S_H), \ +} #define OP_SVE_VUV_BHSD \ { \ QLF3(S_B,NIL,S_B), \ @@ -2404,6 +2441,13 @@ QLF4(S_S,X,X,NIL), \ QLF4(S_D,X,X,NIL), \ } +#define OP_SVE_VZV_BHSD \ +{ \ + QLF3(S_B,P_Z,S_B), \ + QLF3(S_H,P_Z,S_H), \ + QLF3(S_S,P_Z,S_S), \ + QLF3(S_D,P_Z,S_D), \ +} #define OP_SVE_VZVD_BHS \ { \ QLF4(S_B,P_Z,S_B,S_D), \ @@ -2942,6 +2986,12 @@ static const aarch64_feature_set aarch64_feature_sve2p1_sme2 = AARCH64_FEATURES (2, SVE2p1_SME2, SVE); static const aarch64_feature_set aarch64_feature_sve2p1_sme2p1 = AARCH64_FEATURES (2, SVE2p1_SME2p1, SVE); +static const aarch64_feature_set aarch64_feature_sme2p2 = + AARCH64_FEATURES (2, SME2p2, SME); +static const aarch64_feature_set aarch64_feature_sve_sme2p2 = + AARCH64_FEATURES (2, SVE_SME2p2, SVE); +static const aarch64_feature_set aarch64_feature_sve2p2_sme2p2 = + AARCH64_FEATURES (2, SVE2p2_SME2p2, SVE); #define CORE &aarch64_feature_v8 #define FP &aarch64_feature_fp @@ -3046,6 +3096,9 @@ static const aarch64_feature_set aarch64_feature_sve2p1_sme2p1 = #define SVE2p1_SME &aarch64_feature_sve2p1_sme #define SVE2p1_SME2 &aarch64_feature_sve2p1_sme2 #define SVE2p1_SME2p1 &aarch64_feature_sve2p1_sme2p1 +#define SME2p2 &aarch64_feature_sme2p2 +#define SVE_SME2p2 &aarch64_feature_sve_sme2p2 +#define SVE2p2_SME2p2 &aarch64_feature_sve2p2_sme2p2 #define CORE_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS) \ { NAME, OPCODE, MASK, CLASS, OP, CORE, OPS, QUALS, FLAGS, 0, 0, NULL } @@ -3320,6 +3373,15 @@ static const aarch64_feature_set aarch64_feature_sve2p1_sme2p1 = #define SVE2p1_SME2p1_INSNC(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,CONSTRAINTS,TIED) \ { NAME, OPCODE, MASK, CLASS, OP, SVE2p1_SME2p1, OPS, QUALS, \ F_STRICT | FLAGS, CONSTRAINTS, TIED, NULL } +#define SVE_SME2p2_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, OP, SVE_SME2p2, OPS, QUALS, \ + FLAGS | F_STRICT, 0, TIED, NULL } +#define SVE2p2_SME2p2_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,CONSTRAINTS,TIED) \ + { NAME, OPCODE, MASK, CLASS, 0, SVE2p2_SME2p2, OPS, QUALS, \ + F_STRICT | FLAGS, CONSTRAINTS, TIED, NULL } +#define SME2p2_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, 0, SME2p2, OPS, QUALS, \ + F_STRICT | FLAGS, 0, TIED, NULL } #define MOPS_CPY_OP1_OP2_PME_INSN(NAME, OPCODE, MASK, FLAGS, CONSTRAINTS) \ MOPS_INSN (NAME, OPCODE, MASK, 0, \ @@ -4940,7 +5002,7 @@ const struct aarch64_opcode aarch64_opcode_table[] = _SVE_INSN ("cnth", 0x0460e000, 0xfff0fc00, sve_misc, 0, OP2 (Rd, SVE_PATTERN_SCALED), OP_SVE_XU, F_OPD1_OPT | F_DEFAULT(31), 0), _SVE_INSN ("cntp", 0x25208000, 0xff3fc200, sve_size_bhsd, 0, OP3 (Rd, SVE_Pg4_10, SVE_Pn), OP_SVE_XUV_BHSD, 0, 0), _SVE_INSN ("cntw", 0x04a0e000, 0xfff0fc00, sve_misc, 0, OP2 (Rd, SVE_PATTERN_SCALED), OP_SVE_XU, F_OPD1_OPT | F_DEFAULT(31), 0), - _SVE_INSN ("compact", 0x05a18000, 0xffbfe000, sve_size_sd, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VUV_SD, 0, 0), + SVE_SME2p2_INSN ("compact", 0x05a18000, 0xffbfe000, sve_size_sd, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VUV_SD, 0, 0), _SVE_INSNC ("cpy", 0x05208000, 0xff3fe000, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Pg3, SVE_Vn), OP_SVE_VMV_BHSD, F_HAS_ALIAS, C_SCAN_MOVPRFX, 0), _SVE_INSNC ("cpy", 0x0528a000, 0xff3fe000, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Pg3, Rn_SP), OP_SVE_VMR_BHSD, F_HAS_ALIAS, C_SCAN_MOVPRFX, 0), _SVE_INSNC ("cpy", 0x05100000, 0xff308000, sve_cpy, 0, OP3 (SVE_Zd, SVE_Pg4_16, SVE_ASIMM), OP_SVE_VPU_BHSD, F_HAS_ALIAS, C_SCAN_MOVPRFX, 0), @@ -7233,6 +7295,102 @@ const struct aarch64_opcode aarch64_opcode_table[] = SME_F8F32_INSNC ("fvdotb", 0xc1d00800, 0xfff09830, sme_misc, OP3 (SME_ZA_array_off3_0, SME_Znx2, SME_Zm_INDEX2_3), OP_SVE_VVV_S_B, F_OD (4) | F_VG_REQ, 0), SME_F8F32_INSNC ("fvdott", 0xc1d00810, 0xfff09830, sme_misc, OP3 (SME_ZA_array_off3_0, SME_Znx2, SME_Zm_INDEX2_3), OP_SVE_VVV_S_B, F_OD (4) | F_VG_REQ, 0), + /* SVE2p2 / SME2p2 instructions. */ + SVE2p2_SME2p2_INSN ("abs", 0x0406a000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("bfcvt", 0x649ac000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("bfcvtnt", 0x6482a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("cls", 0x0408a000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("clz", 0x0409a000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("cnot", 0x040ba000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("cnt", 0x040aa000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("compact", 0x05218000, 0xffbfe000, sve_size_bh, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VUV_BH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("expand", 0x05318000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VUV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fabs", 0x040ca000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvt", 0x649aa000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvt", 0x64daa000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvt", 0x649a8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvt", 0x64dae000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvt", 0x64da8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvt", 0x64dac000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtlt", 0x6481a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtlt", 0x64c3a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtnt", 0x6480a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtnt", 0x64c2a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtx", 0x641ac000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtxnt", 0x6402a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzs", 0x645ec000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzs", 0x645f8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzs", 0x645fc000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzs", 0x649f8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzs", 0x64df8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzs", 0x64de8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzs", 0x64dfc000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzu", 0x645ee000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzu", 0x645fa000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzu", 0x645fe000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzu", 0x649fa000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzu", 0x64dfa000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzu", 0x64dea000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fcvtzu", 0x64dfe000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("firstp", 0x25218000, 0xff3fc200, sve_size_bhsd, OP3 (Rd, SVE_Pg4_10, SVE_Pn), OP_SVE_XUV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("flogb", 0x641e8000, 0xffff8000, sve_size_hsd3, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fneg", 0x040da000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frecpx", 0x641b8000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frint32x", 0x6511a000, 0xfffde000, sve_size_sd3, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_SD, 0, C_SCAN_MOVPRFX, 0), + SVE2p2_SME2p2_INSN ("frint32x", 0x641ca000, 0xffffa000, sve_size_sd4, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frint32z", 0x6510a000, 0xfffde000, sve_size_sd3, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_SD, 0, C_SCAN_MOVPRFX, 0), + SVE2p2_SME2p2_INSN ("frint32z", 0x641c8000, 0xffffa000, sve_size_sd4, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frint64x", 0x6515a000, 0xfffde000, sve_size_sd3, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_SD, 0, C_SCAN_MOVPRFX, 0), + SVE2p2_SME2p2_INSN ("frint64x", 0x641da000, 0xffffa000, sve_size_sd4, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frint64z", 0x6514a000, 0xfffde000, sve_size_sd3, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VMV_SD, 0, C_SCAN_MOVPRFX, 0), + SVE2p2_SME2p2_INSN ("frint64z", 0x641d8000, 0xffffa000, sve_size_sd4, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frintx", 0x6419c000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frinti", 0x6419e000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frinta", 0x64198000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frintn", 0x64188000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frintz", 0x6418e000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frintm", 0x6418c000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("frintp", 0x6418a000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("fsqrt", 0x641ba000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("lastp", 0x25228000, 0xff3fc200, sve_size_bhsd, OP3 (Rd, SVE_Pg4_10, SVE_Pn), OP_SVE_XUV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("neg", 0x0407a000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("not", 0x040ea000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("rbit", 0x0527a000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("revb", 0x0524a000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("revh", 0x05a5a000, 0xffbfe000, sve_size_sd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("revw", 0x05e6a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("revd", 0x052ea000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_QZQ, 0, 0, 0), + SVE2p2_SME2p2_INSN ("scvtf", 0x645cc000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("scvtf", 0x645d8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("scvtf", 0x649d8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("scvtf", 0x64dc8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("scvtf", 0x645dc000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("scvtf", 0x64dd8000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("scvtf", 0x64ddc000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("sqabs", 0x440aa000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("sqneg", 0x440ba000, 0xff3fe000, sve_size_bhsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_BHSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("sxtb", 0x0400a000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("sxth", 0x0482a000, 0xffbfe000, sve_size_sd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("sxtw", 0x04c4a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("ucvtf", 0x645ce000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZH, 0, 0, 0), + SVE2p2_SME2p2_INSN ("ucvtf", 0x645da000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("ucvtf", 0x649da000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("ucvtf", 0x64dca000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("ucvtf", 0x645de000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_HZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("ucvtf", 0x64dda000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("ucvtf", 0x64dde000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("urecpe", 0x4482a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("ursqrte", 0x4483a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_SZS, 0, 0, 0), + SVE2p2_SME2p2_INSN ("uxtb", 0x0401a000, 0xff3fe000, sve_size_hsd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_HSD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("uxth", 0x0483a000, 0xffbfe000, sve_size_sd, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_VZV_SD, 0, 0, 0), + SVE2p2_SME2p2_INSN ("uxtw", 0x04c5a000, 0xffffe000, sve_misc, OP3 (SVE_Zd, SVE_Pg3, SVE_Zn), OP_SVE_DZD, 0, 0, 0), + + /* SME2p2 instructions. */ + SME2p2_INSN ("fmul", 0xc120e800, 0xff21fc21, sme_size_22_hsd, OP3 (SME_Zdnx2, SME_Znx2, SME_Zm_17), OP_SVE_VVV_HSD, 0, 0), + SME2p2_INSN ("fmul", 0xc121e800, 0xff21fc63, sme_size_22_hsd, OP3 (SME_Zdnx4, SME_Znx4, SME_Zm_17), OP_SVE_VVV_HSD, 0, 0), + SME2p2_INSN ("fmul", 0xc120e400, 0xff21fc21, sme_size_22_hsd, OP3 (SME_Zdnx2, SME_Znx2, SME_Zmx2), OP_SVE_VVV_HSD, 0, 0), + SME2p2_INSN ("fmul", 0xc121e400, 0xff21fc63, sme_size_22_hsd, OP3 (SME_Zdnx4, SME_Znx4, SME_Zmx4), OP_SVE_VVV_HSD, 0, 0), + {0, 0, 0, 0, 0, 0, {}, {}, 0, 0, 0, NULL}, };