aarch64: Add sme-i16i64 and sme-f64f64 aliases
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 30 Mar 2023 10:09:01 +0000 (11:09 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 30 Mar 2023 10:09:01 +0000 (11:09 +0100)
Most extension flags are named after the associated architectural
FEAT_* flags, but sme-i64 and sme-f64 were exceptions.  This patch
adds sme-i16i64 and sme-f64f64 aliases, but keeps the old names too
for compatibility.

gas/config/tc-aarch64.c
gas/doc/c-aarch64.texi
gas/testsuite/gas/aarch64/sme-f64f64.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-i16i64.d [new file with mode: 0644]
include/opcode/aarch64.h
opcodes/aarch64-tbl.h

index c1736c2c684b08d88ae589278cd1004e0683eefb..eb28ea3dce2a97d7b60e0188cfda232e4a9c4645 100644 (file)
@@ -10156,9 +10156,13 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = {
   {"sme",              AARCH64_FEATURE (AARCH64_FEATURE_SME, 0),
                        AARCH64_FEATURE (AARCH64_FEATURE_SVE2
                                         | AARCH64_FEATURE_BFLOAT16, 0)},
-  {"sme-f64",          AARCH64_FEATURE (AARCH64_FEATURE_SME_F64, 0),
+  {"sme-f64",          AARCH64_FEATURE (AARCH64_FEATURE_SME_F64F64, 0),
                        AARCH64_FEATURE (AARCH64_FEATURE_SME, 0)},
-  {"sme-i64",          AARCH64_FEATURE (AARCH64_FEATURE_SME_I64, 0),
+  {"sme-f64f64",       AARCH64_FEATURE (AARCH64_FEATURE_SME_F64F64, 0),
+                       AARCH64_FEATURE (AARCH64_FEATURE_SME, 0)},
+  {"sme-i64",          AARCH64_FEATURE (AARCH64_FEATURE_SME_I16I64, 0),
+                       AARCH64_FEATURE (AARCH64_FEATURE_SME, 0)},
+  {"sme-i16i64",       AARCH64_FEATURE (AARCH64_FEATURE_SME_I16I64, 0),
                        AARCH64_FEATURE (AARCH64_FEATURE_SME, 0)},
   {"bf16",             AARCH64_FEATURE (AARCH64_FEATURE_BFLOAT16, 0),
                        AARCH64_FEATURE (AARCH64_FEATURE_FP, 0)},
index 8aee80b7ebba93d22132d4e10222b4402076a6da..3921c0d368e866ec9a51d65a470fb15a0eff5fbb 100644 (file)
@@ -231,10 +231,10 @@ automatically cause those extensions to be disabled.
  @code{fp} and @code{simd}.
 @item @code{sme} @tab Armv9-A @tab No
  @tab Enable SME Extension.
-@item @code{sme-f64} @tab Armv9-A @tab No
- @tab Enable SME F64 Extension.
-@item @code{sme-i64} @tab Armv9-A @tab No
- @tab Enable SME I64 Extension.
+@item @code{sme-f64f64} @tab Armv9-A @tab No
+ @tab Enable SME F64F64 Extension.
+@item @code{sme-i16i64} @tab Armv9-A @tab No
+ @tab Enable SME I16I64 Extension.
 @item @code{ssbs} @tab ARMv8-A @tab ARMv8.5-A or later
  @tab Enable Speculative Store Bypassing Safe state read and write.
 @item @code{sve} @tab ARMv8.2-A @tab Armv9-A or later
diff --git a/gas/testsuite/gas/aarch64/sme-f64f64.d b/gas/testsuite/gas/aarch64/sme-f64f64.d
new file mode 100644 (file)
index 0000000..b452415
--- /dev/null
@@ -0,0 +1,32 @@
+#name: SME F64 extension
+#as: -march=armv8-a+sme-f64f64
+#source: sme-f64.s
+#objdump: -dr
+
+.*:     file format .*
+
+Disassembly of section \.text:
+
+0+ <.*>:
+   0:  80c82020        fmopa   za0.d, p0/m, p1/m, z1.d, z8.d
+   4:  80c76841        fmopa   za1.d, p2/m, p3/m, z2.d, z7.d
+   8:  80c6b062        fmopa   za2.d, p4/m, p5/m, z3.d, z6.d
+   c:  80c5f883        fmopa   za3.d, p6/m, p7/m, z4.d, z5.d
+  10:  80c404a4        fmopa   za4.d, p1/m, p0/m, z5.d, z4.d
+  14:  80c34cc5        fmopa   za5.d, p3/m, p2/m, z6.d, z3.d
+  18:  80c294e6        fmopa   za6.d, p5/m, p4/m, z7.d, z2.d
+  1c:  80c1dd07        fmopa   za7.d, p7/m, p6/m, z8.d, z1.d
+  20:  80c41ca4        fmopa   za4.d, p7/m, p0/m, z5.d, z4.d
+  24:  80c338c5        fmopa   za5.d, p6/m, p1/m, z6.d, z3.d
+  28:  80c254e6        fmopa   za6.d, p5/m, p2/m, z7.d, z2.d
+  2c:  80c17107        fmopa   za7.d, p4/m, p3/m, z8.d, z1.d
+  30:  80c82030        fmops   za0.d, p0/m, p1/m, z1.d, z8.d
+  34:  80c76851        fmops   za1.d, p2/m, p3/m, z2.d, z7.d
+  38:  80c6b072        fmops   za2.d, p4/m, p5/m, z3.d, z6.d
+  3c:  80c5f893        fmops   za3.d, p6/m, p7/m, z4.d, z5.d
+  40:  80c404b4        fmops   za4.d, p1/m, p0/m, z5.d, z4.d
+  44:  80c34cd5        fmops   za5.d, p3/m, p2/m, z6.d, z3.d
+  48:  80c294f6        fmops   za6.d, p5/m, p4/m, z7.d, z2.d
+  4c:  80c1dd17        fmops   za7.d, p7/m, p6/m, z8.d, z1.d
+  50:  81a1f803        fmopa   za3.s, p6/m, p7/m, z0.h, z1.h
+  54:  8081f813        fmops   za3.s, p6/m, p7/m, z0.s, z1.s
diff --git a/gas/testsuite/gas/aarch64/sme-i16i64.d b/gas/testsuite/gas/aarch64/sme-i16i64.d
new file mode 100644 (file)
index 0000000..1fa1fb6
--- /dev/null
@@ -0,0 +1,118 @@
+#name: SME I64 extension
+#as: -march=armv8-a+sme-i16i64
+#source: sme-i64.s
+#objdump: -dr
+
+.*:     file format .*
+
+Disassembly of section \.text:
+
+0+ <.*>:
+   0:  c0d02020        addha   za0.d, p0/m, p1/m, z1.d
+   4:  c0d06841        addha   za1.d, p2/m, p3/m, z2.d
+   8:  c0d0b062        addha   za2.d, p4/m, p5/m, z3.d
+   c:  c0d0f883        addha   za3.d, p6/m, p7/m, z4.d
+  10:  c0d004a4        addha   za4.d, p1/m, p0/m, z5.d
+  14:  c0d04cc5        addha   za5.d, p3/m, p2/m, z6.d
+  18:  c0d094e6        addha   za6.d, p5/m, p4/m, z7.d
+  1c:  c0d0dd07        addha   za7.d, p7/m, p6/m, z8.d
+  20:  c0d01ca4        addha   za4.d, p7/m, p0/m, z5.d
+  24:  c0d038c5        addha   za5.d, p6/m, p1/m, z6.d
+  28:  c0d054e6        addha   za6.d, p5/m, p2/m, z7.d
+  2c:  c0d07107        addha   za7.d, p4/m, p3/m, z8.d
+  30:  c0d12020        addva   za0.d, p0/m, p1/m, z1.d
+  34:  c0d16841        addva   za1.d, p2/m, p3/m, z2.d
+  38:  c0d1b062        addva   za2.d, p4/m, p5/m, z3.d
+  3c:  c0d1f883        addva   za3.d, p6/m, p7/m, z4.d
+  40:  c0d104a4        addva   za4.d, p1/m, p0/m, z5.d
+  44:  c0d14cc5        addva   za5.d, p3/m, p2/m, z6.d
+  48:  c0d194e6        addva   za6.d, p5/m, p4/m, z7.d
+  4c:  c0d1dd07        addva   za7.d, p7/m, p6/m, z8.d
+  50:  c0d11ca4        addva   za4.d, p7/m, p0/m, z5.d
+  54:  c0d138c5        addva   za5.d, p6/m, p1/m, z6.d
+  58:  c0d154e6        addva   za6.d, p5/m, p2/m, z7.d
+  5c:  c0d17107        addva   za7.d, p4/m, p3/m, z8.d
+  60:  a0c82020        smopa   za0.d, p0/m, p1/m, z1.h, z8.h
+  64:  a0c76841        smopa   za1.d, p2/m, p3/m, z2.h, z7.h
+  68:  a0c6b062        smopa   za2.d, p4/m, p5/m, z3.h, z6.h
+  6c:  a0c5f883        smopa   za3.d, p6/m, p7/m, z4.h, z5.h
+  70:  a0c404a4        smopa   za4.d, p1/m, p0/m, z5.h, z4.h
+  74:  a0c34cc5        smopa   za5.d, p3/m, p2/m, z6.h, z3.h
+  78:  a0c294e6        smopa   za6.d, p5/m, p4/m, z7.h, z2.h
+  7c:  a0c1dd07        smopa   za7.d, p7/m, p6/m, z8.h, z1.h
+  80:  a0c82030        smops   za0.d, p0/m, p1/m, z1.h, z8.h
+  84:  a0c76851        smops   za1.d, p2/m, p3/m, z2.h, z7.h
+  88:  a0c6b072        smops   za2.d, p4/m, p5/m, z3.h, z6.h
+  8c:  a0c5f893        smops   za3.d, p6/m, p7/m, z4.h, z5.h
+  90:  a0c404b4        smops   za4.d, p1/m, p0/m, z5.h, z4.h
+  94:  a0c34cd5        smops   za5.d, p3/m, p2/m, z6.h, z3.h
+  98:  a0c294f6        smops   za6.d, p5/m, p4/m, z7.h, z2.h
+  9c:  a0c1dd17        smops   za7.d, p7/m, p6/m, z8.h, z1.h
+  a0:  a0c41cb4        smops   za4.d, p7/m, p0/m, z5.h, z4.h
+  a4:  a0c338d5        smops   za5.d, p6/m, p1/m, z6.h, z3.h
+  a8:  a0c254f6        smops   za6.d, p5/m, p2/m, z7.h, z2.h
+  ac:  a0c17117        smops   za7.d, p4/m, p3/m, z8.h, z1.h
+  b0:  a0e82020        sumopa  za0.d, p0/m, p1/m, z1.h, z8.h
+  b4:  a0e76841        sumopa  za1.d, p2/m, p3/m, z2.h, z7.h
+  b8:  a0e6b062        sumopa  za2.d, p4/m, p5/m, z3.h, z6.h
+  bc:  a0e5f883        sumopa  za3.d, p6/m, p7/m, z4.h, z5.h
+  c0:  a0e404a4        sumopa  za4.d, p1/m, p0/m, z5.h, z4.h
+  c4:  a0e34cc5        sumopa  za5.d, p3/m, p2/m, z6.h, z3.h
+  c8:  a0e294e6        sumopa  za6.d, p5/m, p4/m, z7.h, z2.h
+  cc:  a0e1dd07        sumopa  za7.d, p7/m, p6/m, z8.h, z1.h
+  d0:  a0e82030        sumops  za0.d, p0/m, p1/m, z1.h, z8.h
+  d4:  a0e76851        sumops  za1.d, p2/m, p3/m, z2.h, z7.h
+  d8:  a0e6b072        sumops  za2.d, p4/m, p5/m, z3.h, z6.h
+  dc:  a0e5f893        sumops  za3.d, p6/m, p7/m, z4.h, z5.h
+  e0:  a0e404b4        sumops  za4.d, p1/m, p0/m, z5.h, z4.h
+  e4:  a0e34cd5        sumops  za5.d, p3/m, p2/m, z6.h, z3.h
+  e8:  a0e294f6        sumops  za6.d, p5/m, p4/m, z7.h, z2.h
+  ec:  a0e1dd17        sumops  za7.d, p7/m, p6/m, z8.h, z1.h
+  f0:  a1e82020        umopa   za0.d, p0/m, p1/m, z1.h, z8.h
+  f4:  a1e76841        umopa   za1.d, p2/m, p3/m, z2.h, z7.h
+  f8:  a1e6b062        umopa   za2.d, p4/m, p5/m, z3.h, z6.h
+  fc:  a1e5f883        umopa   za3.d, p6/m, p7/m, z4.h, z5.h
+ 100:  a1e404a4        umopa   za4.d, p1/m, p0/m, z5.h, z4.h
+ 104:  a1e34cc5        umopa   za5.d, p3/m, p2/m, z6.h, z3.h
+ 108:  a1e294e6        umopa   za6.d, p5/m, p4/m, z7.h, z2.h
+ 10c:  a1e1dd07        umopa   za7.d, p7/m, p6/m, z8.h, z1.h
+ 110:  a1e82030        umops   za0.d, p0/m, p1/m, z1.h, z8.h
+ 114:  a1e76851        umops   za1.d, p2/m, p3/m, z2.h, z7.h
+ 118:  a1e6b072        umops   za2.d, p4/m, p5/m, z3.h, z6.h
+ 11c:  a1e5f893        umops   za3.d, p6/m, p7/m, z4.h, z5.h
+ 120:  a1e404b4        umops   za4.d, p1/m, p0/m, z5.h, z4.h
+ 124:  a1e34cd5        umops   za5.d, p3/m, p2/m, z6.h, z3.h
+ 128:  a1e294f6        umops   za6.d, p5/m, p4/m, z7.h, z2.h
+ 12c:  a1e1dd17        umops   za7.d, p7/m, p6/m, z8.h, z1.h
+ 130:  a1c82020        usmopa  za0.d, p0/m, p1/m, z1.h, z8.h
+ 134:  a1c76841        usmopa  za1.d, p2/m, p3/m, z2.h, z7.h
+ 138:  a1c6b062        usmopa  za2.d, p4/m, p5/m, z3.h, z6.h
+ 13c:  a1c5f883        usmopa  za3.d, p6/m, p7/m, z4.h, z5.h
+ 140:  a1c404a4        usmopa  za4.d, p1/m, p0/m, z5.h, z4.h
+ 144:  a1c34cc5        usmopa  za5.d, p3/m, p2/m, z6.h, z3.h
+ 148:  a1c294e6        usmopa  za6.d, p5/m, p4/m, z7.h, z2.h
+ 14c:  a1c1dd07        usmopa  za7.d, p7/m, p6/m, z8.h, z1.h
+ 150:  a1c82030        usmops  za0.d, p0/m, p1/m, z1.h, z8.h
+ 154:  a1c76851        usmops  za1.d, p2/m, p3/m, z2.h, z7.h
+ 158:  a1c6b072        usmops  za2.d, p4/m, p5/m, z3.h, z6.h
+ 15c:  a1c5f893        usmops  za3.d, p6/m, p7/m, z4.h, z5.h
+ 160:  a1c404b4        usmops  za4.d, p1/m, p0/m, z5.h, z4.h
+ 164:  a1c34cd5        usmops  za5.d, p3/m, p2/m, z6.h, z3.h
+ 168:  a1c294f6        usmops  za6.d, p5/m, p4/m, z7.h, z2.h
+ 16c:  a1c1dd17        usmops  za7.d, p7/m, p6/m, z8.h, z1.h
+ 170:  a1c41cb4        usmops  za4.d, p7/m, p0/m, z5.h, z4.h
+ 174:  a1c338d5        usmops  za5.d, p6/m, p1/m, z6.h, z3.h
+ 178:  a1c254f6        usmops  za6.d, p5/m, p2/m, z7.h, z2.h
+ 17c:  a1c17117        usmops  za7.d, p4/m, p3/m, z8.h, z1.h
+ 180:  c0d02020        addha   za0.d, p0/m, p1/m, z1.d
+ 184:  c0d17107        addva   za7.d, p4/m, p3/m, z8.d
+ 188:  8181f883        bfmopa  za3.s, p6/m, p7/m, z4.h, z1.h
+ 18c:  8181f893        bfmops  za3.s, p6/m, p7/m, z4.h, z1.h
+ 190:  a0c1dd07        smopa   za7.d, p7/m, p6/m, z8.h, z1.h
+ 194:  a0c17117        smops   za7.d, p4/m, p3/m, z8.h, z1.h
+ 198:  a0e1dd07        sumopa  za7.d, p7/m, p6/m, z8.h, z1.h
+ 19c:  a0e1dd17        sumops  za7.d, p7/m, p6/m, z8.h, z1.h
+ 1a0:  a1a1f883        umopa   za3.s, p6/m, p7/m, z4.b, z1.b
+ 1a4:  a1a1f893        umops   za3.s, p6/m, p7/m, z4.b, z1.b
+ 1a8:  a1817083        usmopa  za3.s, p4/m, p3/m, z4.b, z1.b
+ 1ac:  a181f893        usmops  za3.s, p6/m, p7/m, z4.b, z1.b
index 40b2fdbc893e9cefb358f225a74dfd53bdf9b04c..d0a0b629d990526e71a1b27501d264f61ea035b7 100644 (file)
@@ -96,8 +96,8 @@ typedef uint32_t aarch64_insn;
 #define AARCH64_FEATURE_F64MM       (1ULL << 54)
 #define AARCH64_FEATURE_FLAGM       (1ULL << 55) /* v8.4 Flag Manipulation.  */
 #define AARCH64_FEATURE_V9          (1ULL << 56) /* Armv9.0-A processors.  */
-#define AARCH64_FEATURE_SME_F64             (1ULL << 57) /* SME F64.  */
-#define AARCH64_FEATURE_SME_I64             (1ULL << 58) /* SME I64.  */
+#define AARCH64_FEATURE_SME_F64F64   (1ULL << 57) /* SME F64F64.  */
+#define AARCH64_FEATURE_SME_I16I64   (1ULL << 58) /* SME I16I64.  */
 #define AARCH64_FEATURE_V8_8        (1ULL << 59) /* Armv8.8 processors.  */
 #define AARCH64_FEATURE_CSSC        (1ULL << 60) /* Common Short Sequence Compression instructions.  */
 
index 511c439f96d349b93185536ffad4951f1447e6fd..6970365047139509818f9b2cfb876948d2ca3935 100644 (file)
@@ -2475,12 +2475,12 @@ static const aarch64_feature_set aarch64_feature_sve2bitperm =
   AARCH64_FEATURE (AARCH64_FEATURE_SVE2 | AARCH64_FEATURE_SVE2_BITPERM, 0);
 static const aarch64_feature_set aarch64_feature_sme =
   AARCH64_FEATURE (AARCH64_FEATURE_SVE2 | AARCH64_FEATURE_SME, 0);
-static const aarch64_feature_set aarch64_feature_sme_f64 =
+static const aarch64_feature_set aarch64_feature_sme_f64f64 =
   AARCH64_FEATURE (AARCH64_FEATURE_SVE2 | AARCH64_FEATURE_SME
-       | AARCH64_FEATURE_SME_F64, 0);
-static const aarch64_feature_set aarch64_feature_sme_i64 =
+       | AARCH64_FEATURE_SME_F64F64, 0);
+static const aarch64_feature_set aarch64_feature_sme_i16i64 =
   AARCH64_FEATURE (AARCH64_FEATURE_SVE2 | AARCH64_FEATURE_SME
-       | AARCH64_FEATURE_SME_I64, 0);
+       | AARCH64_FEATURE_SME_I16I64, 0);
 static const aarch64_feature_set aarch64_feature_v8_6 =
   AARCH64_FEATURE (AARCH64_FEATURE_V8_6, 0);
 static const aarch64_feature_set aarch64_feature_v8_7 =
@@ -2547,8 +2547,8 @@ static const aarch64_feature_set aarch64_feature_cssc =
 #define SVE2_SM4               &aarch64_feature_sve2sm4
 #define SVE2_BITPERM   &aarch64_feature_sve2bitperm
 #define SME            &aarch64_feature_sme
-#define SME_F64                &aarch64_feature_sme_f64
-#define SME_I64                &aarch64_feature_sme_i64
+#define SME_F64F64     &aarch64_feature_sme_f64f64
+#define SME_I16I64     &aarch64_feature_sme_i16i64
 #define ARMV8_6                &aarch64_feature_v8_6
 #define ARMV8_6_SVE            &aarch64_feature_v8_6
 #define BFLOAT16_SVE   &aarch64_feature_bfloat16_sve
@@ -2651,11 +2651,11 @@ static const aarch64_feature_set aarch64_feature_cssc =
 #define SME_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \
   { NAME, OPCODE, MASK, CLASS, OP, SME, OPS, QUALS, \
     FLAGS, 0, TIED, NULL }
-#define SME_F64_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \
-  { NAME, OPCODE, MASK, CLASS, OP, SME_F64, OPS, QUALS, \
+#define SME_F64F64_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \
+  { NAME, OPCODE, MASK, CLASS, OP, SME_F64F64, OPS, QUALS, \
     FLAGS, 0, TIED, NULL }
-#define SME_I64_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \
-  { NAME, OPCODE, MASK, CLASS, OP, SME_I64, OPS, QUALS, \
+#define SME_I16I64_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \
+  { NAME, OPCODE, MASK, CLASS, OP, SME_I16I64, OPS, QUALS, \
     FLAGS, 0, TIED, NULL }
 #define SME_INSNC(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,CONSTRAINTS,TIED) \
   { NAME, OPCODE, MASK, CLASS, OP, SME, OPS, QUALS, \
@@ -5207,36 +5207,36 @@ const struct aarch64_opcode aarch64_opcode_table[] =
   SVE2BITPERM_INSN ("bgrp", 0x4500b800, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, 0),
   /* SME instructions.  */
   SME_INSN ("addha", 0xc0900000, 0xffff001c, sme_misc, 0, OP4 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_S, 0, 0),
-  SME_I64_INSN ("addha", 0xc0d00000, 0xffff0018, sme_misc, 0, OP4 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_D, 0, 0),
+  SME_I16I64_INSN ("addha", 0xc0d00000, 0xffff0018, sme_misc, 0, OP4 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_D, 0, 0),
   SME_INSN ("addspl", 0x04605800, 0xffe0f800, sme_misc, 0, OP3 (Rd_SP, SVE_Rn_SP, SVE_SIMM6), OP_SVE_XXU, 0, 0),
   SME_INSN ("addsvl", 0x04205800, 0xffe0f800, sme_misc, 0, OP3 (Rd_SP, SVE_Rn_SP, SVE_SIMM6), OP_SVE_XXU, 0, 0),
   SME_INSN ("addva", 0xc0910000, 0xffff001c, sme_misc, 0, OP4 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_S, 0, 0),
-  SME_I64_INSN ("addva", 0xc0d10000, 0xffff0018, sme_misc, 0, OP4 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_D, 0, 0),
+  SME_I16I64_INSN ("addva", 0xc0d10000, 0xffff0018, sme_misc, 0, OP4 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_D, 0, 0),
   SME_INSN ("bfmopa", 0x81800000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_PN_PM_ZN_ZM, 0, 0),
   SME_INSN ("bfmops", 0x81800010, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_PN_PM_ZN_ZM, 0, 0),
   SME_INSN ("fmopa", 0x80800000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_S_S, 0, 0),
-  SME_F64_INSN ("fmopa", 0x80c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_D_D, 0, 0),
+  SME_F64F64_INSN ("fmopa", 0x80c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_D_D, 0, 0),
   SME_INSN ("fmopa", 0x81a00000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_H_H, 0, 0),
   SME_INSN ("fmops", 0x80800010, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_S_S, 0, 0),
-  SME_F64_INSN ("fmops", 0x80c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_D_D, 0, 0),
+  SME_F64F64_INSN ("fmops", 0x80c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_D_D, 0, 0),
   SME_INSN ("fmops", 0x81a00010, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_H_H, 0, 0),
   SME_INSN ("rdsvl", 0x04bf5800, 0xfffff800, sme_misc, 0, OP2 (Rd, SVE_SIMM6), OP_SVE_XU, 0, 0),
   SME_INSN ("smopa", 0xa0800000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0),
-  SME_I64_INSN ("smopa", 0xa0c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
+  SME_I16I64_INSN ("smopa", 0xa0c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
   SME_INSN ("smops", 0xa0800010, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0),
-  SME_I64_INSN ("smops", 0xa0c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
+  SME_I16I64_INSN ("smops", 0xa0c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
   SME_INSN ("sumopa", 0xa0a00000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0),
-  SME_I64_INSN ("sumopa", 0xa0e00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
+  SME_I16I64_INSN ("sumopa", 0xa0e00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
   SME_INSN ("sumops", 0xa0a00010 ,0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0),
-  SME_I64_INSN ("sumops", 0xa0e00010 ,0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
+  SME_I16I64_INSN ("sumops", 0xa0e00010 ,0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
   SME_INSN ("umopa", 0xa1a00000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0),
-  SME_I64_INSN ("umopa", 0xa1e00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
+  SME_I16I64_INSN ("umopa", 0xa1e00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
   SME_INSN ("umops", 0xa1a00010 ,0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0),
-  SME_I64_INSN ("umops", 0xa1e00010 ,0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
+  SME_I16I64_INSN ("umops", 0xa1e00010 ,0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
   SME_INSN ("usmopa", 0xa1800000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0),
-  SME_I64_INSN ("usmopa", 0xa1c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
+  SME_I16I64_INSN ("usmopa", 0xa1c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
   SME_INSN ("usmops", 0xa1800010, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0),
-  SME_I64_INSN ("usmops", 0xa1c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
+  SME_I16I64_INSN ("usmops", 0xa1c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0),
 
   SME_INSN ("mov", 0xc0020000, 0xff3e0200, sme_misc, 0, OP3 (SVE_Zd, SVE_Pg3, SME_ZA_HV_idx_src), OP_SME_BHSDQ_PM_BHSDQ, 0, 0),
   SME_INSN ("mov", 0xc0000000, 0xff3e0010, sme_misc, 0, OP3 (SME_ZA_HV_idx_dest, SVE_Pg3, SVE_Zn), OP_SME_BHSDQ_PM_BHSDQ, 0, 0),