]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
aarch64: Add support for FEAT_SME_MOP4
authorAlice Carlotti <alice.carlotti@arm.com>
Tue, 7 Oct 2025 22:40:26 +0000 (23:40 +0100)
committerAlice Carlotti <alice.carlotti@arm.com>
Fri, 10 Oct 2025 00:29:19 +0000 (01:29 +0100)
27 files changed:
gas/config/tc-aarch64.c
gas/doc/c-aarch64.texi
gas/testsuite/gas/aarch64/sme-mop4-b16b16.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-b16b16.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-f16f16.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-f16f16.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-f64f64.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-f64f64.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-f8f16.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-f8f16.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-f8f32.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-f8f32.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-i16i64.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-i16i64.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4-invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-mop4.s [new file with mode: 0644]
include/opcode/aarch64.h
opcodes/aarch64-asm-2.c
opcodes/aarch64-dis-2.c
opcodes/aarch64-opc-2.c
opcodes/aarch64-opc.c
opcodes/aarch64-opc.h
opcodes/aarch64-tbl-2.h
opcodes/aarch64-tbl.h

index 4a66642cc046110121dda7286359e6e29e4c431d..59d950663a87274144cfced85ebbeae0af137735 100644 (file)
@@ -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},
 };
 
index 5176757c235feb47b64745ac2552c8dbe12eb515..2f95f91a66eb82aa00b95910d48a180fa985c7d5 100644 (file)
@@ -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 (file)
index 0000000..ff6370f
--- /dev/null
@@ -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 (file)
index 0000000..5668315
--- /dev/null
@@ -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 (file)
index 0000000..f476892
--- /dev/null
@@ -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 (file)
index 0000000..bf4b959
--- /dev/null
@@ -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 (file)
index 0000000..37da27d
--- /dev/null
@@ -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 (file)
index 0000000..934bf72
--- /dev/null
@@ -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 (file)
index 0000000..02b0d3a
--- /dev/null
@@ -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 (file)
index 0000000..438f7dd
--- /dev/null
@@ -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 (file)
index 0000000..0cbe645
--- /dev/null
@@ -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 (file)
index 0000000..78f5c30
--- /dev/null
@@ -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 (file)
index 0000000..93459ef
--- /dev/null
@@ -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 (file)
index 0000000..cb6a36b
--- /dev/null
@@ -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 (file)
index 0000000..54085c9
--- /dev/null
@@ -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 (file)
index 0000000..1436b0a
--- /dev/null
@@ -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 (file)
index 0000000..d883908
--- /dev/null
@@ -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 (file)
index 0000000..442c53b
--- /dev/null
@@ -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 (file)
index 0000000..e1b92ff
--- /dev/null
@@ -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 }
index 099fb2366dff316b8a9427b54bdf4614e6a59f88..f3c6249afdb93d764560cc352e8024f10b88a1fc 100644 (file)
@@ -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.  */
index a5dbabbb3cd4dd76257cc2a61a11283cf79d2ddf..b0611654ead5a243cda098b4f98d0a793e96d030 100644 (file)
@@ -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:
index 87e0f2a54baad9458d4ca52b04783bd6aae0ce19..ecaea2d2fdba98a73d902cdc97466bc469787fd3 100644 (file)
@@ -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:
index dc8aab5a588dbcd4c9b76ac9127c571f71c569b3..7f3b25eae384c21ae65fc4fa42e36417e7cef26d 100644 (file)
@@ -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"},
index 07aba80a088a58fae34efa5c2c92f22118c9d793..b074765920ed88f2d39c5fdf738a7c472db03eb3 100644 (file)
@@ -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:
index cd639fde6de51c4f9cd38b2c8b4c7b14728dd480..5d544d53baf052a5f580adbc277e52bfade303c0 100644 (file)
@@ -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,
index 3d06d5c7ae33d8fb5df9454f90c75f5d5090f52f..1263f1f9bd8da85305696d009e7804948a8aecc5 100644 (file)
@@ -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,
 };
index f836c66f4bfe09e9eeea0c076782d4b091f42690..4f17226674cf0f29111c1345aa1b57c5a2338d47 100644 (file)
 {                                                       \
   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, \