From: Alice Carlotti Date: Tue, 7 Oct 2025 22:40:26 +0000 (+0100) Subject: aarch64: Add support for FEAT_SME_MOP4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=64aae286f69d2af855aeddc03113b13391eca058;p=thirdparty%2Fbinutils-gdb.git aarch64: Add support for FEAT_SME_MOP4 --- diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 4a66642cc04..59d950663a8 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -6864,6 +6864,8 @@ parse_operands (char *str, const aarch64_opcode *opcode) case AARCH64_OPND_SVE_Zt: case AARCH64_OPND_SME_Zm: case AARCH64_OPND_SME_Zm_17: + case AARCH64_OPND_SME_Zn_6_3: + case AARCH64_OPND_SME_Zm_17_3: reg_type = REG_TYPE_Z; goto vector_reg; @@ -7039,6 +7041,8 @@ parse_operands (char *str, const aarch64_opcode *opcode) case AARCH64_OPND_SVE_ZtxN: case AARCH64_OPND_SME_Zdnx2: case AARCH64_OPND_SME_Zdnx4: + case AARCH64_OPND_SME_Znx2_6_3: + case AARCH64_OPND_SME_Zmx2_17_3: case AARCH64_OPND_SME_Zmx2: case AARCH64_OPND_SME_Zmx4: case AARCH64_OPND_SME_Znx2: @@ -10895,6 +10899,7 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = { {"sme2p2", AARCH64_FEATURE (SME2p2), AARCH64_FEATURE (SME2p1)}, {"gcie", AARCH64_FEATURE (GCIE), AARCH64_NO_FEATURES}, {"sme-tmop", AARCH64_FEATURE (SME_TMOP), AARCH64_FEATURE (SME2)}, + {"sme-mop4", AARCH64_FEATURE (SME_MOP4), AARCH64_FEATURE (SME2)}, {NULL, AARCH64_NO_FEATURES, AARCH64_NO_FEATURES}, }; diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi index 5176757c235..2f95f91a66e 100644 --- a/gas/doc/c-aarch64.texi +++ b/gas/doc/c-aarch64.texi @@ -309,6 +309,8 @@ automatically cause those extensions to be disabled. @tab Enable SME I16I64 Extension. @item @code{sme-lutv2} @tab @tab Enable SME Lookup Table v2 (LUTv2) extension. +@item @code{sme-mop4} @tab @code{sme2} + @tab Enable SME Quarter-tile outer product instructions. @item @code{sme-tmop} @tab @code{sme2} @tab Enable SME structured sparsity outer product instructions. @item @code{sme2} @tab @code{sme} diff --git a/gas/testsuite/gas/aarch64/sme-mop4-b16b16.d b/gas/testsuite/gas/aarch64/sme-mop4-b16b16.d new file mode 100644 index 00000000000..ff6370f6c68 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-b16b16.d @@ -0,0 +1,41 @@ +#as: -march=armv8-a+sme-mop4+sme-b16b16 +#objdump: -dr + +.*: file format .* + + +Disassembly of section \.text: + +0+ <\.text>: + *[0-9a-f]+: 81200008 bfmop4a za0\.h, z0\.h, z16\.h + *[0-9a-f]+: 81200009 bfmop4a za1\.h, z0\.h, z16\.h + *[0-9a-f]+: 812001c8 bfmop4a za0\.h, z14\.h, z16\.h + *[0-9a-f]+: 812e0008 bfmop4a za0\.h, z0\.h, z30\.h + *[0-9a-f]+: 81300008 bfmop4a za0\.h, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 81300009 bfmop4a za1\.h, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 813001c8 bfmop4a za0\.h, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 813e0008 bfmop4a za0\.h, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 81200208 bfmop4a za0\.h, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 81200209 bfmop4a za1\.h, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 812003c8 bfmop4a za0\.h, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 812e0208 bfmop4a za0\.h, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 81300208 bfmop4a za0\.h, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 81300209 bfmop4a za1\.h, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 813003c8 bfmop4a za0\.h, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 813e0208 bfmop4a za0\.h, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: 81200018 bfmop4s za0\.h, z0\.h, z16\.h + *[0-9a-f]+: 81200019 bfmop4s za1\.h, z0\.h, z16\.h + *[0-9a-f]+: 812001d8 bfmop4s za0\.h, z14\.h, z16\.h + *[0-9a-f]+: 812e0018 bfmop4s za0\.h, z0\.h, z30\.h + *[0-9a-f]+: 81300018 bfmop4s za0\.h, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 81300019 bfmop4s za1\.h, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 813001d8 bfmop4s za0\.h, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 813e0018 bfmop4s za0\.h, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 81200218 bfmop4s za0\.h, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 81200219 bfmop4s za1\.h, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 812003d8 bfmop4s za0\.h, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 812e0218 bfmop4s za0\.h, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 81300218 bfmop4s za0\.h, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 81300219 bfmop4s za1\.h, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 813003d8 bfmop4s za0\.h, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 813e0218 bfmop4s za0\.h, {z0\.h-z1\.h}, {z30\.h-z31\.h} diff --git a/gas/testsuite/gas/aarch64/sme-mop4-b16b16.s b/gas/testsuite/gas/aarch64/sme-mop4-b16b16.s new file mode 100644 index 00000000000..56683151fa7 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-b16b16.s @@ -0,0 +1,33 @@ + bfmop4a za0.h, z0.h, z16.h + bfmop4a za1.h, z0.h, z16.h + bfmop4a za0.h, z14.h, z16.h + bfmop4a za0.h, z0.h, z30.h + bfmop4a za0.h, z0.h, { z16.h-z17.h } + bfmop4a za1.h, z0.h, { z16.h-z17.h } + bfmop4a za0.h, z14.h, { z16.h-z17.h } + bfmop4a za0.h, z0.h, { z30.h-z31.h } + bfmop4a za0.h, { z0.h-z1.h }, z16.h + bfmop4a za1.h, { z0.h-z1.h }, z16.h + bfmop4a za0.h, { z14.h-z15.h }, z16.h + bfmop4a za0.h, { z0.h-z1.h }, z30.h + bfmop4a za0.h, { z0.h-z1.h }, { z16.h-z17.h } + bfmop4a za1.h, { z0.h-z1.h }, { z16.h-z17.h } + bfmop4a za0.h, { z14.h-z15.h }, { z16.h-z17.h } + bfmop4a za0.h, { z0.h-z1.h }, { z30.h-z31.h } + + bfmop4s za0.h, z0.h, z16.h + bfmop4s za1.h, z0.h, z16.h + bfmop4s za0.h, z14.h, z16.h + bfmop4s za0.h, z0.h, z30.h + bfmop4s za0.h, z0.h, { z16.h-z17.h } + bfmop4s za1.h, z0.h, { z16.h-z17.h } + bfmop4s za0.h, z14.h, { z16.h-z17.h } + bfmop4s za0.h, z0.h, { z30.h-z31.h } + bfmop4s za0.h, { z0.h-z1.h }, z16.h + bfmop4s za1.h, { z0.h-z1.h }, z16.h + bfmop4s za0.h, { z14.h-z15.h }, z16.h + bfmop4s za0.h, { z0.h-z1.h }, z30.h + bfmop4s za0.h, { z0.h-z1.h }, { z16.h-z17.h } + bfmop4s za1.h, { z0.h-z1.h }, { z16.h-z17.h } + bfmop4s za0.h, { z14.h-z15.h }, { z16.h-z17.h } + bfmop4s za0.h, { z0.h-z1.h }, { z30.h-z31.h } diff --git a/gas/testsuite/gas/aarch64/sme-mop4-f16f16.d b/gas/testsuite/gas/aarch64/sme-mop4-f16f16.d new file mode 100644 index 00000000000..f47689257a2 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-f16f16.d @@ -0,0 +1,41 @@ +#as: -march=armv8-a+sme-mop4+sme-f16f16 +#objdump: -dr + +.*: file format .* + + +Disassembly of section \.text: + +0+ <\.text>: + *[0-9a-f]+: 81000008 fmop4a za0\.h, z0\.h, z16\.h + *[0-9a-f]+: 81000009 fmop4a za1\.h, z0\.h, z16\.h + *[0-9a-f]+: 810001c8 fmop4a za0\.h, z14\.h, z16\.h + *[0-9a-f]+: 810e0008 fmop4a za0\.h, z0\.h, z30\.h + *[0-9a-f]+: 81100008 fmop4a za0\.h, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 81100009 fmop4a za1\.h, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811001c8 fmop4a za0\.h, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811e0008 fmop4a za0\.h, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 81000208 fmop4a za0\.h, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 81000209 fmop4a za1\.h, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 810003c8 fmop4a za0\.h, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 810e0208 fmop4a za0\.h, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 81100208 fmop4a za0\.h, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 81100209 fmop4a za1\.h, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811003c8 fmop4a za0\.h, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811e0208 fmop4a za0\.h, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: 81000018 fmop4s za0\.h, z0\.h, z16\.h + *[0-9a-f]+: 81000019 fmop4s za1\.h, z0\.h, z16\.h + *[0-9a-f]+: 810001d8 fmop4s za0\.h, z14\.h, z16\.h + *[0-9a-f]+: 810e0018 fmop4s za0\.h, z0\.h, z30\.h + *[0-9a-f]+: 81100018 fmop4s za0\.h, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 81100019 fmop4s za1\.h, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811001d8 fmop4s za0\.h, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811e0018 fmop4s za0\.h, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 81000218 fmop4s za0\.h, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 81000219 fmop4s za1\.h, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 810003d8 fmop4s za0\.h, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 810e0218 fmop4s za0\.h, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 81100218 fmop4s za0\.h, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 81100219 fmop4s za1\.h, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811003d8 fmop4s za0\.h, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811e0218 fmop4s za0\.h, {z0\.h-z1\.h}, {z30\.h-z31\.h} diff --git a/gas/testsuite/gas/aarch64/sme-mop4-f16f16.s b/gas/testsuite/gas/aarch64/sme-mop4-f16f16.s new file mode 100644 index 00000000000..bf4b9596a27 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-f16f16.s @@ -0,0 +1,33 @@ + fmop4a za0.h, z0.h, z16.h + fmop4a za1.h, z0.h, z16.h + fmop4a za0.h, z14.h, z16.h + fmop4a za0.h, z0.h, z30.h + fmop4a za0.h, z0.h, { z16.h-z17.h } + fmop4a za1.h, z0.h, { z16.h-z17.h } + fmop4a za0.h, z14.h, { z16.h-z17.h } + fmop4a za0.h, z0.h, { z30.h-z31.h } + fmop4a za0.h, { z0.h-z1.h }, z16.h + fmop4a za1.h, { z0.h-z1.h }, z16.h + fmop4a za0.h, { z14.h-z15.h }, z16.h + fmop4a za0.h, { z0.h-z1.h }, z30.h + fmop4a za0.h, { z0.h-z1.h }, { z16.h-z17.h } + fmop4a za1.h, { z0.h-z1.h }, { z16.h-z17.h } + fmop4a za0.h, { z14.h-z15.h }, { z16.h-z17.h } + fmop4a za0.h, { z0.h-z1.h }, { z30.h-z31.h } + + fmop4s za0.h, z0.h, z16.h + fmop4s za1.h, z0.h, z16.h + fmop4s za0.h, z14.h, z16.h + fmop4s za0.h, z0.h, z30.h + fmop4s za0.h, z0.h, { z16.h-z17.h } + fmop4s za1.h, z0.h, { z16.h-z17.h } + fmop4s za0.h, z14.h, { z16.h-z17.h } + fmop4s za0.h, z0.h, { z30.h-z31.h } + fmop4s za0.h, { z0.h-z1.h }, z16.h + fmop4s za1.h, { z0.h-z1.h }, z16.h + fmop4s za0.h, { z14.h-z15.h }, z16.h + fmop4s za0.h, { z0.h-z1.h }, z30.h + fmop4s za0.h, { z0.h-z1.h }, { z16.h-z17.h } + fmop4s za1.h, { z0.h-z1.h }, { z16.h-z17.h } + fmop4s za0.h, { z14.h-z15.h }, { z16.h-z17.h } + fmop4s za0.h, { z0.h-z1.h }, { z30.h-z31.h } diff --git a/gas/testsuite/gas/aarch64/sme-mop4-f64f64.d b/gas/testsuite/gas/aarch64/sme-mop4-f64f64.d new file mode 100644 index 00000000000..37da27de44f --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-f64f64.d @@ -0,0 +1,41 @@ +#as: -march=armv8-a+sme-mop4+sme-f64f64 +#objdump: -dr + +.*: file format .* + + +Disassembly of section \.text: + +0+ <\.text>: + *[0-9a-f]+: 80c00008 fmop4a za0\.d, z0\.d, z16\.d + *[0-9a-f]+: 80c0000f fmop4a za7\.d, z0\.d, z16\.d + *[0-9a-f]+: 80c001c8 fmop4a za0\.d, z14\.d, z16\.d + *[0-9a-f]+: 80ce0008 fmop4a za0\.d, z0\.d, z30\.d + *[0-9a-f]+: 80d00008 fmop4a za0\.d, z0\.d, {z16\.d-z17\.d} + *[0-9a-f]+: 80d0000f fmop4a za7\.d, z0\.d, {z16\.d-z17\.d} + *[0-9a-f]+: 80d001c8 fmop4a za0\.d, z14\.d, {z16\.d-z17\.d} + *[0-9a-f]+: 80de0008 fmop4a za0\.d, z0\.d, {z30\.d-z31\.d} + *[0-9a-f]+: 80c00208 fmop4a za0\.d, {z0\.d-z1\.d}, z16\.d + *[0-9a-f]+: 80c0020f fmop4a za7\.d, {z0\.d-z1\.d}, z16\.d + *[0-9a-f]+: 80c003c8 fmop4a za0\.d, {z14\.d-z15\.d}, z16\.d + *[0-9a-f]+: 80ce0208 fmop4a za0\.d, {z0\.d-z1\.d}, z30\.d + *[0-9a-f]+: 80d00208 fmop4a za0\.d, {z0\.d-z1\.d}, {z16\.d-z17\.d} + *[0-9a-f]+: 80d0020f fmop4a za7\.d, {z0\.d-z1\.d}, {z16\.d-z17\.d} + *[0-9a-f]+: 80d003c8 fmop4a za0\.d, {z14\.d-z15\.d}, {z16\.d-z17\.d} + *[0-9a-f]+: 80de0208 fmop4a za0\.d, {z0\.d-z1\.d}, {z30\.d-z31\.d} + *[0-9a-f]+: 80c00018 fmop4s za0\.d, z0\.d, z16\.d + *[0-9a-f]+: 80c0001f fmop4s za7\.d, z0\.d, z16\.d + *[0-9a-f]+: 80c001d8 fmop4s za0\.d, z14\.d, z16\.d + *[0-9a-f]+: 80ce0018 fmop4s za0\.d, z0\.d, z30\.d + *[0-9a-f]+: 80d00018 fmop4s za0\.d, z0\.d, {z16\.d-z17\.d} + *[0-9a-f]+: 80d0001f fmop4s za7\.d, z0\.d, {z16\.d-z17\.d} + *[0-9a-f]+: 80d001d8 fmop4s za0\.d, z14\.d, {z16\.d-z17\.d} + *[0-9a-f]+: 80de0018 fmop4s za0\.d, z0\.d, {z30\.d-z31\.d} + *[0-9a-f]+: 80c00218 fmop4s za0\.d, {z0\.d-z1\.d}, z16\.d + *[0-9a-f]+: 80c0021f fmop4s za7\.d, {z0\.d-z1\.d}, z16\.d + *[0-9a-f]+: 80c003d8 fmop4s za0\.d, {z14\.d-z15\.d}, z16\.d + *[0-9a-f]+: 80ce0218 fmop4s za0\.d, {z0\.d-z1\.d}, z30\.d + *[0-9a-f]+: 80d00218 fmop4s za0\.d, {z0\.d-z1\.d}, {z16\.d-z17\.d} + *[0-9a-f]+: 80d0021f fmop4s za7\.d, {z0\.d-z1\.d}, {z16\.d-z17\.d} + *[0-9a-f]+: 80d003d8 fmop4s za0\.d, {z14\.d-z15\.d}, {z16\.d-z17\.d} + *[0-9a-f]+: 80de0218 fmop4s za0\.d, {z0\.d-z1\.d}, {z30\.d-z31\.d} diff --git a/gas/testsuite/gas/aarch64/sme-mop4-f64f64.s b/gas/testsuite/gas/aarch64/sme-mop4-f64f64.s new file mode 100644 index 00000000000..934bf72534b --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-f64f64.s @@ -0,0 +1,33 @@ + fmop4a za0.d, z0.d, z16.d + fmop4a za7.d, z0.d, z16.d + fmop4a za0.d, z14.d, z16.d + fmop4a za0.d, z0.d, z30.d + fmop4a za0.d, z0.d, { z16.d-z17.d } + fmop4a za7.d, z0.d, { z16.d-z17.d } + fmop4a za0.d, z14.d, { z16.d-z17.d } + fmop4a za0.d, z0.d, { z30.d-z31.d } + fmop4a za0.d, { z0.d-z1.d }, z16.d + fmop4a za7.d, { z0.d-z1.d }, z16.d + fmop4a za0.d, { z14.d-z15.d }, z16.d + fmop4a za0.d, { z0.d-z1.d }, z30.d + fmop4a za0.d, { z0.d-z1.d }, { z16.d-z17.d } + fmop4a za7.d, { z0.d-z1.d }, { z16.d-z17.d } + fmop4a za0.d, { z14.d-z15.d }, { z16.d-z17.d } + fmop4a za0.d, { z0.d-z1.d }, { z30.d-z31.d } + + fmop4s za0.d, z0.d, z16.d + fmop4s za7.d, z0.d, z16.d + fmop4s za0.d, z14.d, z16.d + fmop4s za0.d, z0.d, z30.d + fmop4s za0.d, z0.d, { z16.d-z17.d } + fmop4s za7.d, z0.d, { z16.d-z17.d } + fmop4s za0.d, z14.d, { z16.d-z17.d } + fmop4s za0.d, z0.d, { z30.d-z31.d } + fmop4s za0.d, { z0.d-z1.d }, z16.d + fmop4s za7.d, { z0.d-z1.d }, z16.d + fmop4s za0.d, { z14.d-z15.d }, z16.d + fmop4s za0.d, { z0.d-z1.d }, z30.d + fmop4s za0.d, { z0.d-z1.d }, { z16.d-z17.d } + fmop4s za7.d, { z0.d-z1.d }, { z16.d-z17.d } + fmop4s za0.d, { z14.d-z15.d }, { z16.d-z17.d } + fmop4s za0.d, { z0.d-z1.d }, { z30.d-z31.d } diff --git a/gas/testsuite/gas/aarch64/sme-mop4-f8f16.d b/gas/testsuite/gas/aarch64/sme-mop4-f8f16.d new file mode 100644 index 00000000000..02b0d3aa03f --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-f8f16.d @@ -0,0 +1,25 @@ +#as: -march=armv8-a+sme-mop4+sme-f8f16 +#objdump: -dr + +.*: file format .* + + +Disassembly of section \.text: + +0+ <\.text>: + *[0-9a-f]+: 80200008 fmop4a za0\.h, z0\.b, z16\.b + *[0-9a-f]+: 80200009 fmop4a za1\.h, z0\.b, z16\.b + *[0-9a-f]+: 802001c8 fmop4a za0\.h, z14\.b, z16\.b + *[0-9a-f]+: 802e0008 fmop4a za0\.h, z0\.b, z30\.b + *[0-9a-f]+: 80300008 fmop4a za0\.h, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 80300009 fmop4a za1\.h, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 803001c8 fmop4a za0\.h, z14\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 803e0008 fmop4a za0\.h, z0\.b, {z30\.b-z31\.b} + *[0-9a-f]+: 80200208 fmop4a za0\.h, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 80200209 fmop4a za1\.h, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 802003c8 fmop4a za0\.h, {z14\.b-z15\.b}, z16\.b + *[0-9a-f]+: 802e0208 fmop4a za0\.h, {z0\.b-z1\.b}, z30\.b + *[0-9a-f]+: 80300208 fmop4a za0\.h, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 80300209 fmop4a za1\.h, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 803003c8 fmop4a za0\.h, {z14\.b-z15\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 803e0208 fmop4a za0\.h, {z0\.b-z1\.b}, {z30\.b-z31\.b} diff --git a/gas/testsuite/gas/aarch64/sme-mop4-f8f16.s b/gas/testsuite/gas/aarch64/sme-mop4-f8f16.s new file mode 100644 index 00000000000..438f7dd4209 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-f8f16.s @@ -0,0 +1,16 @@ + fmop4a za0.h, z0.b, z16.b + fmop4a za1.h, z0.b, z16.b + fmop4a za0.h, z14.b, z16.b + fmop4a za0.h, z0.b, z30.b + fmop4a za0.h, z0.b, { z16.b-z17.b } + fmop4a za1.h, z0.b, { z16.b-z17.b } + fmop4a za0.h, z14.b, { z16.b-z17.b } + fmop4a za0.h, z0.b, { z30.b-z31.b } + fmop4a za0.h, { z0.b-z1.b }, z16.b + fmop4a za1.h, { z0.b-z1.b }, z16.b + fmop4a za0.h, { z14.b-z15.b }, z16.b + fmop4a za0.h, { z0.b-z1.b }, z30.b + fmop4a za0.h, { z0.b-z1.b }, { z16.b-z17.b } + fmop4a za1.h, { z0.b-z1.b }, { z16.b-z17.b } + fmop4a za0.h, { z14.b-z15.b }, { z16.b-z17.b } + fmop4a za0.h, { z0.b-z1.b }, { z30.b-z31.b } diff --git a/gas/testsuite/gas/aarch64/sme-mop4-f8f32.d b/gas/testsuite/gas/aarch64/sme-mop4-f8f32.d new file mode 100644 index 00000000000..0cbe6456588 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-f8f32.d @@ -0,0 +1,25 @@ +#as: -march=armv8-a+sme-mop4+sme-f8f32 +#objdump: -dr + +.*: file format .* + + +Disassembly of section \.text: + +0+ <\.text>: + *[0-9a-f]+: 80200000 fmop4a za0\.s, z0\.b, z16\.b + *[0-9a-f]+: 80200003 fmop4a za3\.s, z0\.b, z16\.b + *[0-9a-f]+: 802001c0 fmop4a za0\.s, z14\.b, z16\.b + *[0-9a-f]+: 802e0000 fmop4a za0\.s, z0\.b, z30\.b + *[0-9a-f]+: 80300000 fmop4a za0\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 80300003 fmop4a za3\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 803001c0 fmop4a za0\.s, z14\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 803e0000 fmop4a za0\.s, z0\.b, {z30\.b-z31\.b} + *[0-9a-f]+: 80200200 fmop4a za0\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 80200203 fmop4a za3\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 802003c0 fmop4a za0\.s, {z14\.b-z15\.b}, z16\.b + *[0-9a-f]+: 802e0200 fmop4a za0\.s, {z0\.b-z1\.b}, z30\.b + *[0-9a-f]+: 80300200 fmop4a za0\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 80300203 fmop4a za3\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 803003c0 fmop4a za0\.s, {z14\.b-z15\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 803e0200 fmop4a za0\.s, {z0\.b-z1\.b}, {z30\.b-z31\.b} diff --git a/gas/testsuite/gas/aarch64/sme-mop4-f8f32.s b/gas/testsuite/gas/aarch64/sme-mop4-f8f32.s new file mode 100644 index 00000000000..78f5c307ec3 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-f8f32.s @@ -0,0 +1,16 @@ + fmop4a za0.s, z0.b, z16.b + fmop4a za3.s, z0.b, z16.b + fmop4a za0.s, z14.b, z16.b + fmop4a za0.s, z0.b, z30.b + fmop4a za0.s, z0.b, { z16.b-z17.b } + fmop4a za3.s, z0.b, { z16.b-z17.b } + fmop4a za0.s, z14.b, { z16.b-z17.b } + fmop4a za0.s, z0.b, { z30.b-z31.b } + fmop4a za0.s, { z0.b-z1.b }, z16.b + fmop4a za3.s, { z0.b-z1.b }, z16.b + fmop4a za0.s, { z14.b-z15.b }, z16.b + fmop4a za0.s, { z0.b-z1.b }, z30.b + fmop4a za0.s, { z0.b-z1.b }, { z16.b-z17.b } + fmop4a za3.s, { z0.b-z1.b }, { z16.b-z17.b } + fmop4a za0.s, { z14.b-z15.b }, { z16.b-z17.b } + fmop4a za0.s, { z0.b-z1.b }, { z30.b-z31.b } diff --git a/gas/testsuite/gas/aarch64/sme-mop4-i16i64.d b/gas/testsuite/gas/aarch64/sme-mop4-i16i64.d new file mode 100644 index 00000000000..93459ef3994 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-i16i64.d @@ -0,0 +1,137 @@ +#as: -march=armv8-a+sme-mop4+sme-i16i64 +#objdump: -dr + +.*: file format .* + + +Disassembly of section \.text: + +0+ <\.text>: + *[0-9a-f]+: a0c00008 smop4a za0\.d, z0\.h, z16\.h + *[0-9a-f]+: a0c0000f smop4a za7\.d, z0\.h, z16\.h + *[0-9a-f]+: a0c001c8 smop4a za0\.d, z14\.h, z16\.h + *[0-9a-f]+: a0ce0008 smop4a za0\.d, z0\.h, z30\.h + *[0-9a-f]+: a0d00008 smop4a za0\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0d0000f smop4a za7\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0d001c8 smop4a za0\.d, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0de0008 smop4a za0\.d, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: a0c00208 smop4a za0\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a0c0020f smop4a za7\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a0c003c8 smop4a za0\.d, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: a0ce0208 smop4a za0\.d, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: a0d00208 smop4a za0\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0d0020f smop4a za7\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0d003c8 smop4a za0\.d, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0de0208 smop4a za0\.d, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: a0c00018 smop4s za0\.d, z0\.h, z16\.h + *[0-9a-f]+: a0c0001f smop4s za7\.d, z0\.h, z16\.h + *[0-9a-f]+: a0c001d8 smop4s za0\.d, z14\.h, z16\.h + *[0-9a-f]+: a0ce0018 smop4s za0\.d, z0\.h, z30\.h + *[0-9a-f]+: a0d00018 smop4s za0\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0d0001f smop4s za7\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0d001d8 smop4s za0\.d, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0de0018 smop4s za0\.d, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: a0c00218 smop4s za0\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a0c0021f smop4s za7\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a0c003d8 smop4s za0\.d, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: a0ce0218 smop4s za0\.d, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: a0d00218 smop4s za0\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0d0021f smop4s za7\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0d003d8 smop4s za0\.d, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0de0218 smop4s za0\.d, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: a0e00008 sumop4a za0\.d, z0\.h, z16\.h + *[0-9a-f]+: a0e0000f sumop4a za7\.d, z0\.h, z16\.h + *[0-9a-f]+: a0e001c8 sumop4a za0\.d, z14\.h, z16\.h + *[0-9a-f]+: a0ee0008 sumop4a za0\.d, z0\.h, z30\.h + *[0-9a-f]+: a0f00008 sumop4a za0\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0f0000f sumop4a za7\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0f001c8 sumop4a za0\.d, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0fe0008 sumop4a za0\.d, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: a0e00208 sumop4a za0\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a0e0020f sumop4a za7\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a0e003c8 sumop4a za0\.d, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: a0ee0208 sumop4a za0\.d, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: a0f00208 sumop4a za0\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0f0020f sumop4a za7\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0f003c8 sumop4a za0\.d, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0fe0208 sumop4a za0\.d, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: a0e00018 sumop4s za0\.d, z0\.h, z16\.h + *[0-9a-f]+: a0e0001f sumop4s za7\.d, z0\.h, z16\.h + *[0-9a-f]+: a0e001d8 sumop4s za0\.d, z14\.h, z16\.h + *[0-9a-f]+: a0ee0018 sumop4s za0\.d, z0\.h, z30\.h + *[0-9a-f]+: a0f00018 sumop4s za0\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0f0001f sumop4s za7\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0f001d8 sumop4s za0\.d, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a0fe0018 sumop4s za0\.d, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: a0e00218 sumop4s za0\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a0e0021f sumop4s za7\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a0e003d8 sumop4s za0\.d, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: a0ee0218 sumop4s za0\.d, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: a0f00218 sumop4s za0\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0f0021f sumop4s za7\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0f003d8 sumop4s za0\.d, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a0fe0218 sumop4s za0\.d, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: a1e00008 umop4a za0\.d, z0\.h, z16\.h + *[0-9a-f]+: a1e0000f umop4a za7\.d, z0\.h, z16\.h + *[0-9a-f]+: a1e001c8 umop4a za0\.d, z14\.h, z16\.h + *[0-9a-f]+: a1ee0008 umop4a za0\.d, z0\.h, z30\.h + *[0-9a-f]+: a1f00008 umop4a za0\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1f0000f umop4a za7\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1f001c8 umop4a za0\.d, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1fe0008 umop4a za0\.d, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: a1e00208 umop4a za0\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a1e0020f umop4a za7\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a1e003c8 umop4a za0\.d, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: a1ee0208 umop4a za0\.d, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: a1f00208 umop4a za0\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1f0020f umop4a za7\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1f003c8 umop4a za0\.d, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1fe0208 umop4a za0\.d, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: a1e00018 umop4s za0\.d, z0\.h, z16\.h + *[0-9a-f]+: a1e0001f umop4s za7\.d, z0\.h, z16\.h + *[0-9a-f]+: a1e001d8 umop4s za0\.d, z14\.h, z16\.h + *[0-9a-f]+: a1ee0018 umop4s za0\.d, z0\.h, z30\.h + *[0-9a-f]+: a1f00018 umop4s za0\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1f0001f umop4s za7\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1f001d8 umop4s za0\.d, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1fe0018 umop4s za0\.d, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: a1e00218 umop4s za0\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a1e0021f umop4s za7\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a1e003d8 umop4s za0\.d, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: a1ee0218 umop4s za0\.d, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: a1f00218 umop4s za0\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1f0021f umop4s za7\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1f003d8 umop4s za0\.d, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1fe0218 umop4s za0\.d, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: a1c00008 usmop4a za0\.d, z0\.h, z16\.h + *[0-9a-f]+: a1c0000f usmop4a za7\.d, z0\.h, z16\.h + *[0-9a-f]+: a1c001c8 usmop4a za0\.d, z14\.h, z16\.h + *[0-9a-f]+: a1ce0008 usmop4a za0\.d, z0\.h, z30\.h + *[0-9a-f]+: a1d00008 usmop4a za0\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1d0000f usmop4a za7\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1d001c8 usmop4a za0\.d, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1de0008 usmop4a za0\.d, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: a1c00208 usmop4a za0\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a1c0020f usmop4a za7\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a1c003c8 usmop4a za0\.d, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: a1ce0208 usmop4a za0\.d, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: a1d00208 usmop4a za0\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1d0020f usmop4a za7\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1d003c8 usmop4a za0\.d, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1de0208 usmop4a za0\.d, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: a1c00018 usmop4s za0\.d, z0\.h, z16\.h + *[0-9a-f]+: a1c0001f usmop4s za7\.d, z0\.h, z16\.h + *[0-9a-f]+: a1c001d8 usmop4s za0\.d, z14\.h, z16\.h + *[0-9a-f]+: a1ce0018 usmop4s za0\.d, z0\.h, z30\.h + *[0-9a-f]+: a1d00018 usmop4s za0\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1d0001f usmop4s za7\.d, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1d001d8 usmop4s za0\.d, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: a1de0018 usmop4s za0\.d, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: a1c00218 usmop4s za0\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a1c0021f usmop4s za7\.d, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: a1c003d8 usmop4s za0\.d, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: a1ce0218 usmop4s za0\.d, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: a1d00218 usmop4s za0\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1d0021f usmop4s za7\.d, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1d003d8 usmop4s za0\.d, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: a1de0218 usmop4s za0\.d, {z0\.h-z1\.h}, {z30\.h-z31\.h} diff --git a/gas/testsuite/gas/aarch64/sme-mop4-i16i64.s b/gas/testsuite/gas/aarch64/sme-mop4-i16i64.s new file mode 100644 index 00000000000..cb6a36bf4bf --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-i16i64.s @@ -0,0 +1,135 @@ + smop4a za0.d, z0.h, z16.h + smop4a za7.d, z0.h, z16.h + smop4a za0.d, z14.h, z16.h + smop4a za0.d, z0.h, z30.h + smop4a za0.d, z0.h, { z16.h-z17.h } + smop4a za7.d, z0.h, { z16.h-z17.h } + smop4a za0.d, z14.h, { z16.h-z17.h } + smop4a za0.d, z0.h, { z30.h-z31.h } + smop4a za0.d, { z0.h-z1.h }, z16.h + smop4a za7.d, { z0.h-z1.h }, z16.h + smop4a za0.d, { z14.h-z15.h }, z16.h + smop4a za0.d, { z0.h-z1.h }, z30.h + smop4a za0.d, { z0.h-z1.h }, { z16.h-z17.h } + smop4a za7.d, { z0.h-z1.h }, { z16.h-z17.h } + smop4a za0.d, { z14.h-z15.h }, { z16.h-z17.h } + smop4a za0.d, { z0.h-z1.h }, { z30.h-z31.h } + + smop4s za0.d, z0.h, z16.h + smop4s za7.d, z0.h, z16.h + smop4s za0.d, z14.h, z16.h + smop4s za0.d, z0.h, z30.h + smop4s za0.d, z0.h, { z16.h-z17.h } + smop4s za7.d, z0.h, { z16.h-z17.h } + smop4s za0.d, z14.h, { z16.h-z17.h } + smop4s za0.d, z0.h, { z30.h-z31.h } + smop4s za0.d, { z0.h-z1.h }, z16.h + smop4s za7.d, { z0.h-z1.h }, z16.h + smop4s za0.d, { z14.h-z15.h }, z16.h + smop4s za0.d, { z0.h-z1.h }, z30.h + smop4s za0.d, { z0.h-z1.h }, { z16.h-z17.h } + smop4s za7.d, { z0.h-z1.h }, { z16.h-z17.h } + smop4s za0.d, { z14.h-z15.h }, { z16.h-z17.h } + smop4s za0.d, { z0.h-z1.h }, { z30.h-z31.h } + + sumop4a za0.d, z0.h, z16.h + sumop4a za7.d, z0.h, z16.h + sumop4a za0.d, z14.h, z16.h + sumop4a za0.d, z0.h, z30.h + sumop4a za0.d, z0.h, { z16.h-z17.h } + sumop4a za7.d, z0.h, { z16.h-z17.h } + sumop4a za0.d, z14.h, { z16.h-z17.h } + sumop4a za0.d, z0.h, { z30.h-z31.h } + sumop4a za0.d, { z0.h-z1.h }, z16.h + sumop4a za7.d, { z0.h-z1.h }, z16.h + sumop4a za0.d, { z14.h-z15.h }, z16.h + sumop4a za0.d, { z0.h-z1.h }, z30.h + sumop4a za0.d, { z0.h-z1.h }, { z16.h-z17.h } + sumop4a za7.d, { z0.h-z1.h }, { z16.h-z17.h } + sumop4a za0.d, { z14.h-z15.h }, { z16.h-z17.h } + sumop4a za0.d, { z0.h-z1.h }, { z30.h-z31.h } + + sumop4s za0.d, z0.h, z16.h + sumop4s za7.d, z0.h, z16.h + sumop4s za0.d, z14.h, z16.h + sumop4s za0.d, z0.h, z30.h + sumop4s za0.d, z0.h, { z16.h-z17.h } + sumop4s za7.d, z0.h, { z16.h-z17.h } + sumop4s za0.d, z14.h, { z16.h-z17.h } + sumop4s za0.d, z0.h, { z30.h-z31.h } + sumop4s za0.d, { z0.h-z1.h }, z16.h + sumop4s za7.d, { z0.h-z1.h }, z16.h + sumop4s za0.d, { z14.h-z15.h }, z16.h + sumop4s za0.d, { z0.h-z1.h }, z30.h + sumop4s za0.d, { z0.h-z1.h }, { z16.h-z17.h } + sumop4s za7.d, { z0.h-z1.h }, { z16.h-z17.h } + sumop4s za0.d, { z14.h-z15.h }, { z16.h-z17.h } + sumop4s za0.d, { z0.h-z1.h }, { z30.h-z31.h } + + umop4a za0.d, z0.h, z16.h + umop4a za7.d, z0.h, z16.h + umop4a za0.d, z14.h, z16.h + umop4a za0.d, z0.h, z30.h + umop4a za0.d, z0.h, { z16.h-z17.h } + umop4a za7.d, z0.h, { z16.h-z17.h } + umop4a za0.d, z14.h, { z16.h-z17.h } + umop4a za0.d, z0.h, { z30.h-z31.h } + umop4a za0.d, { z0.h-z1.h }, z16.h + umop4a za7.d, { z0.h-z1.h }, z16.h + umop4a za0.d, { z14.h-z15.h }, z16.h + umop4a za0.d, { z0.h-z1.h }, z30.h + umop4a za0.d, { z0.h-z1.h }, { z16.h-z17.h } + umop4a za7.d, { z0.h-z1.h }, { z16.h-z17.h } + umop4a za0.d, { z14.h-z15.h }, { z16.h-z17.h } + umop4a za0.d, { z0.h-z1.h }, { z30.h-z31.h } + + umop4s za0.d, z0.h, z16.h + umop4s za7.d, z0.h, z16.h + umop4s za0.d, z14.h, z16.h + umop4s za0.d, z0.h, z30.h + umop4s za0.d, z0.h, { z16.h-z17.h } + umop4s za7.d, z0.h, { z16.h-z17.h } + umop4s za0.d, z14.h, { z16.h-z17.h } + umop4s za0.d, z0.h, { z30.h-z31.h } + umop4s za0.d, { z0.h-z1.h }, z16.h + umop4s za7.d, { z0.h-z1.h }, z16.h + umop4s za0.d, { z14.h-z15.h }, z16.h + umop4s za0.d, { z0.h-z1.h }, z30.h + umop4s za0.d, { z0.h-z1.h }, { z16.h-z17.h } + umop4s za7.d, { z0.h-z1.h }, { z16.h-z17.h } + umop4s za0.d, { z14.h-z15.h }, { z16.h-z17.h } + umop4s za0.d, { z0.h-z1.h }, { z30.h-z31.h } + + usmop4a za0.d, z0.h, z16.h + usmop4a za7.d, z0.h, z16.h + usmop4a za0.d, z14.h, z16.h + usmop4a za0.d, z0.h, z30.h + usmop4a za0.d, z0.h, { z16.h-z17.h } + usmop4a za7.d, z0.h, { z16.h-z17.h } + usmop4a za0.d, z14.h, { z16.h-z17.h } + usmop4a za0.d, z0.h, { z30.h-z31.h } + usmop4a za0.d, { z0.h-z1.h }, z16.h + usmop4a za7.d, { z0.h-z1.h }, z16.h + usmop4a za0.d, { z14.h-z15.h }, z16.h + usmop4a za0.d, { z0.h-z1.h }, z30.h + usmop4a za0.d, { z0.h-z1.h }, { z16.h-z17.h } + usmop4a za7.d, { z0.h-z1.h }, { z16.h-z17.h } + usmop4a za0.d, { z14.h-z15.h }, { z16.h-z17.h } + usmop4a za0.d, { z0.h-z1.h }, { z30.h-z31.h } + + usmop4s za0.d, z0.h, z16.h + usmop4s za7.d, z0.h, z16.h + usmop4s za0.d, z14.h, z16.h + usmop4s za0.d, z0.h, z30.h + usmop4s za0.d, z0.h, { z16.h-z17.h } + usmop4s za7.d, z0.h, { z16.h-z17.h } + usmop4s za0.d, z14.h, { z16.h-z17.h } + usmop4s za0.d, z0.h, { z30.h-z31.h } + usmop4s za0.d, { z0.h-z1.h }, z16.h + usmop4s za7.d, { z0.h-z1.h }, z16.h + usmop4s za0.d, { z14.h-z15.h }, z16.h + usmop4s za0.d, { z0.h-z1.h }, z30.h + usmop4s za0.d, { z0.h-z1.h }, { z16.h-z17.h } + usmop4s za7.d, { z0.h-z1.h }, { z16.h-z17.h } + usmop4s za0.d, { z14.h-z15.h }, { z16.h-z17.h } + usmop4s za0.d, { z0.h-z1.h }, { z30.h-z31.h } diff --git a/gas/testsuite/gas/aarch64/sme-mop4-invalid.d b/gas/testsuite/gas/aarch64/sme-mop4-invalid.d new file mode 100644 index 00000000000..54085c9016c --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-invalid.d @@ -0,0 +1,2 @@ +#as: -march=armv8-a+sme-mop4 +#error_output: sme-mop4-invalid.l diff --git a/gas/testsuite/gas/aarch64/sme-mop4-invalid.l b/gas/testsuite/gas/aarch64/sme-mop4-invalid.l new file mode 100644 index 00000000000..1436b0a18ea --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-invalid.l @@ -0,0 +1,15 @@ +[^:]*: Assembler messages: +[^:]*:\d+: Error: register out of range at operand 2 -- `bfmop4a za0\.s,z1\.h,z16\.h' +[^:]*:\d+: Error: register out of range at operand 2 -- `fmop4a za0\.s,z15\.h,z16\.h' +[^:]*:\d+: Error: register out of range at operand 2 -- `bfmop4a za0\.s,z16\.h,{z16\.h-z17\.h}' +[^:]*:\d+: Error: register out of range at operand 2 -- `fmop4a za0\.s,z17\.h,{z16\.h-z17\.h}' +[^:]*:\d+: Error: start register out of range at operand 2 -- `bfmop4a za0\.s,{z1\.h-z2\.h},z16\.h' +[^:]*:\d+: Error: start register out of range at operand 2 -- `fmop4a za0\.s,{z15\.h-z16\.h},z16\.h' +[^:]*:\d+: Error: start register out of range at operand 2 -- `bfmop4a za0\.s,{z16\.h-z17\.h},{z16\.h-z17\.h}' +[^:]*:\d+: Error: start register out of range at operand 2 -- `fmop4a za0\.s,{z17\.h-z18\.h},{z16\.h-z17\.h}' +[^:]*:\d+: Error: register out of range at operand 3 -- `smop4a za0\.s,z0\.h,z14\.h' +[^:]*:\d+: Error: register out of range at operand 3 -- `smop4a za0\.s,z0\.b,z15\.b' +[^:]*:\d+: Error: register out of range at operand 3 -- `umop4a za0\.s,{z0\.h-z1\.h},z17\.h' +[^:]*:\d+: Error: start register out of range at operand 3 -- `smop4a za0\.s,z0\.h,{z14\.h-z15\.h}' +[^:]*:\d+: Error: start register out of range at operand 3 -- `smop4a za0\.s,z0\.b,{z15\.b-z16\.b}' +[^:]*:\d+: Error: start register out of range at operand 3 -- `umop4a za0\.s,{z0\.h-z1\.h},{z17\.h-z18\.h}' diff --git a/gas/testsuite/gas/aarch64/sme-mop4-invalid.s b/gas/testsuite/gas/aarch64/sme-mop4-invalid.s new file mode 100644 index 00000000000..d883908e7f1 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4-invalid.s @@ -0,0 +1,14 @@ + bfmop4a za0.s, z1.h, z16.h + fmop4a za0.s, z15.h, z16.h + bfmop4a za0.s, z16.h, { z16.h-z17.h } + fmop4a za0.s, z17.h, { z16.h-z17.h } + bfmop4a za0.s, { z1.h-z2.h }, z16.h + fmop4a za0.s, { z15.h-z16.h }, z16.h + bfmop4a za0.s, { z16.h-z17.h }, { z16.h-z17.h } + fmop4a za0.s, { z17.h-z18.h }, { z16.h-z17.h } + smop4a za0.s, z0.h, z14.h + smop4a za0.s, z0.b, z15.b + umop4a za0.s, { z0.h-z1.h }, z17.h + smop4a za0.s, z0.h, { z14.h-z15.h } + smop4a za0.s, z0.b, { z15.b-z16.b } + umop4a za0.s, { z0.h-z1.h }, { z17.h-z18.h } diff --git a/gas/testsuite/gas/aarch64/sme-mop4.d b/gas/testsuite/gas/aarch64/sme-mop4.d new file mode 100644 index 00000000000..442c53bc908 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4.d @@ -0,0 +1,297 @@ +#as: -march=armv8-a+sme-mop4 +#objdump: -dr + +.*: file format .* + + +Disassembly of section \.text: + +0+ <\.text>: + *[0-9a-f]+: 81000000 bfmop4a za0\.s, z0\.h, z16\.h + *[0-9a-f]+: 81000003 bfmop4a za3\.s, z0\.h, z16\.h + *[0-9a-f]+: 810001c0 bfmop4a za0\.s, z14\.h, z16\.h + *[0-9a-f]+: 810e0000 bfmop4a za0\.s, z0\.h, z30\.h + *[0-9a-f]+: 81100000 bfmop4a za0\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 81100003 bfmop4a za3\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811001c0 bfmop4a za0\.s, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811e0000 bfmop4a za0\.s, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 81000200 bfmop4a za0\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 81000203 bfmop4a za3\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 810003c0 bfmop4a za0\.s, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 810e0200 bfmop4a za0\.s, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 81100200 bfmop4a za0\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 81100203 bfmop4a za3\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811003c0 bfmop4a za0\.s, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811e0200 bfmop4a za0\.s, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: 81000010 bfmop4s za0\.s, z0\.h, z16\.h + *[0-9a-f]+: 81000013 bfmop4s za3\.s, z0\.h, z16\.h + *[0-9a-f]+: 810001d0 bfmop4s za0\.s, z14\.h, z16\.h + *[0-9a-f]+: 810e0010 bfmop4s za0\.s, z0\.h, z30\.h + *[0-9a-f]+: 81100010 bfmop4s za0\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 81100013 bfmop4s za3\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811001d0 bfmop4s za0\.s, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811e0010 bfmop4s za0\.s, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 81000210 bfmop4s za0\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 81000213 bfmop4s za3\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 810003d0 bfmop4s za0\.s, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 810e0210 bfmop4s za0\.s, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 81100210 bfmop4s za0\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 81100213 bfmop4s za3\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811003d0 bfmop4s za0\.s, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811e0210 bfmop4s za0\.s, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: 80000000 fmop4a za0\.s, z0\.s, z16\.s + *[0-9a-f]+: 80000003 fmop4a za3\.s, z0\.s, z16\.s + *[0-9a-f]+: 800001c0 fmop4a za0\.s, z14\.s, z16\.s + *[0-9a-f]+: 800e0000 fmop4a za0\.s, z0\.s, z30\.s + *[0-9a-f]+: 80100000 fmop4a za0\.s, z0\.s, {z16\.s-z17\.s} + *[0-9a-f]+: 80100003 fmop4a za3\.s, z0\.s, {z16\.s-z17\.s} + *[0-9a-f]+: 801001c0 fmop4a za0\.s, z14\.s, {z16\.s-z17\.s} + *[0-9a-f]+: 801e0000 fmop4a za0\.s, z0\.s, {z30\.s-z31\.s} + *[0-9a-f]+: 80000200 fmop4a za0\.s, {z0\.s-z1\.s}, z16\.s + *[0-9a-f]+: 80000203 fmop4a za3\.s, {z0\.s-z1\.s}, z16\.s + *[0-9a-f]+: 800003c0 fmop4a za0\.s, {z14\.s-z15\.s}, z16\.s + *[0-9a-f]+: 800e0200 fmop4a za0\.s, {z0\.s-z1\.s}, z30\.s + *[0-9a-f]+: 80100200 fmop4a za0\.s, {z0\.s-z1\.s}, {z16\.s-z17\.s} + *[0-9a-f]+: 80100203 fmop4a za3\.s, {z0\.s-z1\.s}, {z16\.s-z17\.s} + *[0-9a-f]+: 801003c0 fmop4a za0\.s, {z14\.s-z15\.s}, {z16\.s-z17\.s} + *[0-9a-f]+: 801e0200 fmop4a za0\.s, {z0\.s-z1\.s}, {z30\.s-z31\.s} + *[0-9a-f]+: 81200000 fmop4a za0\.s, z0\.h, z16\.h + *[0-9a-f]+: 81200003 fmop4a za3\.s, z0\.h, z16\.h + *[0-9a-f]+: 812001c0 fmop4a za0\.s, z14\.h, z16\.h + *[0-9a-f]+: 812e0000 fmop4a za0\.s, z0\.h, z30\.h + *[0-9a-f]+: 81300000 fmop4a za0\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 81300003 fmop4a za3\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 813001c0 fmop4a za0\.s, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 813e0000 fmop4a za0\.s, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 81200200 fmop4a za0\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 81200203 fmop4a za3\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 812003c0 fmop4a za0\.s, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 812e0200 fmop4a za0\.s, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 81300200 fmop4a za0\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 81300203 fmop4a za3\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 813003c0 fmop4a za0\.s, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 813e0200 fmop4a za0\.s, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: 80000010 fmop4s za0\.s, z0\.s, z16\.s + *[0-9a-f]+: 80000013 fmop4s za3\.s, z0\.s, z16\.s + *[0-9a-f]+: 800001d0 fmop4s za0\.s, z14\.s, z16\.s + *[0-9a-f]+: 800e0010 fmop4s za0\.s, z0\.s, z30\.s + *[0-9a-f]+: 80100010 fmop4s za0\.s, z0\.s, {z16\.s-z17\.s} + *[0-9a-f]+: 80100013 fmop4s za3\.s, z0\.s, {z16\.s-z17\.s} + *[0-9a-f]+: 801001d0 fmop4s za0\.s, z14\.s, {z16\.s-z17\.s} + *[0-9a-f]+: 801e0010 fmop4s za0\.s, z0\.s, {z30\.s-z31\.s} + *[0-9a-f]+: 80000210 fmop4s za0\.s, {z0\.s-z1\.s}, z16\.s + *[0-9a-f]+: 80000213 fmop4s za3\.s, {z0\.s-z1\.s}, z16\.s + *[0-9a-f]+: 800003d0 fmop4s za0\.s, {z14\.s-z15\.s}, z16\.s + *[0-9a-f]+: 800e0210 fmop4s za0\.s, {z0\.s-z1\.s}, z30\.s + *[0-9a-f]+: 80100210 fmop4s za0\.s, {z0\.s-z1\.s}, {z16\.s-z17\.s} + *[0-9a-f]+: 80100213 fmop4s za3\.s, {z0\.s-z1\.s}, {z16\.s-z17\.s} + *[0-9a-f]+: 801003d0 fmop4s za0\.s, {z14\.s-z15\.s}, {z16\.s-z17\.s} + *[0-9a-f]+: 801e0210 fmop4s za0\.s, {z0\.s-z1\.s}, {z30\.s-z31\.s} + *[0-9a-f]+: 81200010 fmop4s za0\.s, z0\.h, z16\.h + *[0-9a-f]+: 81200013 fmop4s za3\.s, z0\.h, z16\.h + *[0-9a-f]+: 812001d0 fmop4s za0\.s, z14\.h, z16\.h + *[0-9a-f]+: 812e0010 fmop4s za0\.s, z0\.h, z30\.h + *[0-9a-f]+: 81300010 fmop4s za0\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 81300013 fmop4s za3\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 813001d0 fmop4s za0\.s, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 813e0010 fmop4s za0\.s, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 81200210 fmop4s za0\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 81200213 fmop4s za3\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 812003d0 fmop4s za0\.s, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 812e0210 fmop4s za0\.s, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 81300210 fmop4s za0\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 81300213 fmop4s za3\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 813003d0 fmop4s za0\.s, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 813e0210 fmop4s za0\.s, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: 80008008 smop4a za0\.s, z0\.h, z16\.h + *[0-9a-f]+: 8000800b smop4a za3\.s, z0\.h, z16\.h + *[0-9a-f]+: 800081c8 smop4a za0\.s, z14\.h, z16\.h + *[0-9a-f]+: 800e8008 smop4a za0\.s, z0\.h, z30\.h + *[0-9a-f]+: 80108008 smop4a za0\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 8010800b smop4a za3\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 801081c8 smop4a za0\.s, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 801e8008 smop4a za0\.s, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 80008208 smop4a za0\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 8000820b smop4a za3\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 800083c8 smop4a za0\.s, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 800e8208 smop4a za0\.s, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 80108208 smop4a za0\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 8010820b smop4a za3\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 801083c8 smop4a za0\.s, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 801e8208 smop4a za0\.s, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: 80008000 smop4a za0\.s, z0\.b, z16\.b + *[0-9a-f]+: 80008003 smop4a za3\.s, z0\.b, z16\.b + *[0-9a-f]+: 800081c0 smop4a za0\.s, z14\.b, z16\.b + *[0-9a-f]+: 800e8000 smop4a za0\.s, z0\.b, z30\.b + *[0-9a-f]+: 80108000 smop4a za0\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 80108003 smop4a za3\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 801081c0 smop4a za0\.s, z14\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 801e8000 smop4a za0\.s, z0\.b, {z30\.b-z31\.b} + *[0-9a-f]+: 80008200 smop4a za0\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 80008203 smop4a za3\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 800083c0 smop4a za0\.s, {z14\.b-z15\.b}, z16\.b + *[0-9a-f]+: 800e8200 smop4a za0\.s, {z0\.b-z1\.b}, z30\.b + *[0-9a-f]+: 80108200 smop4a za0\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 80108203 smop4a za3\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 801083c0 smop4a za0\.s, {z14\.b-z15\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 801e8200 smop4a za0\.s, {z0\.b-z1\.b}, {z30\.b-z31\.b} + *[0-9a-f]+: 80008018 smop4s za0\.s, z0\.h, z16\.h + *[0-9a-f]+: 8000801b smop4s za3\.s, z0\.h, z16\.h + *[0-9a-f]+: 800081d8 smop4s za0\.s, z14\.h, z16\.h + *[0-9a-f]+: 800e8018 smop4s za0\.s, z0\.h, z30\.h + *[0-9a-f]+: 80108018 smop4s za0\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 8010801b smop4s za3\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 801081d8 smop4s za0\.s, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 801e8018 smop4s za0\.s, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 80008218 smop4s za0\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 8000821b smop4s za3\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 800083d8 smop4s za0\.s, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 800e8218 smop4s za0\.s, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 80108218 smop4s za0\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 8010821b smop4s za3\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 801083d8 smop4s za0\.s, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 801e8218 smop4s za0\.s, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: 80008010 smop4s za0\.s, z0\.b, z16\.b + *[0-9a-f]+: 80008013 smop4s za3\.s, z0\.b, z16\.b + *[0-9a-f]+: 800081d0 smop4s za0\.s, z14\.b, z16\.b + *[0-9a-f]+: 800e8010 smop4s za0\.s, z0\.b, z30\.b + *[0-9a-f]+: 80108010 smop4s za0\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 80108013 smop4s za3\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 801081d0 smop4s za0\.s, z14\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 801e8010 smop4s za0\.s, z0\.b, {z30\.b-z31\.b} + *[0-9a-f]+: 80008210 smop4s za0\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 80008213 smop4s za3\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 800083d0 smop4s za0\.s, {z14\.b-z15\.b}, z16\.b + *[0-9a-f]+: 800e8210 smop4s za0\.s, {z0\.b-z1\.b}, z30\.b + *[0-9a-f]+: 80108210 smop4s za0\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 80108213 smop4s za3\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 801083d0 smop4s za0\.s, {z14\.b-z15\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 801e8210 smop4s za0\.s, {z0\.b-z1\.b}, {z30\.b-z31\.b} + *[0-9a-f]+: 80208000 sumop4a za0\.s, z0\.b, z16\.b + *[0-9a-f]+: 80208003 sumop4a za3\.s, z0\.b, z16\.b + *[0-9a-f]+: 802081c0 sumop4a za0\.s, z14\.b, z16\.b + *[0-9a-f]+: 802e8000 sumop4a za0\.s, z0\.b, z30\.b + *[0-9a-f]+: 80308000 sumop4a za0\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 80308003 sumop4a za3\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 803081c0 sumop4a za0\.s, z14\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 803e8000 sumop4a za0\.s, z0\.b, {z30\.b-z31\.b} + *[0-9a-f]+: 80208200 sumop4a za0\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 80208203 sumop4a za3\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 802083c0 sumop4a za0\.s, {z14\.b-z15\.b}, z16\.b + *[0-9a-f]+: 802e8200 sumop4a za0\.s, {z0\.b-z1\.b}, z30\.b + *[0-9a-f]+: 80308200 sumop4a za0\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 80308203 sumop4a za3\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 803083c0 sumop4a za0\.s, {z14\.b-z15\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 803e8200 sumop4a za0\.s, {z0\.b-z1\.b}, {z30\.b-z31\.b} + *[0-9a-f]+: 80208010 sumop4s za0\.s, z0\.b, z16\.b + *[0-9a-f]+: 80208013 sumop4s za3\.s, z0\.b, z16\.b + *[0-9a-f]+: 802081d0 sumop4s za0\.s, z14\.b, z16\.b + *[0-9a-f]+: 802e8010 sumop4s za0\.s, z0\.b, z30\.b + *[0-9a-f]+: 80308010 sumop4s za0\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 80308013 sumop4s za3\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 803081d0 sumop4s za0\.s, z14\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 803e8010 sumop4s za0\.s, z0\.b, {z30\.b-z31\.b} + *[0-9a-f]+: 80208210 sumop4s za0\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 80208213 sumop4s za3\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 802083d0 sumop4s za0\.s, {z14\.b-z15\.b}, z16\.b + *[0-9a-f]+: 802e8210 sumop4s za0\.s, {z0\.b-z1\.b}, z30\.b + *[0-9a-f]+: 80308210 sumop4s za0\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 80308213 sumop4s za3\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 803083d0 sumop4s za0\.s, {z14\.b-z15\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 803e8210 sumop4s za0\.s, {z0\.b-z1\.b}, {z30\.b-z31\.b} + *[0-9a-f]+: 81008008 umop4a za0\.s, z0\.h, z16\.h + *[0-9a-f]+: 8100800b umop4a za3\.s, z0\.h, z16\.h + *[0-9a-f]+: 810081c8 umop4a za0\.s, z14\.h, z16\.h + *[0-9a-f]+: 810e8008 umop4a za0\.s, z0\.h, z30\.h + *[0-9a-f]+: 81108008 umop4a za0\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 8110800b umop4a za3\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811081c8 umop4a za0\.s, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811e8008 umop4a za0\.s, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 81008208 umop4a za0\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 8100820b umop4a za3\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 810083c8 umop4a za0\.s, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 810e8208 umop4a za0\.s, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 81108208 umop4a za0\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 8110820b umop4a za3\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811083c8 umop4a za0\.s, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811e8208 umop4a za0\.s, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: 81208000 umop4a za0\.s, z0\.b, z16\.b + *[0-9a-f]+: 81208003 umop4a za3\.s, z0\.b, z16\.b + *[0-9a-f]+: 812081c0 umop4a za0\.s, z14\.b, z16\.b + *[0-9a-f]+: 812e8000 umop4a za0\.s, z0\.b, z30\.b + *[0-9a-f]+: 81308000 umop4a za0\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 81308003 umop4a za3\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 813081c0 umop4a za0\.s, z14\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 813e8000 umop4a za0\.s, z0\.b, {z30\.b-z31\.b} + *[0-9a-f]+: 81208200 umop4a za0\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 81208203 umop4a za3\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 812083c0 umop4a za0\.s, {z14\.b-z15\.b}, z16\.b + *[0-9a-f]+: 812e8200 umop4a za0\.s, {z0\.b-z1\.b}, z30\.b + *[0-9a-f]+: 81308200 umop4a za0\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 81308203 umop4a za3\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 813083c0 umop4a za0\.s, {z14\.b-z15\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 813e8200 umop4a za0\.s, {z0\.b-z1\.b}, {z30\.b-z31\.b} + *[0-9a-f]+: 81008018 umop4s za0\.s, z0\.h, z16\.h + *[0-9a-f]+: 8100801b umop4s za3\.s, z0\.h, z16\.h + *[0-9a-f]+: 810081d8 umop4s za0\.s, z14\.h, z16\.h + *[0-9a-f]+: 810e8018 umop4s za0\.s, z0\.h, z30\.h + *[0-9a-f]+: 81108018 umop4s za0\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 8110801b umop4s za3\.s, z0\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811081d8 umop4s za0\.s, z14\.h, {z16\.h-z17\.h} + *[0-9a-f]+: 811e8018 umop4s za0\.s, z0\.h, {z30\.h-z31\.h} + *[0-9a-f]+: 81008218 umop4s za0\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 8100821b umop4s za3\.s, {z0\.h-z1\.h}, z16\.h + *[0-9a-f]+: 810083d8 umop4s za0\.s, {z14\.h-z15\.h}, z16\.h + *[0-9a-f]+: 810e8218 umop4s za0\.s, {z0\.h-z1\.h}, z30\.h + *[0-9a-f]+: 81108218 umop4s za0\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 8110821b umop4s za3\.s, {z0\.h-z1\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811083d8 umop4s za0\.s, {z14\.h-z15\.h}, {z16\.h-z17\.h} + *[0-9a-f]+: 811e8218 umop4s za0\.s, {z0\.h-z1\.h}, {z30\.h-z31\.h} + *[0-9a-f]+: 81208010 umop4s za0\.s, z0\.b, z16\.b + *[0-9a-f]+: 81208013 umop4s za3\.s, z0\.b, z16\.b + *[0-9a-f]+: 812081d0 umop4s za0\.s, z14\.b, z16\.b + *[0-9a-f]+: 812e8010 umop4s za0\.s, z0\.b, z30\.b + *[0-9a-f]+: 81308010 umop4s za0\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 81308013 umop4s za3\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 813081d0 umop4s za0\.s, z14\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 813e8010 umop4s za0\.s, z0\.b, {z30\.b-z31\.b} + *[0-9a-f]+: 81208210 umop4s za0\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 81208213 umop4s za3\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 812083d0 umop4s za0\.s, {z14\.b-z15\.b}, z16\.b + *[0-9a-f]+: 812e8210 umop4s za0\.s, {z0\.b-z1\.b}, z30\.b + *[0-9a-f]+: 81308210 umop4s za0\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 81308213 umop4s za3\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 813083d0 umop4s za0\.s, {z14\.b-z15\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 813e8210 umop4s za0\.s, {z0\.b-z1\.b}, {z30\.b-z31\.b} + *[0-9a-f]+: 81008000 usmop4a za0\.s, z0\.b, z16\.b + *[0-9a-f]+: 81008003 usmop4a za3\.s, z0\.b, z16\.b + *[0-9a-f]+: 810081c0 usmop4a za0\.s, z14\.b, z16\.b + *[0-9a-f]+: 810e8000 usmop4a za0\.s, z0\.b, z30\.b + *[0-9a-f]+: 81108000 usmop4a za0\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 81108003 usmop4a za3\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 811081c0 usmop4a za0\.s, z14\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 811e8000 usmop4a za0\.s, z0\.b, {z30\.b-z31\.b} + *[0-9a-f]+: 81008200 usmop4a za0\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 81008203 usmop4a za3\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 810083c0 usmop4a za0\.s, {z14\.b-z15\.b}, z16\.b + *[0-9a-f]+: 810e8200 usmop4a za0\.s, {z0\.b-z1\.b}, z30\.b + *[0-9a-f]+: 81108200 usmop4a za0\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 81108203 usmop4a za3\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 811083c0 usmop4a za0\.s, {z14\.b-z15\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 811e8200 usmop4a za0\.s, {z0\.b-z1\.b}, {z30\.b-z31\.b} + *[0-9a-f]+: 81008010 usmop4s za0\.s, z0\.b, z16\.b + *[0-9a-f]+: 81008013 usmop4s za3\.s, z0\.b, z16\.b + *[0-9a-f]+: 810081d0 usmop4s za0\.s, z14\.b, z16\.b + *[0-9a-f]+: 810e8010 usmop4s za0\.s, z0\.b, z30\.b + *[0-9a-f]+: 81108010 usmop4s za0\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 81108013 usmop4s za3\.s, z0\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 811081d0 usmop4s za0\.s, z14\.b, {z16\.b-z17\.b} + *[0-9a-f]+: 811e8010 usmop4s za0\.s, z0\.b, {z30\.b-z31\.b} + *[0-9a-f]+: 81008210 usmop4s za0\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 81008213 usmop4s za3\.s, {z0\.b-z1\.b}, z16\.b + *[0-9a-f]+: 810083d0 usmop4s za0\.s, {z14\.b-z15\.b}, z16\.b + *[0-9a-f]+: 810e8210 usmop4s za0\.s, {z0\.b-z1\.b}, z30\.b + *[0-9a-f]+: 81108210 usmop4s za0\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 81108213 usmop4s za3\.s, {z0\.b-z1\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 811083d0 usmop4s za0\.s, {z14\.b-z15\.b}, {z16\.b-z17\.b} + *[0-9a-f]+: 811e8210 usmop4s za0\.s, {z0\.b-z1\.b}, {z30\.b-z31\.b} diff --git a/gas/testsuite/gas/aarch64/sme-mop4.s b/gas/testsuite/gas/aarch64/sme-mop4.s new file mode 100644 index 00000000000..e1b92ffbabf --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-mop4.s @@ -0,0 +1,305 @@ + bfmop4a za0.s, z0.h, z16.h + bfmop4a za3.s, z0.h, z16.h + bfmop4a za0.s, z14.h, z16.h + bfmop4a za0.s, z0.h, z30.h + bfmop4a za0.s, z0.h, { z16.h-z17.h } + bfmop4a za3.s, z0.h, { z16.h-z17.h } + bfmop4a za0.s, z14.h, { z16.h-z17.h } + bfmop4a za0.s, z0.h, { z30.h-z31.h } + bfmop4a za0.s, { z0.h-z1.h }, z16.h + bfmop4a za3.s, { z0.h-z1.h }, z16.h + bfmop4a za0.s, { z14.h-z15.h }, z16.h + bfmop4a za0.s, { z0.h-z1.h }, z30.h + bfmop4a za0.s, { z0.h-z1.h }, { z16.h-z17.h } + bfmop4a za3.s, { z0.h-z1.h }, { z16.h-z17.h } + bfmop4a za0.s, { z14.h-z15.h }, { z16.h-z17.h } + bfmop4a za0.s, { z0.h-z1.h }, { z30.h-z31.h } + + bfmop4s za0.s, z0.h, z16.h + bfmop4s za3.s, z0.h, z16.h + bfmop4s za0.s, z14.h, z16.h + bfmop4s za0.s, z0.h, z30.h + bfmop4s za0.s, z0.h, { z16.h-z17.h } + bfmop4s za3.s, z0.h, { z16.h-z17.h } + bfmop4s za0.s, z14.h, { z16.h-z17.h } + bfmop4s za0.s, z0.h, { z30.h-z31.h } + bfmop4s za0.s, { z0.h-z1.h }, z16.h + bfmop4s za3.s, { z0.h-z1.h }, z16.h + bfmop4s za0.s, { z14.h-z15.h }, z16.h + bfmop4s za0.s, { z0.h-z1.h }, z30.h + bfmop4s za0.s, { z0.h-z1.h }, { z16.h-z17.h } + bfmop4s za3.s, { z0.h-z1.h }, { z16.h-z17.h } + bfmop4s za0.s, { z14.h-z15.h }, { z16.h-z17.h } + bfmop4s za0.s, { z0.h-z1.h }, { z30.h-z31.h } + + fmop4a za0.s, z0.s, z16.s + fmop4a za3.s, z0.s, z16.s + fmop4a za0.s, z14.s, z16.s + fmop4a za0.s, z0.s, z30.s + fmop4a za0.s, z0.s, { z16.s-z17.s } + fmop4a za3.s, z0.s, { z16.s-z17.s } + fmop4a za0.s, z14.s, { z16.s-z17.s } + fmop4a za0.s, z0.s, { z30.s-z31.s } + fmop4a za0.s, { z0.s-z1.s }, z16.s + fmop4a za3.s, { z0.s-z1.s }, z16.s + fmop4a za0.s, { z14.s-z15.s }, z16.s + fmop4a za0.s, { z0.s-z1.s }, z30.s + fmop4a za0.s, { z0.s-z1.s }, { z16.s-z17.s } + fmop4a za3.s, { z0.s-z1.s }, { z16.s-z17.s } + fmop4a za0.s, { z14.s-z15.s }, { z16.s-z17.s } + fmop4a za0.s, { z0.s-z1.s }, { z30.s-z31.s } + + fmop4a za0.s, z0.h, z16.h + fmop4a za3.s, z0.h, z16.h + fmop4a za0.s, z14.h, z16.h + fmop4a za0.s, z0.h, z30.h + fmop4a za0.s, z0.h, { z16.h-z17.h } + fmop4a za3.s, z0.h, { z16.h-z17.h } + fmop4a za0.s, z14.h, { z16.h-z17.h } + fmop4a za0.s, z0.h, { z30.h-z31.h } + fmop4a za0.s, { z0.h-z1.h }, z16.h + fmop4a za3.s, { z0.h-z1.h }, z16.h + fmop4a za0.s, { z14.h-z15.h }, z16.h + fmop4a za0.s, { z0.h-z1.h }, z30.h + fmop4a za0.s, { z0.h-z1.h }, { z16.h-z17.h } + fmop4a za3.s, { z0.h-z1.h }, { z16.h-z17.h } + fmop4a za0.s, { z14.h-z15.h }, { z16.h-z17.h } + fmop4a za0.s, { z0.h-z1.h }, { z30.h-z31.h } + + fmop4s za0.s, z0.s, z16.s + fmop4s za3.s, z0.s, z16.s + fmop4s za0.s, z14.s, z16.s + fmop4s za0.s, z0.s, z30.s + fmop4s za0.s, z0.s, { z16.s-z17.s } + fmop4s za3.s, z0.s, { z16.s-z17.s } + fmop4s za0.s, z14.s, { z16.s-z17.s } + fmop4s za0.s, z0.s, { z30.s-z31.s } + fmop4s za0.s, { z0.s-z1.s }, z16.s + fmop4s za3.s, { z0.s-z1.s }, z16.s + fmop4s za0.s, { z14.s-z15.s }, z16.s + fmop4s za0.s, { z0.s-z1.s }, z30.s + fmop4s za0.s, { z0.s-z1.s }, { z16.s-z17.s } + fmop4s za3.s, { z0.s-z1.s }, { z16.s-z17.s } + fmop4s za0.s, { z14.s-z15.s }, { z16.s-z17.s } + fmop4s za0.s, { z0.s-z1.s }, { z30.s-z31.s } + + fmop4s za0.s, z0.h, z16.h + fmop4s za3.s, z0.h, z16.h + fmop4s za0.s, z14.h, z16.h + fmop4s za0.s, z0.h, z30.h + fmop4s za0.s, z0.h, { z16.h-z17.h } + fmop4s za3.s, z0.h, { z16.h-z17.h } + fmop4s za0.s, z14.h, { z16.h-z17.h } + fmop4s za0.s, z0.h, { z30.h-z31.h } + fmop4s za0.s, { z0.h-z1.h }, z16.h + fmop4s za3.s, { z0.h-z1.h }, z16.h + fmop4s za0.s, { z14.h-z15.h }, z16.h + fmop4s za0.s, { z0.h-z1.h }, z30.h + fmop4s za0.s, { z0.h-z1.h }, { z16.h-z17.h } + fmop4s za3.s, { z0.h-z1.h }, { z16.h-z17.h } + fmop4s za0.s, { z14.h-z15.h }, { z16.h-z17.h } + fmop4s za0.s, { z0.h-z1.h }, { z30.h-z31.h } + + smop4a za0.s, z0.h, z16.h + smop4a za3.s, z0.h, z16.h + smop4a za0.s, z14.h, z16.h + smop4a za0.s, z0.h, z30.h + smop4a za0.s, z0.h, { z16.h-z17.h } + smop4a za3.s, z0.h, { z16.h-z17.h } + smop4a za0.s, z14.h, { z16.h-z17.h } + smop4a za0.s, z0.h, { z30.h-z31.h } + smop4a za0.s, { z0.h-z1.h }, z16.h + smop4a za3.s, { z0.h-z1.h }, z16.h + smop4a za0.s, { z14.h-z15.h }, z16.h + smop4a za0.s, { z0.h-z1.h }, z30.h + smop4a za0.s, { z0.h-z1.h }, { z16.h-z17.h } + smop4a za3.s, { z0.h-z1.h }, { z16.h-z17.h } + smop4a za0.s, { z14.h-z15.h }, { z16.h-z17.h } + smop4a za0.s, { z0.h-z1.h }, { z30.h-z31.h } + + smop4a za0.s, z0.b, z16.b + smop4a za3.s, z0.b, z16.b + smop4a za0.s, z14.b, z16.b + smop4a za0.s, z0.b, z30.b + smop4a za0.s, z0.b, { z16.b-z17.b } + smop4a za3.s, z0.b, { z16.b-z17.b } + smop4a za0.s, z14.b, { z16.b-z17.b } + smop4a za0.s, z0.b, { z30.b-z31.b } + smop4a za0.s, { z0.b-z1.b }, z16.b + smop4a za3.s, { z0.b-z1.b }, z16.b + smop4a za0.s, { z14.b-z15.b }, z16.b + smop4a za0.s, { z0.b-z1.b }, z30.b + smop4a za0.s, { z0.b-z1.b }, { z16.b-z17.b } + smop4a za3.s, { z0.b-z1.b }, { z16.b-z17.b } + smop4a za0.s, { z14.b-z15.b }, { z16.b-z17.b } + smop4a za0.s, { z0.b-z1.b }, { z30.b-z31.b } + + smop4s za0.s, z0.h, z16.h + smop4s za3.s, z0.h, z16.h + smop4s za0.s, z14.h, z16.h + smop4s za0.s, z0.h, z30.h + smop4s za0.s, z0.h, { z16.h-z17.h } + smop4s za3.s, z0.h, { z16.h-z17.h } + smop4s za0.s, z14.h, { z16.h-z17.h } + smop4s za0.s, z0.h, { z30.h-z31.h } + smop4s za0.s, { z0.h-z1.h }, z16.h + smop4s za3.s, { z0.h-z1.h }, z16.h + smop4s za0.s, { z14.h-z15.h }, z16.h + smop4s za0.s, { z0.h-z1.h }, z30.h + smop4s za0.s, { z0.h-z1.h }, { z16.h-z17.h } + smop4s za3.s, { z0.h-z1.h }, { z16.h-z17.h } + smop4s za0.s, { z14.h-z15.h }, { z16.h-z17.h } + smop4s za0.s, { z0.h-z1.h }, { z30.h-z31.h } + + smop4s za0.s, z0.b, z16.b + smop4s za3.s, z0.b, z16.b + smop4s za0.s, z14.b, z16.b + smop4s za0.s, z0.b, z30.b + smop4s za0.s, z0.b, { z16.b-z17.b } + smop4s za3.s, z0.b, { z16.b-z17.b } + smop4s za0.s, z14.b, { z16.b-z17.b } + smop4s za0.s, z0.b, { z30.b-z31.b } + smop4s za0.s, { z0.b-z1.b }, z16.b + smop4s za3.s, { z0.b-z1.b }, z16.b + smop4s za0.s, { z14.b-z15.b }, z16.b + smop4s za0.s, { z0.b-z1.b }, z30.b + smop4s za0.s, { z0.b-z1.b }, { z16.b-z17.b } + smop4s za3.s, { z0.b-z1.b }, { z16.b-z17.b } + smop4s za0.s, { z14.b-z15.b }, { z16.b-z17.b } + smop4s za0.s, { z0.b-z1.b }, { z30.b-z31.b } + + sumop4a za0.s, z0.b, z16.b + sumop4a za3.s, z0.b, z16.b + sumop4a za0.s, z14.b, z16.b + sumop4a za0.s, z0.b, z30.b + sumop4a za0.s, z0.b, { z16.b-z17.b } + sumop4a za3.s, z0.b, { z16.b-z17.b } + sumop4a za0.s, z14.b, { z16.b-z17.b } + sumop4a za0.s, z0.b, { z30.b-z31.b } + sumop4a za0.s, { z0.b-z1.b }, z16.b + sumop4a za3.s, { z0.b-z1.b }, z16.b + sumop4a za0.s, { z14.b-z15.b }, z16.b + sumop4a za0.s, { z0.b-z1.b }, z30.b + sumop4a za0.s, { z0.b-z1.b }, { z16.b-z17.b } + sumop4a za3.s, { z0.b-z1.b }, { z16.b-z17.b } + sumop4a za0.s, { z14.b-z15.b }, { z16.b-z17.b } + sumop4a za0.s, { z0.b-z1.b }, { z30.b-z31.b } + + sumop4s za0.s, z0.b, z16.b + sumop4s za3.s, z0.b, z16.b + sumop4s za0.s, z14.b, z16.b + sumop4s za0.s, z0.b, z30.b + sumop4s za0.s, z0.b, { z16.b-z17.b } + sumop4s za3.s, z0.b, { z16.b-z17.b } + sumop4s za0.s, z14.b, { z16.b-z17.b } + sumop4s za0.s, z0.b, { z30.b-z31.b } + sumop4s za0.s, { z0.b-z1.b }, z16.b + sumop4s za3.s, { z0.b-z1.b }, z16.b + sumop4s za0.s, { z14.b-z15.b }, z16.b + sumop4s za0.s, { z0.b-z1.b }, z30.b + sumop4s za0.s, { z0.b-z1.b }, { z16.b-z17.b } + sumop4s za3.s, { z0.b-z1.b }, { z16.b-z17.b } + sumop4s za0.s, { z14.b-z15.b }, { z16.b-z17.b } + sumop4s za0.s, { z0.b-z1.b }, { z30.b-z31.b } + + umop4a za0.s, z0.h, z16.h + umop4a za3.s, z0.h, z16.h + umop4a za0.s, z14.h, z16.h + umop4a za0.s, z0.h, z30.h + umop4a za0.s, z0.h, { z16.h-z17.h } + umop4a za3.s, z0.h, { z16.h-z17.h } + umop4a za0.s, z14.h, { z16.h-z17.h } + umop4a za0.s, z0.h, { z30.h-z31.h } + umop4a za0.s, { z0.h-z1.h }, z16.h + umop4a za3.s, { z0.h-z1.h }, z16.h + umop4a za0.s, { z14.h-z15.h }, z16.h + umop4a za0.s, { z0.h-z1.h }, z30.h + umop4a za0.s, { z0.h-z1.h }, { z16.h-z17.h } + umop4a za3.s, { z0.h-z1.h }, { z16.h-z17.h } + umop4a za0.s, { z14.h-z15.h }, { z16.h-z17.h } + umop4a za0.s, { z0.h-z1.h }, { z30.h-z31.h } + + umop4a za0.s, z0.b, z16.b + umop4a za3.s, z0.b, z16.b + umop4a za0.s, z14.b, z16.b + umop4a za0.s, z0.b, z30.b + umop4a za0.s, z0.b, { z16.b-z17.b } + umop4a za3.s, z0.b, { z16.b-z17.b } + umop4a za0.s, z14.b, { z16.b-z17.b } + umop4a za0.s, z0.b, { z30.b-z31.b } + umop4a za0.s, { z0.b-z1.b }, z16.b + umop4a za3.s, { z0.b-z1.b }, z16.b + umop4a za0.s, { z14.b-z15.b }, z16.b + umop4a za0.s, { z0.b-z1.b }, z30.b + umop4a za0.s, { z0.b-z1.b }, { z16.b-z17.b } + umop4a za3.s, { z0.b-z1.b }, { z16.b-z17.b } + umop4a za0.s, { z14.b-z15.b }, { z16.b-z17.b } + umop4a za0.s, { z0.b-z1.b }, { z30.b-z31.b } + + umop4s za0.s, z0.h, z16.h + umop4s za3.s, z0.h, z16.h + umop4s za0.s, z14.h, z16.h + umop4s za0.s, z0.h, z30.h + umop4s za0.s, z0.h, { z16.h-z17.h } + umop4s za3.s, z0.h, { z16.h-z17.h } + umop4s za0.s, z14.h, { z16.h-z17.h } + umop4s za0.s, z0.h, { z30.h-z31.h } + umop4s za0.s, { z0.h-z1.h }, z16.h + umop4s za3.s, { z0.h-z1.h }, z16.h + umop4s za0.s, { z14.h-z15.h }, z16.h + umop4s za0.s, { z0.h-z1.h }, z30.h + umop4s za0.s, { z0.h-z1.h }, { z16.h-z17.h } + umop4s za3.s, { z0.h-z1.h }, { z16.h-z17.h } + umop4s za0.s, { z14.h-z15.h }, { z16.h-z17.h } + umop4s za0.s, { z0.h-z1.h }, { z30.h-z31.h } + + umop4s za0.s, z0.b, z16.b + umop4s za3.s, z0.b, z16.b + umop4s za0.s, z14.b, z16.b + umop4s za0.s, z0.b, z30.b + umop4s za0.s, z0.b, { z16.b-z17.b } + umop4s za3.s, z0.b, { z16.b-z17.b } + umop4s za0.s, z14.b, { z16.b-z17.b } + umop4s za0.s, z0.b, { z30.b-z31.b } + umop4s za0.s, { z0.b-z1.b }, z16.b + umop4s za3.s, { z0.b-z1.b }, z16.b + umop4s za0.s, { z14.b-z15.b }, z16.b + umop4s za0.s, { z0.b-z1.b }, z30.b + umop4s za0.s, { z0.b-z1.b }, { z16.b-z17.b } + umop4s za3.s, { z0.b-z1.b }, { z16.b-z17.b } + umop4s za0.s, { z14.b-z15.b }, { z16.b-z17.b } + umop4s za0.s, { z0.b-z1.b }, { z30.b-z31.b } + + usmop4a za0.s, z0.b, z16.b + usmop4a za3.s, z0.b, z16.b + usmop4a za0.s, z14.b, z16.b + usmop4a za0.s, z0.b, z30.b + usmop4a za0.s, z0.b, { z16.b-z17.b } + usmop4a za3.s, z0.b, { z16.b-z17.b } + usmop4a za0.s, z14.b, { z16.b-z17.b } + usmop4a za0.s, z0.b, { z30.b-z31.b } + usmop4a za0.s, { z0.b-z1.b }, z16.b + usmop4a za3.s, { z0.b-z1.b }, z16.b + usmop4a za0.s, { z14.b-z15.b }, z16.b + usmop4a za0.s, { z0.b-z1.b }, z30.b + usmop4a za0.s, { z0.b-z1.b }, { z16.b-z17.b } + usmop4a za3.s, { z0.b-z1.b }, { z16.b-z17.b } + usmop4a za0.s, { z14.b-z15.b }, { z16.b-z17.b } + usmop4a za0.s, { z0.b-z1.b }, { z30.b-z31.b } + + usmop4s za0.s, z0.b, z16.b + usmop4s za3.s, z0.b, z16.b + usmop4s za0.s, z14.b, z16.b + usmop4s za0.s, z0.b, z30.b + usmop4s za0.s, z0.b, { z16.b-z17.b } + usmop4s za3.s, z0.b, { z16.b-z17.b } + usmop4s za0.s, z14.b, { z16.b-z17.b } + usmop4s za0.s, z0.b, { z30.b-z31.b } + usmop4s za0.s, { z0.b-z1.b }, z16.b + usmop4s za3.s, { z0.b-z1.b }, z16.b + usmop4s za0.s, { z14.b-z15.b }, z16.b + usmop4s za0.s, { z0.b-z1.b }, z30.b + usmop4s za0.s, { z0.b-z1.b }, { z16.b-z17.b } + usmop4s za3.s, { z0.b-z1.b }, { z16.b-z17.b } + usmop4s za0.s, { z14.b-z15.b }, { z16.b-z17.b } + usmop4s za0.s, { z0.b-z1.b }, { z30.b-z31.b } diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index 099fb2366df..f3c6249afdb 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -255,6 +255,8 @@ enum aarch64_feature_bit { AARCH64_FEATURE_GCIE, /* SME TMOP instructions. */ AARCH64_FEATURE_SME_TMOP, + /* SME MOP4 instructions. */ + AARCH64_FEATURE_SME_MOP4, /* Virtual features. These are used to gate instructions that are enabled by either of two (or more) sets of command line flags. */ @@ -863,8 +865,12 @@ enum aarch64_opnd AARCH64_OPND_SVE_ZtxN, /* SVE vector register list in Zt. */ AARCH64_OPND_SME_Zdnx2, /* SVE vector register list from [4:1]*2. */ AARCH64_OPND_SME_Zdnx4, /* SVE vector register list from [4:2]*4. */ - AARCH64_OPND_SME_Zm, /* SVE vector register list in 4-bit Zm. */ - AARCH64_OPND_SME_Zm_17, /* SVE vector register list in [20:17]. */ + AARCH64_OPND_SME_Zm, /* SVE vector register in 4-bit Zm. */ + AARCH64_OPND_SME_Zm_17, /* SVE vector register in [20:17]. */ + AARCH64_OPND_SME_Zn_6_3, /* SVE vector register in [8:6]*2. */ + AARCH64_OPND_SME_Zm_17_3, /* SVE vector register in [19:17]*2+16. */ + AARCH64_OPND_SME_Znx2_6_3, /* SVE vector register list from [8:6]*2. */ + AARCH64_OPND_SME_Zmx2_17_3, /* SVE vector register list from [19:17]*2+16. */ AARCH64_OPND_SME_Zmx2, /* SVE vector register list from [20:17]*2. */ AARCH64_OPND_SME_Zmx4, /* SVE vector register list from [20:18]*4. */ AARCH64_OPND_SME_Znx2, /* SVE vector register list from [9:6]*2. */ diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c index a5dbabbb3cd..b0611654ead 100644 --- a/opcodes/aarch64-asm-2.c +++ b/opcodes/aarch64-asm-2.c @@ -831,6 +831,8 @@ aarch64_insert_operand (const aarch64_operand *self, case AARCH64_OPND_SVE_Zt: case AARCH64_OPND_SME_Zm: case AARCH64_OPND_SME_Zm_17: + case AARCH64_OPND_SME_Zn_6_3: + case AARCH64_OPND_SME_Zm_17_3: case AARCH64_OPND_SME_ZAda_1b: case AARCH64_OPND_SME_ZAda_2b: case AARCH64_OPND_SME_ZAda_3b: @@ -1142,6 +1144,8 @@ aarch64_insert_operand (const aarch64_operand *self, return aarch64_ins_sve_reglist (self, info, code, inst, errors); case AARCH64_OPND_SME_Zdnx2: case AARCH64_OPND_SME_Zdnx4: + case AARCH64_OPND_SME_Znx2_6_3: + case AARCH64_OPND_SME_Zmx2_17_3: case AARCH64_OPND_SME_Zmx2: case AARCH64_OPND_SME_Zmx4: case AARCH64_OPND_SME_Znx2: diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index 87e0f2a54ba..ecaea2d2fdb 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -47,10 +47,250 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 23) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0000000000xxxxxxxxxxxxxxxxxxxxx. */ - return A64_OPID_00000000_udf_UNDEFINED; + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 31) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 000000000000xxxxxxxxxxxxxxxxxxxx. */ + return A64_OPID_00000000_udf_UNDEFINED; + } + else + { + if (((word >> 3) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxx0xxxxx0xxxx00xxx. */ + return A64_OPID_80000000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxx1xxxxx0xxxx00xxx. */ + return A64_OPID_80008000_smop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxx0xxxxx1xxxx00xxx. */ + return A64_OPID_80000200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxx1xxxxx1xxxx00xxx. */ + return A64_OPID_80008200_smop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + } + } + else + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxx0xxxxx0xxxx10xxx. */ + return A64_OPID_80000010_fmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxx1xxxxx0xxxx10xxx. */ + return A64_OPID_80008010_smop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxx0xxxxx1xxxx10xxx. */ + return A64_OPID_80000210_fmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxx1xxxxx1xxxx10xxx. */ + return A64_OPID_80008210_smop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + } + } + } + else + { + if (((word >> 4) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_80008008_smop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_80008208_smop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + } + else + { + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_80008018_smop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 100000000000xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_80008218_smop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + } + } + } + } + else + { + if (((word >> 3) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxx0xxxxx0xxxx00xxx. */ + return A64_OPID_80100000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxx1xxxxx0xxxx00xxx. */ + return A64_OPID_80108000_smop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxx0xxxxx1xxxx00xxx. */ + return A64_OPID_80100200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxx1xxxxx1xxxx00xxx. */ + return A64_OPID_80108200_smop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } + else + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxx0xxxxx0xxxx10xxx. */ + return A64_OPID_80100010_fmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxx1xxxxx0xxxx10xxx. */ + return A64_OPID_80108010_smop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxx0xxxxx1xxxx10xxx. */ + return A64_OPID_80100210_fmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxx1xxxxx1xxxx10xxx. */ + return A64_OPID_80108210_smop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } + } + else + { + if (((word >> 4) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_80108008_smop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_80108208_smop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_80108018_smop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000000001xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_80108218_smop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } + } } else { @@ -131,10 +371,90 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0000000x10xxxxxxxxxxxxxxxxx1xxx. */ - return A64_OPID_80408008_stmopa_SME_ZAda_2b_SME_Znx2_SVE_Zm_16_SME_Zk_INDEX; + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 4) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000000x100xxxx0xxxxx0xxxx01xxx. */ + return A64_OPID_80c00008_fmop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000000x101xxxx0xxxxx0xxxx01xxx. */ + return A64_OPID_80d00008_fmop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000000x100xxxx0xxxxx1xxxx01xxx. */ + return A64_OPID_80c00208_fmop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000000x101xxxx0xxxxx1xxxx01xxx. */ + return A64_OPID_80d00208_fmop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } + else + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000000x100xxxx0xxxxx0xxxx11xxx. */ + return A64_OPID_80c00018_fmop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000000x101xxxx0xxxxx0xxxx11xxx. */ + return A64_OPID_80d00018_fmop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000000x100xxxx0xxxxx1xxxx11xxx. */ + return A64_OPID_80c00218_fmop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000000x101xxxx0xxxxx1xxxx11xxx. */ + return A64_OPID_80d00218_fmop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000000x10xxxxx1xxxxxxxxxxx1xxx. */ + return A64_OPID_80408008_stmopa_SME_ZAda_2b_SME_Znx2_SVE_Zm_16_SME_Zk_INDEX; + } } } } @@ -1070,10 +1390,50 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 30) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0100000110xxxxxxxxxxxxxxxx0xxxx. */ - return A64_OPID_a0c00000_smopa_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000110xxxxxxxxxxxxxxxx00xxx. */ + return A64_OPID_a0c00000_smopa_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } + else + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000001100xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_a0c00008_smop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000001101xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_a0d00008_smop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000001100xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_a0c00208_smop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000001101xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_a0d00208_smop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } } else { @@ -1085,10 +1445,50 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx100000110xxxxxxxxxxxxxxxx1xxxx. */ - return A64_OPID_a0c00010_smops_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx100000110xxxxxxxxxxxxxxxx10xxx. */ + return A64_OPID_a0c00010_smops_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } + else + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000001100xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_a0c00018_smop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000001101xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_a0d00018_smop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000001100xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_a0c00218_smop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000001101xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_a0d00218_smop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } } } } @@ -1100,169 +1500,329 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 23) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 29) & 0x1) == 0) { - if (((word >> 0) & 0x1) == 0) + if (((word >> 3) & 0x1) == 0) { - if (((word >> 13) & 0x1) == 0) + if (((word >> 4) & 0x1) == 0) { - if (((word >> 14) & 0x1) == 0) + if (((word >> 9) & 0x1) == 0) { if (((word >> 15) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx000xxxxxxxxxxxx0. */ - return A64_OPID_a0200000_st1b_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000010xxxx0xxxxx0xxxx00xxx. */ + return A64_OPID_80200000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000011xxxx0xxxxx0xxxx00xxx. */ + return A64_OPID_80300000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx100xxxxxxxxxxxx0. */ - return A64_OPID_a0208000_st1b_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000010xxxx1xxxxx0xxxx00xxx. */ + return A64_OPID_80208000_sumop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000011xxxx1xxxxx0xxxx00xxx. */ + return A64_OPID_80308000_sumop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } } } else { if (((word >> 15) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx010xxxxxxxxxxxx0. */ - return A64_OPID_a0204000_st1w_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL2; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000010xxxx0xxxxx1xxxx00xxx. */ + return A64_OPID_80200200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000011xxxx0xxxxx1xxxx00xxx. */ + return A64_OPID_80300200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx110xxxxxxxxxxxx0. */ - return A64_OPID_a020c000_st1w_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL2; + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000010xxxx1xxxxx1xxxx00xxx. */ + return A64_OPID_80208200_sumop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000011xxxx1xxxxx1xxxx00xxx. */ + return A64_OPID_80308200_sumop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } } } } else { - if (((word >> 14) & 0x1) == 0) + if (((word >> 9) & 0x1) == 0) { - if (((word >> 15) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x0x00000001xxxxx001xxxxxxxxxxxx0. */ - return A64_OPID_a0202000_st1h_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL1; + xx0000000010xxxxxxxxxx0xxxx10xxx. */ + return A64_OPID_80208010_sumop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x0x00000001xxxxx101xxxxxxxxxxxx0. */ - return A64_OPID_a020a000_st1h_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL1; + xx0000000011xxxxxxxxxx0xxxx10xxx. */ + return A64_OPID_80308010_sumop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; } } else { - if (((word >> 15) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x0x00000001xxxxx011xxxxxxxxxxxx0. */ - return A64_OPID_a0206000_st1d_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL3; + xx0000000010xxxxxxxxxx1xxxx10xxx. */ + return A64_OPID_80208210_sumop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x0x00000001xxxxx111xxxxxxxxxxxx0. */ - return A64_OPID_a020e000_st1d_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL3; + xx0000000011xxxxxxxxxx1xxxx10xxx. */ + return A64_OPID_80308210_sumop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; } } } } else { - if (((word >> 13) & 0x1) == 0) + if (((word >> 9) & 0x1) == 0) { - if (((word >> 14) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 15) & 0x1) == 0) + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000010xxxxxxxxxx0xxxxx1xxx. */ + return A64_OPID_80200008_fmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000011xxxxxxxxxx0xxxxx1xxx. */ + return A64_OPID_80300008_fmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000010xxxxxxxxxx1xxxxx1xxx. */ + return A64_OPID_80200208_fmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx0000000011xxxxxxxxxx1xxxxx1xxx. */ + return A64_OPID_80300208_fmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } + } + else + { + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 0) & 0x1) == 0) + { + if (((word >> 13) & 0x1) == 0) + { + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx000xxxxxxxxxxxx1. */ - return A64_OPID_a0200001_stnt1b_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx000xxxxxxxxxxxx0. */ + return A64_OPID_a0200000_st1b_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx100xxxxxxxxxxxx0. */ + return A64_OPID_a0208000_st1b_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx100xxxxxxxxxxxx1. */ - return A64_OPID_a0208001_stnt1b_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx010xxxxxxxxxxxx0. */ + return A64_OPID_a0204000_st1w_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL2; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx110xxxxxxxxxxxx0. */ + return A64_OPID_a020c000_st1w_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL2; + } } } else { - if (((word >> 15) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx010xxxxxxxxxxxx1. */ - return A64_OPID_a0204001_stnt1w_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL2; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx001xxxxxxxxxxxx0. */ + return A64_OPID_a0202000_st1h_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL1; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx101xxxxxxxxxxxx0. */ + return A64_OPID_a020a000_st1h_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL1; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx110xxxxxxxxxxxx1. */ - return A64_OPID_a020c001_stnt1w_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL2; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx011xxxxxxxxxxxx0. */ + return A64_OPID_a0206000_st1d_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx111xxxxxxxxxxxx0. */ + return A64_OPID_a020e000_st1d_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL3; + } } } } else { - if (((word >> 14) & 0x1) == 0) + if (((word >> 13) & 0x1) == 0) { - if (((word >> 15) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx001xxxxxxxxxxxx1. */ - return A64_OPID_a0202001_stnt1h_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL1; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx000xxxxxxxxxxxx1. */ + return A64_OPID_a0200001_stnt1b_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx100xxxxxxxxxxxx1. */ + return A64_OPID_a0208001_stnt1b_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx101xxxxxxxxxxxx1. */ - return A64_OPID_a020a001_stnt1h_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL1; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx010xxxxxxxxxxxx1. */ + return A64_OPID_a0204001_stnt1w_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL2; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx110xxxxxxxxxxxx1. */ + return A64_OPID_a020c001_stnt1w_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL2; + } } } else { - if (((word >> 15) & 0x1) == 0) + if (((word >> 14) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx011xxxxxxxxxxxx1. */ - return A64_OPID_a0206001_stnt1d_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL3; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx001xxxxxxxxxxxx1. */ + return A64_OPID_a0202001_stnt1h_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL1; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx101xxxxxxxxxxxx1. */ + return A64_OPID_a020a001_stnt1h_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL1; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000001xxxxx111xxxxxxxxxxxx1. */ - return A64_OPID_a020e001_stnt1d_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL3; + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx011xxxxxxxxxxxx1. */ + return A64_OPID_a0206001_stnt1d_SME_Zdnx2_SME_PNg3_SVE_ADDR_RM_LSL3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100000001xxxxx111xxxxxxxxxxxx1. */ + return A64_OPID_a020e001_stnt1d_SME_Zdnx4_SME_PNg3_SVE_ADDR_RM_LSL3; + } } } } } - } - else - { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1x00000001xxxxxxxxxxxxxxxxxxxxx. */ - return A64_OPID_e0200000_st1b_SME_ZA_HV_idx_ldstr_SVE_Pg3_SVE_ADDR_RR; + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1100000001xxxxxxxxxxxxxxxxxxxxx. */ + return A64_OPID_e0200000_st1b_SME_ZA_HV_idx_ldstr_SVE_Pg3_SVE_ADDR_RR; + } } } else @@ -1518,10 +2078,50 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 30) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0x00000111xxxxxxxxxxxxxxxx0xxxx. */ - return A64_OPID_a0e00000_sumopa_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x00000111xxxxxxxxxxxxxxxx00xxx. */ + return A64_OPID_a0e00000_sumopa_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } + else + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x000001110xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_a0e00008_sumop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x000001111xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_a0f00008_sumop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x000001110xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_a0e00208_sumop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0x000001111xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_a0f00208_sumop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } } else { @@ -1533,10 +2133,50 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxx00000111xxxxxxxxxxxxxxxx1xxxx. */ - return A64_OPID_a0e00010_sumops_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx00000111xxxxxxxxxxxxxxxx10xxx. */ + return A64_OPID_a0e00010_sumops_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } + else + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx000001110xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_a0e00018_sumop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx000001111xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_a0f00018_sumop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx000001110xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_a0e00218_sumop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxx000001111xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_a0f00218_sumop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } } } } @@ -1580,17 +2220,97 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 3) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010000xxxxxxxxxxxxxxx000xx. */ - return A64_OPID_c1000000_smlall_SME_ZA_array_off2x4_SVE_Zn_SME_Zm_INDEX4_10; + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx0xxxxx0xxxx000xx. */ + return A64_OPID_81000000_bfmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx1xxxxx0xxxx000xx. */ + return A64_OPID_81008000_usmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx0xxxxx1xxxx000xx. */ + return A64_OPID_81000200_bfmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx1xxxxx1xxxx000xx. */ + return A64_OPID_81008200_usmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010000xxxxxxxxxxxxxxx000xx. */ + return A64_OPID_c1000000_smlall_SME_ZA_array_off2x4_SVE_Zn_SME_Zm_INDEX4_10; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010000xxxxxxxxxxxxxxx010xx. */ - return A64_OPID_c1000008_smlsll_SME_ZA_array_off2x4_SVE_Zn_SME_Zm_INDEX4_10; + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx0xxxxx0xxxx010xx. */ + return A64_OPID_81000008_fmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx1xxxxx0xxxx010xx. */ + return A64_OPID_81008008_umop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx0xxxxx1xxxx010xx. */ + return A64_OPID_81000208_fmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx1xxxxx1xxxx010xx. */ + return A64_OPID_81008208_umop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010000xxxxxxxxxxxxxxx010xx. */ + return A64_OPID_c1000008_smlsll_SME_ZA_array_off2x4_SVE_Zn_SME_Zm_INDEX4_10; + } } } else @@ -1611,26 +2331,66 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 15) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx0xx0xxxxxx000xxx. */ - return A64_OPID_c1100000_smlall_SME_ZA_array_off1x4_SME_Znx2_SME_Zm_INDEX4_1; + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx0xx0xx0xxx000xxx. */ + return A64_OPID_81100000_bfmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx0xx0xx1xxx000xxx. */ + return A64_OPID_81100200_bfmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010001xxxx0xx0xxxxxx000xxx. */ + return A64_OPID_c1100000_smlall_SME_ZA_array_off1x4_SME_Znx2_SME_Zm_INDEX4_1; + } } else { - if (((word >> 6) & 0x1) == 0) + if (((word >> 30) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx1xx0xxxxx0000xxx. */ - return A64_OPID_c1108000_smlall_SME_ZA_array_off1x4_SME_Znx4_SME_Zm_INDEX4_1; + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx1xx0xx0xxx000xxx. */ + return A64_OPID_81108000_usmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx1xx0xx1xxx000xxx. */ + return A64_OPID_81108200_usmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx1xx0xxxxx1000xxx. */ - return A64_OPID_c1108040_fmlall_SME_ZA_array_off1x4_SME_Znx4_SME_Zm_INDEX4_1; + if (((word >> 6) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010001xxxx1xx0xxxxx0000xxx. */ + return A64_OPID_c1108000_smlall_SME_ZA_array_off1x4_SME_Znx4_SME_Zm_INDEX4_1; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010001xxxx1xx0xxxxx1000xxx. */ + return A64_OPID_c1108040_fmlall_SME_ZA_array_off1x4_SME_Znx4_SME_Zm_INDEX4_1; + } } } } @@ -1638,17 +2398,57 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 15) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx0xx0xxxxxx001xxx. */ - return A64_OPID_c1100008_smlsll_SME_ZA_array_off1x4_SME_Znx2_SME_Zm_INDEX4_1; + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx0xx0xx0xxx001xxx. */ + return A64_OPID_81100008_fmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx0xx0xx1xxx001xxx. */ + return A64_OPID_81100208_fmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010001xxxx0xx0xxxxxx001xxx. */ + return A64_OPID_c1100008_smlsll_SME_ZA_array_off1x4_SME_Znx2_SME_Zm_INDEX4_1; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx1xx0xxxxxx001xxx. */ - return A64_OPID_c1108008_smlsll_SME_ZA_array_off1x4_SME_Znx4_SME_Zm_INDEX4_1; + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx1xx0xx0xxx001xxx. */ + return A64_OPID_81108008_umop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx1xx0xx1xxx001xxx. */ + return A64_OPID_81108208_umop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010001xxxx1xx0xxxxxx001xxx. */ + return A64_OPID_c1108008_smlsll_SME_ZA_array_off1x4_SME_Znx4_SME_Zm_INDEX4_1; + } } } } @@ -1727,17 +2527,97 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 3) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010000xxxxxxxxxxxxxxx100xx. */ - return A64_OPID_c1000010_umlall_SME_ZA_array_off2x4_SVE_Zn_SME_Zm_INDEX4_10; + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx0xxxxx0xxxx100xx. */ + return A64_OPID_81000010_bfmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx1xxxxx0xxxx100xx. */ + return A64_OPID_81008010_usmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx0xxxxx1xxxx100xx. */ + return A64_OPID_81000210_bfmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx1xxxxx1xxxx100xx. */ + return A64_OPID_81008210_usmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010000xxxxxxxxxxxxxxx100xx. */ + return A64_OPID_c1000010_umlall_SME_ZA_array_off2x4_SVE_Zn_SME_Zm_INDEX4_10; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010000xxxxxxxxxxxxxxx110xx. */ - return A64_OPID_c1000018_umlsll_SME_ZA_array_off2x4_SVE_Zn_SME_Zm_INDEX4_10; + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx0xxxxx0xxxx110xx. */ + return A64_OPID_81000018_fmop4s_SME_ZAda_1b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx1xxxxx0xxxx110xx. */ + return A64_OPID_81008018_umop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx0xxxxx1xxxx110xx. */ + return A64_OPID_81000218_fmop4s_SME_ZAda_1b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010000xxxx1xxxxx1xxxx110xx. */ + return A64_OPID_81008218_umop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010000xxxxxxxxxxxxxxx110xx. */ + return A64_OPID_c1000018_umlsll_SME_ZA_array_off2x4_SVE_Zn_SME_Zm_INDEX4_10; + } } } else @@ -1758,34 +2638,114 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 15) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx0xx0xxxxxx010xxx. */ - return A64_OPID_c1100010_umlall_SME_ZA_array_off1x4_SME_Znx2_SME_Zm_INDEX4_1; + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx0xx0xx0xxx010xxx. */ + return A64_OPID_81100010_bfmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx0xx0xx1xxx010xxx. */ + return A64_OPID_81100210_bfmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010001xxxx0xx0xxxxxx010xxx. */ + return A64_OPID_c1100010_umlall_SME_ZA_array_off1x4_SME_Znx2_SME_Zm_INDEX4_1; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx1xx0xxxxxx010xxx. */ - return A64_OPID_c1108010_umlall_SME_ZA_array_off1x4_SME_Znx4_SME_Zm_INDEX4_1; + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx1xx0xx0xxx010xxx. */ + return A64_OPID_81108010_usmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx1xx0xx1xxx010xxx. */ + return A64_OPID_81108210_usmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010001xxxx1xx0xxxxxx010xxx. */ + return A64_OPID_c1108010_umlall_SME_ZA_array_off1x4_SME_Znx4_SME_Zm_INDEX4_1; + } } } else { if (((word >> 15) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx0xx0xxxxxx011xxx. */ - return A64_OPID_c1100018_umlsll_SME_ZA_array_off1x4_SME_Znx2_SME_Zm_INDEX4_1; + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx0xx0xx0xxx011xxx. */ + return A64_OPID_81100018_fmop4s_SME_ZAda_1b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx0xx0xx1xxx011xxx. */ + return A64_OPID_81100218_fmop4s_SME_ZAda_1b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010001xxxx0xx0xxxxxx011xxx. */ + return A64_OPID_c1100018_umlsll_SME_ZA_array_off1x4_SME_Znx2_SME_Zm_INDEX4_1; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx0000010001xxxx1xx0xxxxxx011xxx. */ - return A64_OPID_c1108018_umlsll_SME_ZA_array_off1x4_SME_Znx4_SME_Zm_INDEX4_1; + if (((word >> 30) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx1xx0xx0xxx011xxx. */ + return A64_OPID_81108018_umop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010001xxxx1xx0xx1xxx011xxx. */ + return A64_OPID_81108218_umop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x10000010001xxxx1xx0xxxxxx011xxx. */ + return A64_OPID_c1108018_umlsll_SME_ZA_array_off1x4_SME_Znx4_SME_Zm_INDEX4_1; + } } } } @@ -3037,10 +3997,50 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 30) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0100001110xxxxxxxxxxxxxxxx0xxxx. */ - return A64_OPID_a1c00000_usmopa_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100001110xxxxxxxxxxxxxxxx00xxx. */ + return A64_OPID_a1c00000_usmopa_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } + else + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000011100xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_a1c00008_usmop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000011101xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_a1d00008_usmop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000011100xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_a1c00208_usmop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000011101xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_a1d00208_usmop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } } else { @@ -3172,10 +4172,50 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx100001110xxxxxxxxxxxxxxxx1xxxx. */ - return A64_OPID_a1c00010_usmops_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx100001110xxxxxxxxxxxxxxxx10xxx. */ + return A64_OPID_a1c00010_usmops_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } + else + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000011100xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_a1c00018_usmop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000011101xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_a1d00018_usmop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000011100xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_a1c00218_usmop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000011101xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_a1d00218_usmop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } } } } @@ -3193,17 +4233,177 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 4) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0000001x01xxxxxxxxxxxxxxxx00xxx. */ - return A64_OPID_81a00000_fmopa_SME_ZAda_2b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxx0xxxxx0xxxx00xxx. */ + return A64_OPID_81200000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxx0xxxxx0xxxx00xxx. */ + return A64_OPID_81300000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxx1xxxxx0xxxx00xxx. */ + return A64_OPID_81208000_umop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxx1xxxxx0xxxx00xxx. */ + return A64_OPID_81308000_umop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxx0xxxxx1xxxx00xxx. */ + return A64_OPID_81200200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxx0xxxxx1xxxx00xxx. */ + return A64_OPID_81300200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxx1xxxxx1xxxx00xxx. */ + return A64_OPID_81208200_umop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxx1xxxxx1xxxx00xxx. */ + return A64_OPID_81308200_umop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000001101xxxxxxxxxxxxxxxx00xxx. */ + return A64_OPID_81a00000_fmopa_SME_ZAda_2b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0000001x01xxxxxxxxxxxxxxxx10xxx. */ - return A64_OPID_81a00010_fmops_SME_ZAda_2b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxx0xxxxx0xxxx10xxx. */ + return A64_OPID_81200010_fmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxx0xxxxx0xxxx10xxx. */ + return A64_OPID_81300010_fmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxx1xxxxx0xxxx10xxx. */ + return A64_OPID_81208010_umop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxx1xxxxx0xxxx10xxx. */ + return A64_OPID_81308010_umop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + } + else + { + if (((word >> 15) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxx0xxxxx1xxxx10xxx. */ + return A64_OPID_81200210_fmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxx0xxxxx1xxxx10xxx. */ + return A64_OPID_81300210_fmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxx1xxxxx1xxxx10xxx. */ + return A64_OPID_81208210_umop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxx1xxxxx1xxxx10xxx. */ + return A64_OPID_81308210_umop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000001101xxxxxxxxxxxxxxxx10xxx. */ + return A64_OPID_81a00010_fmops_SME_ZAda_2b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } } } else @@ -3230,17 +4430,97 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 4) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0000001x01xxxxxxxxxxxxxxxx01xxx. */ - return A64_OPID_81a00008_bfmopa_SME_ZAda_1b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_81200008_bfmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_81300008_bfmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_81200208_bfmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_81300208_bfmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000001101xxxxxxxxxxxxxxxx01xxx. */ + return A64_OPID_81a00008_bfmopa_SME_ZAda_1b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0000001x01xxxxxxxxxxxxxxxx11xxx. */ - return A64_OPID_81a00018_bfmops_SME_ZAda_1b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 23) & 0x1) == 0) + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_81200018_bfmop4s_SME_ZAda_1b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_81300018_bfmop4s_SME_ZAda_1b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010010xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_81200218_bfmop4s_SME_ZAda_1b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x00000010011xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_81300218_bfmop4s_SME_ZAda_1b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000001101xxxxxxxxxxxxxxxx11xxx. */ + return A64_OPID_81a00018_bfmops_SME_ZAda_1b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } } } else @@ -6544,10 +7824,50 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 30) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0100001111xxxxxxxxxxxxxxxx0xxxx. */ - return A64_OPID_a1e00000_umopa_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0100001111xxxxxxxxxxxxxxxx00xxx. */ + return A64_OPID_a1e00000_umopa_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } + else + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000011110xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_a1e00008_umop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000011111xxxxxxxxxx0xxxx01xxx. */ + return A64_OPID_a1f00008_umop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000011110xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_a1e00208_umop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x01000011111xxxxxxxxxx1xxxx01xxx. */ + return A64_OPID_a1f00208_umop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } } else { @@ -6559,10 +7879,50 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xx100001111xxxxxxxxxxxxxxxx1xxxx. */ - return A64_OPID_a1e00010_umops_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx100001111xxxxxxxxxxxxxxxx10xxx. */ + return A64_OPID_a1e00010_umops_SME_ZAda_3b_SVE_Pg3_SME_Pm_SVE_Zn_SVE_Zm_16; + } + else + { + if (((word >> 9) & 0x1) == 0) + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000011110xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_a1e00018_umop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000011111xxxxxxxxxx0xxxx11xxx. */ + return A64_OPID_a1f00018_umop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3; + } + } + else + { + if (((word >> 20) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000011110xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_a1e00218_umop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xx1000011111xxxxxxxxxx1xxxx11xxx. */ + return A64_OPID_a1f00218_umop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3; + } + } + } } } } @@ -35893,6 +37253,8 @@ aarch64_extract_operand (const aarch64_operand *self, case AARCH64_OPND_SVE_Zt: case AARCH64_OPND_SME_Zm: case AARCH64_OPND_SME_Zm_17: + case AARCH64_OPND_SME_Zn_6_3: + case AARCH64_OPND_SME_Zm_17_3: case AARCH64_OPND_SME_ZAda_1b: case AARCH64_OPND_SME_ZAda_2b: case AARCH64_OPND_SME_ZAda_3b: @@ -36212,6 +37574,8 @@ aarch64_extract_operand (const aarch64_operand *self, return aarch64_ext_sve_reglist (self, info, code, inst, errors); case AARCH64_OPND_SME_Zdnx2: case AARCH64_OPND_SME_Zdnx4: + case AARCH64_OPND_SME_Znx2_6_3: + case AARCH64_OPND_SME_Zmx2_17_3: case AARCH64_OPND_SME_Zmx2: case AARCH64_OPND_SME_Zmx4: case AARCH64_OPND_SME_Znx2: diff --git a/opcodes/aarch64-opc-2.c b/opcodes/aarch64-opc-2.c index dc8aab5a588..7f3b25eae38 100644 --- a/opcodes/aarch64-opc-2.c +++ b/opcodes/aarch64-opc-2.c @@ -284,6 +284,10 @@ const struct aarch64_operand aarch64_operands[] = {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zdnx4", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zdn4, FLD_CONST_00}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REG, "SME_Zm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zm}, "an SVE vector register"}, {AARCH64_OPND_CLASS_SVE_REG, "SME_Zm_17", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zm2}, "an SVE vector register"}, + {AARCH64_OPND_CLASS_SVE_REG, "SME_Zn_6_3", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CONST_0, FLD_SME_Zn6_3, FLD_CONST_0}, "an SVE vector register"}, + {AARCH64_OPND_CLASS_SVE_REG, "SME_Zm_17_3", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CONST_1, FLD_SME_Zm17_3, FLD_CONST_0}, "an SVE vector register"}, + {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Znx2_6_3", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CONST_0, FLD_SME_Zn6_3, FLD_CONST_0}, "a list of SVE vector registers"}, + {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zmx2_17_3", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CONST_1, FLD_SME_Zm17_3, FLD_CONST_0}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zmx2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zm2, FLD_CONST_0}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zmx4", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zm4, FLD_CONST_00}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Znx2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zn2, FLD_CONST_0}, "a list of SVE vector registers"}, diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index 07aba80a088..b074765920e 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -266,10 +266,12 @@ const aarch64_field aarch64_fields[] = AARCH64_FIELD ( 1, 4), /* SME_Zdn2: Z0-Z31, multiple of 2, bits [4:1]. */ AARCH64_FIELD ( 2, 3), /* SME_Zdn4: Z0-Z31, multiple of 4, bits [4:2]. */ AARCH64_FIELD (16, 4), /* SME_Zm: Z0-Z15, bits [19:16]. */ + AARCH64_FIELD (17, 3), /* SME_Zm17_3: Z0-Z15/Z16-Z31, multiple of 2, bits [19:17]. */ AARCH64_FIELD (17, 4), /* SME_Zm2: Z0-Z31, multiple of 2, bits [20:17]. */ AARCH64_FIELD (18, 3), /* SME_Zm4: Z0-Z31, multiple of 4, bits [20:18]. */ AARCH64_FIELD ( 6, 4), /* SME_Zn2: Z0-Z31, multiple of 2, bits [9:6]. */ AARCH64_FIELD ( 7, 3), /* SME_Zn4: Z0-Z31, multiple of 4, bits [9:7]. */ + AARCH64_FIELD ( 6, 3), /* SME_Zn6_3: Z0-Z15/Z16-Z31, multiple of 2, bits [8:6]. */ AARCH64_FIELD ( 4, 1), /* SME_ZtT: upper bit of Zt, bit [4]. */ AARCH64_FIELD ( 0, 3), /* SME_Zt3: lower 3 bits of Zt, bits [2:0]. */ AARCH64_FIELD ( 0, 2), /* SME_Zt2: lower 2 bits of Zt, bits [1:0]. */ @@ -1987,6 +1989,24 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, } break; + case AARCH64_OPND_SME_Zn_6_3: + if (opnd->reg.regno > 15 || opnd->reg.regno % 2 != 0) + { + set_other_error (mismatch_detail, idx, + _("register out of range")); + return false; + } + break; + + case AARCH64_OPND_SME_Zm_17_3: + if (opnd->reg.regno < 16 || opnd->reg.regno % 2 != 0) + { + set_other_error (mismatch_detail, idx, + _("register out of range")); + return false; + } + break; + case AARCH64_OPND_SME_PnT_Wm_imm: size = aarch64_get_qualifier_esize (opnd->qualifier); max_value = 16 / size - 1; @@ -2006,6 +2026,8 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, case AARCH64_OPND_SME_Pdx2: case AARCH64_OPND_SME_Zdnx2: case AARCH64_OPND_SME_Zdnx4: + case AARCH64_OPND_SME_Znx2_6_3: + case AARCH64_OPND_SME_Zmx2_17_3: case AARCH64_OPND_SME_Zmx2: case AARCH64_OPND_SME_Zmx4: case AARCH64_OPND_SME_Znx2: @@ -2014,7 +2036,11 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, num = get_operand_specific_data (&aarch64_operands[type]); if (!check_reglist (opnd, mismatch_detail, idx, num, 1)) return false; - if ((opnd->reglist.first_regno % num) != 0) + if (((opnd->reglist.first_regno % num) != 0) + || (type == AARCH64_OPND_SME_Znx2_6_3 + && opnd->reglist.first_regno > 15) + || (type == AARCH64_OPND_SME_Zmx2_17_3 + && opnd->reglist.first_regno < 16)) { set_other_error (mismatch_detail, idx, _("start register out of range")); @@ -4366,6 +4392,8 @@ aarch64_print_operand (char *buf, size_t size, bfd_vma pc, case AARCH64_OPND_SVE_Zt: case AARCH64_OPND_SME_Zm: case AARCH64_OPND_SME_Zm_17: + case AARCH64_OPND_SME_Zn_6_3: + case AARCH64_OPND_SME_Zm_17_3: if (opnd->qualifier == AARCH64_OPND_QLF_NIL) snprintf (buf, size, "%s", style_reg (styler, "z%d", opnd->reg.regno)); else @@ -4378,6 +4406,8 @@ aarch64_print_operand (char *buf, size_t size, bfd_vma pc, case AARCH64_OPND_SVE_ZtxN: case AARCH64_OPND_SME_Zdnx2: case AARCH64_OPND_SME_Zdnx4: + case AARCH64_OPND_SME_Znx2_6_3: + case AARCH64_OPND_SME_Zmx2_17_3: case AARCH64_OPND_SME_Zmx2: case AARCH64_OPND_SME_Zmx4: case AARCH64_OPND_SME_Znx2: diff --git a/opcodes/aarch64-opc.h b/opcodes/aarch64-opc.h index cd639fde6de..5d544d53baf 100644 --- a/opcodes/aarch64-opc.h +++ b/opcodes/aarch64-opc.h @@ -70,10 +70,12 @@ enum aarch64_field_kind FLD_SME_Zdn2, FLD_SME_Zdn4, FLD_SME_Zm, + FLD_SME_Zm17_3, FLD_SME_Zm2, FLD_SME_Zm4, FLD_SME_Zn2, FLD_SME_Zn4, + FLD_SME_Zn6_3, FLD_SME_ZtT, FLD_SME_Zt3, FLD_SME_Zt2, diff --git a/opcodes/aarch64-tbl-2.h b/opcodes/aarch64-tbl-2.h index 3d06d5c7ae3..1263f1f9bd8 100644 --- a/opcodes/aarch64-tbl-2.h +++ b/opcodes/aarch64-tbl-2.h @@ -3859,5 +3859,141 @@ enum aarch64_opcode_idx A64_OPID_81408000_ustmopa_SME_ZAda_2b_SME_Znx2_SVE_Zm_16_SME_Zk_INDEX, A64_OPID_81408008_utmopa_SME_ZAda_2b_SME_Znx2_SVE_Zm_16_SME_Zk_INDEX, A64_OPID_81608000_utmopa_SME_ZAda_2b_SME_Znx2_SVE_Zm_16_SME_Zk_INDEX, + A64_OPID_81300008_bfmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81200008_bfmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81200208_bfmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81300208_bfmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81100000_bfmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81000000_bfmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81000200_bfmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81100200_bfmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81300018_bfmop4s_SME_ZAda_1b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81200018_bfmop4s_SME_ZAda_1b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81200218_bfmop4s_SME_ZAda_1b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81300218_bfmop4s_SME_ZAda_1b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81100010_bfmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81000010_bfmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81000210_bfmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81100210_bfmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81100008_fmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81000008_fmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81000208_fmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81100208_fmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80100000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80000000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80000200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80100200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80d00008_fmop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80c00008_fmop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80c00208_fmop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80d00208_fmop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81300000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81200000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81200200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81300200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80300008_fmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80200008_fmop4a_SME_ZAda_1b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80200208_fmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80300208_fmop4a_SME_ZAda_1b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80300000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80200000_fmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80200200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80300200_fmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81100018_fmop4s_SME_ZAda_1b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81000018_fmop4s_SME_ZAda_1b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81000218_fmop4s_SME_ZAda_1b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81100218_fmop4s_SME_ZAda_1b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80100010_fmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80000010_fmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80000210_fmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80100210_fmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80d00018_fmop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80c00018_fmop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80c00218_fmop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80d00218_fmop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81300010_fmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81200010_fmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81200210_fmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81300210_fmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80108008_smop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80008008_smop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80008208_smop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80108208_smop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80108000_smop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80008000_smop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80008200_smop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80108200_smop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_a0d00008_smop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_a0c00008_smop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_a0c00208_smop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_a0d00208_smop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80108018_smop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80008018_smop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80008218_smop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80108218_smop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80108010_smop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80008010_smop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80008210_smop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80108210_smop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_a0d00018_smop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_a0c00018_smop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_a0c00218_smop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_a0d00218_smop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80308000_sumop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80208000_sumop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80208200_sumop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80308200_sumop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_a0f00008_sumop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_a0e00008_sumop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_a0e00208_sumop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_a0f00208_sumop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_80308010_sumop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_80208010_sumop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_80208210_sumop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_80308210_sumop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_a0f00018_sumop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_a0e00018_sumop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_a0e00218_sumop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_a0f00218_sumop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81108008_umop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81008008_umop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81008208_umop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81108208_umop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81308000_umop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81208000_umop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81208200_umop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81308200_umop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_a1f00008_umop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_a1e00008_umop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_a1e00208_umop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_a1f00208_umop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81108018_umop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81008018_umop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81008218_umop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81108218_umop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81308010_umop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81208010_umop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81208210_umop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81308210_umop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_a1f00018_umop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_a1e00018_umop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_a1e00218_umop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_a1f00218_umop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81108000_usmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81008000_usmop4a_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81008200_usmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81108200_usmop4a_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_a1d00008_usmop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_a1c00008_usmop4a_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_a1c00208_usmop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_a1d00208_usmop4a_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_81108010_usmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_81008010_usmop4s_SME_ZAda_2b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_81008210_usmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_81108210_usmop4s_SME_ZAda_2b_SME_Znx2_6_3_SME_Zmx2_17_3, + A64_OPID_a1d00018_usmop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zmx2_17_3, + A64_OPID_a1c00018_usmop4s_SME_ZAda_3b_SME_Zn_6_3_SME_Zm_17_3, + A64_OPID_a1c00218_usmop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zm_17_3, + A64_OPID_a1d00218_usmop4s_SME_ZAda_3b_SME_Znx2_6_3_SME_Zmx2_17_3, A64_OPID_MAX, }; diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index f836c66f4bf..4f17226674c 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1768,6 +1768,10 @@ { \ QLF2(S_B,S_S), \ } +#define OP_SVE_HBB \ +{ \ + QLF3(S_H,S_B,S_B), \ +} #define OP_SVE_HBBU \ { \ QLF4(S_H,S_B,S_B,NIL), \ @@ -3037,6 +3041,20 @@ static const aarch64_feature_set aarch64_feature_sme_tmop_f8f16 = AARCH64_FEATURES (2, SME_TMOP, SME_F8F16); static const aarch64_feature_set aarch64_feature_sme_tmop_f8f32 = AARCH64_FEATURES (2, SME_TMOP, SME_F8F32); +static const aarch64_feature_set aarch64_feature_sme_mop4 = + AARCH64_FEATURE (SME_MOP4); +static const aarch64_feature_set aarch64_feature_sme_mop4_b16b16 = + AARCH64_FEATURES (2, SME_MOP4, SME_B16B16); +static const aarch64_feature_set aarch64_feature_sme_mop4_f16f16 = + AARCH64_FEATURES (2, SME_MOP4, SME_F16F16); +static const aarch64_feature_set aarch64_feature_sme_mop4_f64f64 = + AARCH64_FEATURES (2, SME_MOP4, SME_F64F64); +static const aarch64_feature_set aarch64_feature_sme_mop4_f8f16 = + AARCH64_FEATURES (2, SME_MOP4, SME_F8F16); +static const aarch64_feature_set aarch64_feature_sme_mop4_f8f32 = + AARCH64_FEATURES (2, SME_MOP4, SME_F8F32); +static const aarch64_feature_set aarch64_feature_sme_mop4_i16i64 = + AARCH64_FEATURES (2, SME_MOP4, SME_I16I64); #define CORE &aarch64_feature_v8 #define FP &aarch64_feature_fp @@ -3153,6 +3171,13 @@ static const aarch64_feature_set aarch64_feature_sme_tmop_f8f32 = #define SME_TMOP_F16F16 &aarch64_feature_sme_tmop_f16f16 #define SME_TMOP_F8F16 &aarch64_feature_sme_tmop_f8f16 #define SME_TMOP_F8F32 &aarch64_feature_sme_tmop_f8f32 +#define SME_MOP4 &aarch64_feature_sme_mop4 +#define SME_MOP4_B16B16 &aarch64_feature_sme_mop4_b16b16 +#define SME_MOP4_F16F16 &aarch64_feature_sme_mop4_f16f16 +#define SME_MOP4_F64F64 &aarch64_feature_sme_mop4_f64f64 +#define SME_MOP4_F8F16 &aarch64_feature_sme_mop4_f8f16 +#define SME_MOP4_F8F32 &aarch64_feature_sme_mop4_f8f32 +#define SME_MOP4_I16I64 &aarch64_feature_sme_mop4_i16i64 #define CORE_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS) \ { NAME, OPCODE, MASK, CLASS, OP, CORE, OPS, QUALS, FLAGS | F_INVALID_IMM_SYMS_1, 0, 0, NULL } @@ -3458,6 +3483,27 @@ static const aarch64_feature_set aarch64_feature_sme_tmop_f8f32 = #define SME_TMOP_F8F32_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,TIED) \ { NAME, OPCODE, MASK, CLASS, 0, SME_TMOP_F8F32, OPS, QUALS, \ FLAGS | F_STRICT, 0, TIED, NULL } +#define SME_MOP4_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, 0, SME_MOP4, OPS, QUALS, \ + FLAGS | F_STRICT, 0, TIED, NULL } +#define SME_MOP4_B16B16_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, 0, SME_MOP4_B16B16, OPS, QUALS, \ + FLAGS | F_STRICT, 0, TIED, NULL } +#define SME_MOP4_F16F16_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, 0, SME_MOP4_F16F16, OPS, QUALS, \ + FLAGS | F_STRICT, 0, TIED, NULL } +#define SME_MOP4_F64F64_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, 0, SME_MOP4_F64F64, OPS, QUALS, \ + FLAGS | F_STRICT, 0, TIED, NULL } +#define SME_MOP4_F8F16_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, 0, SME_MOP4_F8F16, OPS, QUALS, \ + FLAGS | F_STRICT, 0, TIED, NULL } +#define SME_MOP4_F8F32_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, 0, SME_MOP4_F8F32, OPS, QUALS, \ + FLAGS | F_STRICT, 0, TIED, NULL } +#define SME_MOP4_I16I64_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, 0, SME_MOP4_I16I64, OPS, QUALS, \ + FLAGS | F_STRICT, 0, TIED, NULL } #define MOPS_CPY_OP1_OP2_PME_INSN(NAME, OPCODE, MASK, FLAGS, CONSTRAINTS) \ MOPS_INSN (NAME, OPCODE, MASK, 0, \ @@ -7548,6 +7594,144 @@ const struct aarch64_opcode aarch64_opcode_table[] = SME_TMOP_INSN ("utmopa", 0x81408008, 0xffe0e00c, sme_misc, OP4 (SME_ZAda_2b, SME_Znx2, SVE_Zm_16, SME_Zk_INDEX), OP_SVE_SHHU, 0, 0), SME_TMOP_INSN ("utmopa", 0x81608000, 0xffe0e00c, sme_misc, OP4 (SME_ZAda_2b, SME_Znx2, SVE_Zm_16, SME_Zk_INDEX), OP_SVE_SBBU, 0, 0), + /* SME MOP4 instructions. */ + SME_MOP4_B16B16_INSN ("bfmop4a", 0x81300008, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_B16B16_INSN ("bfmop4a", 0x81200008, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_B16B16_INSN ("bfmop4a", 0x81200208, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_B16B16_INSN ("bfmop4a", 0x81300208, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_INSN ("bfmop4a", 0x81100000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("bfmop4a", 0x81000000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("bfmop4a", 0x81000200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("bfmop4a", 0x81100200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_B16B16_INSN ("bfmop4s", 0x81300018, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_B16B16_INSN ("bfmop4s", 0x81200018, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_B16B16_INSN ("bfmop4s", 0x81200218, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_B16B16_INSN ("bfmop4s", 0x81300218, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_INSN ("bfmop4s", 0x81100010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("bfmop4s", 0x81000010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("bfmop4s", 0x81000210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("bfmop4s", 0x81100210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_F16F16_INSN ("fmop4a", 0x81100008, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_F16F16_INSN ("fmop4a", 0x81000008, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_F16F16_INSN ("fmop4a", 0x81000208, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_F16F16_INSN ("fmop4a", 0x81100208, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_INSN ("fmop4a", 0x80100000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SSS, 0, 0), + SME_MOP4_INSN ("fmop4a", 0x80000000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SSS, 0, 0), + SME_MOP4_INSN ("fmop4a", 0x80000200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SSS, 0, 0), + SME_MOP4_INSN ("fmop4a", 0x80100200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SSS, 0, 0), + SME_MOP4_F64F64_INSN ("fmop4a", 0x80d00008, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_DDD, 0, 0), + SME_MOP4_F64F64_INSN ("fmop4a", 0x80c00008, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_DDD, 0, 0), + SME_MOP4_F64F64_INSN ("fmop4a", 0x80c00208, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_DDD, 0, 0), + SME_MOP4_F64F64_INSN ("fmop4a", 0x80d00208, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_DDD, 0, 0), + SME_MOP4_INSN ("fmop4a", 0x81300000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("fmop4a", 0x81200000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("fmop4a", 0x81200200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("fmop4a", 0x81300200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_F8F16_INSN ("fmop4a", 0x80300008, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_HBB, 0, 0), + SME_MOP4_F8F16_INSN ("fmop4a", 0x80200008, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_HBB, 0, 0), + SME_MOP4_F8F16_INSN ("fmop4a", 0x80200208, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_HBB, 0, 0), + SME_MOP4_F8F16_INSN ("fmop4a", 0x80300208, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_HBB, 0, 0), + SME_MOP4_F8F32_INSN ("fmop4a", 0x80300000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_F8F32_INSN ("fmop4a", 0x80200000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_F8F32_INSN ("fmop4a", 0x80200200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_F8F32_INSN ("fmop4a", 0x80300200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_F16F16_INSN ("fmop4s", 0x81100018, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_F16F16_INSN ("fmop4s", 0x81000018, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_F16F16_INSN ("fmop4s", 0x81000218, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_F16F16_INSN ("fmop4s", 0x81100218, 0xfff1fe3e, sme_misc, OP3 (SME_ZAda_1b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_HHH, 0, 0), + SME_MOP4_INSN ("fmop4s", 0x80100010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SSS, 0, 0), + SME_MOP4_INSN ("fmop4s", 0x80000010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SSS, 0, 0), + SME_MOP4_INSN ("fmop4s", 0x80000210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SSS, 0, 0), + SME_MOP4_INSN ("fmop4s", 0x80100210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SSS, 0, 0), + SME_MOP4_F64F64_INSN ("fmop4s", 0x80d00018, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_DDD, 0, 0), + SME_MOP4_F64F64_INSN ("fmop4s", 0x80c00018, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_DDD, 0, 0), + SME_MOP4_F64F64_INSN ("fmop4s", 0x80c00218, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_DDD, 0, 0), + SME_MOP4_F64F64_INSN ("fmop4s", 0x80d00218, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_DDD, 0, 0), + SME_MOP4_INSN ("fmop4s", 0x81300010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("fmop4s", 0x81200010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("fmop4s", 0x81200210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("fmop4s", 0x81300210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("smop4a", 0x80108008, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("smop4a", 0x80008008, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("smop4a", 0x80008208, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("smop4a", 0x80108208, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("smop4a", 0x80108000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("smop4a", 0x80008000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("smop4a", 0x80008200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("smop4a", 0x80108200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_I16I64_INSN ("smop4a", 0xa0d00008, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("smop4a", 0xa0c00008, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("smop4a", 0xa0c00208, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("smop4a", 0xa0d00208, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_INSN ("smop4s", 0x80108018, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("smop4s", 0x80008018, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("smop4s", 0x80008218, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("smop4s", 0x80108218, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("smop4s", 0x80108010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("smop4s", 0x80008010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("smop4s", 0x80008210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("smop4s", 0x80108210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_I16I64_INSN ("smop4s", 0xa0d00018, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("smop4s", 0xa0c00018, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("smop4s", 0xa0c00218, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("smop4s", 0xa0d00218, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_INSN ("sumop4a", 0x80308000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("sumop4a", 0x80208000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("sumop4a", 0x80208200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("sumop4a", 0x80308200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_I16I64_INSN ("sumop4a", 0xa0f00008, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("sumop4a", 0xa0e00008, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("sumop4a", 0xa0e00208, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("sumop4a", 0xa0f00208, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_INSN ("sumop4s", 0x80308010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("sumop4s", 0x80208010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("sumop4s", 0x80208210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("sumop4s", 0x80308210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_I16I64_INSN ("sumop4s", 0xa0f00018, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("sumop4s", 0xa0e00018, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("sumop4s", 0xa0e00218, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("sumop4s", 0xa0f00218, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_INSN ("umop4a", 0x81108008, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("umop4a", 0x81008008, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("umop4a", 0x81008208, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("umop4a", 0x81108208, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("umop4a", 0x81308000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("umop4a", 0x81208000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("umop4a", 0x81208200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("umop4a", 0x81308200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_I16I64_INSN ("umop4a", 0xa1f00008, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("umop4a", 0xa1e00008, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("umop4a", 0xa1e00208, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("umop4a", 0xa1f00208, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_INSN ("umop4s", 0x81108018, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("umop4s", 0x81008018, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("umop4s", 0x81008218, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("umop4s", 0x81108218, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SHH, 0, 0), + SME_MOP4_INSN ("umop4s", 0x81308010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("umop4s", 0x81208010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("umop4s", 0x81208210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("umop4s", 0x81308210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_I16I64_INSN ("umop4s", 0xa1f00018, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("umop4s", 0xa1e00018, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("umop4s", 0xa1e00218, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("umop4s", 0xa1f00218, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_INSN ("usmop4a", 0x81108000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("usmop4a", 0x81008000, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("usmop4a", 0x81008200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("usmop4a", 0x81108200, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_I16I64_INSN ("usmop4a", 0xa1d00008, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("usmop4a", 0xa1c00008, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("usmop4a", 0xa1c00208, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("usmop4a", 0xa1d00208, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_INSN ("usmop4s", 0x81108010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("usmop4s", 0x81008010, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("usmop4s", 0x81008210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_INSN ("usmop4s", 0x81108210, 0xfff1fe3c, sme_misc, OP3 (SME_ZAda_2b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_SBB, 0, 0), + SME_MOP4_I16I64_INSN ("usmop4s", 0xa1d00018, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("usmop4s", 0xa1c00018, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Zn_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("usmop4s", 0xa1c00218, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zm_17_3), OP_SVE_DHH, 0, 0), + SME_MOP4_I16I64_INSN ("usmop4s", 0xa1d00218, 0xfff1fe38, sme_misc, OP3 (SME_ZAda_3b, SME_Znx2_6_3, SME_Zmx2_17_3), OP_SVE_DHH, 0, 0), + {0, 0, 0, 0, 0, 0, {}, {}, 0, 0, 0, NULL}, }; @@ -8103,6 +8287,18 @@ const struct aarch64_opcode aarch64_opcode_table[] = "an SVE vector register") \ Y(SVE_REG, regno, "SME_Zm_17", 0, F(FLD_SME_Zm2), \ "an SVE vector register") \ + Y(SVE_REG, regno, "SME_Zn_6_3", 0, \ + F(FLD_CONST_0, FLD_SME_Zn6_3, FLD_CONST_0), \ + "an SVE vector register") \ + Y(SVE_REG, regno, "SME_Zm_17_3", 0, \ + F(FLD_CONST_1, FLD_SME_Zm17_3, FLD_CONST_0), \ + "an SVE vector register") \ + Y(SVE_REGLIST, sve_aligned_reglist, "SME_Znx2_6_3", \ + 2 << OPD_F_OD_LSB, F(FLD_CONST_0, FLD_SME_Zn6_3, FLD_CONST_0), \ + "a list of SVE vector registers") \ + Y(SVE_REGLIST, sve_aligned_reglist, "SME_Zmx2_17_3", \ + 2 << OPD_F_OD_LSB, F(FLD_CONST_1, FLD_SME_Zm17_3, FLD_CONST_0), \ + "a list of SVE vector registers") \ Y(SVE_REGLIST, sve_aligned_reglist, "SME_Zmx2", 2 << OPD_F_OD_LSB, \ F(FLD_SME_Zm2, FLD_CONST_0), "a list of SVE vector registers") \ Y(SVE_REGLIST, sve_aligned_reglist, "SME_Zmx4", 4 << OPD_F_OD_LSB, \