[llvm] 9fbd57f - [AArch64]SME2 single-multi and multi-multi INT dot product instructions[part2]
Caroline Concatto via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 25 10:32:33 PDT 2022
Author: Caroline Concatto
Date: 2022-10-25T18:32:20+01:00
New Revision: 9fbd57fbe21a117f280a4a507fcd74b79163ec57
URL: https://github.com/llvm/llvm-project/commit/9fbd57fbe21a117f280a4a507fcd74b79163ec57
DIFF: https://github.com/llvm/llvm-project/commit/9fbd57fbe21a117f280a4a507fcd74b79163ec57.diff
LOG: [AArch64]SME2 single-multi and multi-multi INT dot product instructions[part2]
This patch adds the assembly/disassembly for the following instructions:
SDOT: (4-way, multiple and single vector): Multi-vector signed integer dot-product by vector.
SDOT (4-way, multiple vectors): Multi-vector signed integer dot-product.
UDOT: (4-way, multiple and single vector): Multi-vector unsigned integer dot-product by vector.
(4-way, multiple vectors): Multi-vector unsigned integer dot-product.
for groups of 2 and 4 ZA registers
The reference can be found here:
https://developer.arm.com/documentation/ddi0602/2022-09
Depends on: D135563
Differential Revision: https://reviews.llvm.org/D135760
Added:
Modified:
llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
llvm/test/MC/AArch64/SME2/sdot.s
llvm/test/MC/AArch64/SME2/udot.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td b/llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
index b092f2537e009..252543865e854 100644
--- a/llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
@@ -460,6 +460,10 @@ defm SDOT_VG2_M2ZZ_HtoS : sme2_dot_mla_add_sub_array_vg24_single<"sdot", 0b1010
defm SDOT_VG4_M4ZZ_HtoS : sme2_dot_mla_add_sub_array_vg24_single<"sdot", 0b1110101, MatrixOp32, ZZZZ_h, ZPR4b16>;
defm SDOT_VG2_M2Z2Z_HtoS : sme2_dot_mla_add_sub_array_vg2_multi<"sdot", 0b110101, MatrixOp32, ZZ_h_mul_r>;
defm SDOT_VG4_M4Z4Z_HtoS : sme2_dot_mla_add_sub_array_vg4_multi<"sdot", 0b110101, MatrixOp32, ZZZZ_h_mul_r>;
+defm SDOT_VG2_M2ZZ_BtoS : sme2_dot_mla_add_sub_array_vg24_single<"sdot", 0b0010100, MatrixOp32, ZZ_b, ZPR4b8>;
+defm SDOT_VG4_M4ZZ_BtoS : sme2_dot_mla_add_sub_array_vg24_single<"sdot", 0b0110100, MatrixOp32, ZZZZ_b, ZPR4b8>;
+defm SDOT_VG2_M2Z2Z_BtoS : sme2_dot_mla_add_sub_array_vg2_multi<"sdot", 0b010100, MatrixOp32, ZZ_b_mul_r>;
+defm SDOT_VG4_M4Z4Z_BtoS : sme2_dot_mla_add_sub_array_vg4_multi<"sdot", 0b010100, MatrixOp32, ZZZZ_b_mul_r>;
defm SUDOT_VG2_M2ZZI_BToS : sme2_multi_vec_array_vg2_index_32b<"sudot", 0b1111, ZZ_b_mul_r, ZPR4b8>;
defm SUDOT_VG4_M4ZZI_BToS : sme2_multi_vec_array_vg4_index_32b<"sudot", 0b1111, ZZZZ_b_mul_r, ZPR4b8>;
@@ -479,6 +483,10 @@ defm UDOT_VG2_M2ZZ_HtoS : sme2_dot_mla_add_sub_array_vg24_single<"udot", 0b1010
defm UDOT_VG4_M4ZZ_HtoS : sme2_dot_mla_add_sub_array_vg24_single<"udot", 0b1110111, MatrixOp32, ZZZZ_h, ZPR4b16>;
defm UDOT_VG2_M2Z2Z_HtoS : sme2_dot_mla_add_sub_array_vg2_multi<"udot", 0b110111, MatrixOp32, ZZ_h_mul_r>;
defm UDOT_VG4_M4Z4Z_HtoS : sme2_dot_mla_add_sub_array_vg4_multi<"udot", 0b110111, MatrixOp32, ZZZZ_h_mul_r>;
+defm UDOT_VG2_M2ZZ_BtoS : sme2_dot_mla_add_sub_array_vg24_single<"udot", 0b0010110, MatrixOp32, ZZ_b, ZPR4b8>;
+defm UDOT_VG4_M4ZZ_BtoS : sme2_dot_mla_add_sub_array_vg24_single<"udot", 0b0110110, MatrixOp32, ZZZZ_b, ZPR4b8>;
+defm UDOT_VG2_M2Z2Z_BtoS : sme2_dot_mla_add_sub_array_vg2_multi<"udot", 0b010110, MatrixOp32, ZZ_b_mul_r>;
+defm UDOT_VG4_M4Z4Z_BtoS : sme2_dot_mla_add_sub_array_vg4_multi<"udot", 0b010110, MatrixOp32, ZZZZ_b_mul_r>;
defm USDOT_VG2_M2ZZI_BToS: sme2_multi_vec_array_vg2_index_32b<"usdot", 0b1101, ZZ_b_mul_r, ZPR4b8>;
defm USDOT_VG4_M4ZZI_BToS: sme2_multi_vec_array_vg4_index_32b<"usdot", 0b1101, ZZZZ_b_mul_r, ZPR4b8>;
@@ -513,11 +521,19 @@ defm SUBA_VG4_M4Z4Z_D : sme2_multivec_accum_add_sub_vg4_D<"sub", 0b11>;
defm SDOT_VG2_M2ZZI_HtoD : sme2_multi_vec_array_vg2_index_64b<"sdot", 0b01, ZZ_h_mul_r, ZPR4b16>;
defm SDOT_VG4_M4ZZI_HtoD : sme2_multi_vec_array_vg4_index_64b<"sdot", 0b001, ZZZZ_h_mul_r, ZPR4b16>;
+defm SDOT_VG2_M2ZZ_HtoD : sme2_dot_mla_add_sub_array_vg24_single<"sdot", 0b1010100, MatrixOp64, ZZ_h, ZPR4b16>;
+defm SDOT_VG4_M4ZZ_HtoD : sme2_dot_mla_add_sub_array_vg24_single<"sdot", 0b1110100, MatrixOp64, ZZZZ_h, ZPR4b16>;
+defm SDOT_VG2_M2Z2Z_HtoD : sme2_dot_mla_add_sub_array_vg2_multi<"sdot", 0b110100, MatrixOp64, ZZ_h_mul_r>;
+defm SDOT_VG4_M4Z4Z_HtoD : sme2_dot_mla_add_sub_array_vg4_multi<"sdot", 0b110100, MatrixOp64, ZZZZ_h_mul_r>;
defm SVDOT_VG4_M4ZZI_HtoD : sme2_multi_vec_array_vg4_index_64b<"svdot", 0b101, ZZZZ_h_mul_r, ZPR4b16>;
defm UDOT_VG2_M2ZZI_HtoD : sme2_multi_vec_array_vg2_index_64b<"udot", 0b11, ZZ_h_mul_r, ZPR4b16>;
defm UDOT_VG4_M4ZZI_HtoD : sme2_multi_vec_array_vg4_index_64b<"udot", 0b011, ZZZZ_h_mul_r, ZPR4b16>;
+defm UDOT_VG2_M2ZZ_HtoD : sme2_dot_mla_add_sub_array_vg24_single<"udot", 0b1010110, MatrixOp64, ZZ_h, ZPR4b16>;
+defm UDOT_VG4_M4ZZ_HtoD : sme2_dot_mla_add_sub_array_vg24_single<"udot", 0b1110110, MatrixOp64, ZZZZ_h, ZPR4b16>;
+defm UDOT_VG2_M2Z2Z_HtoD : sme2_dot_mla_add_sub_array_vg2_multi<"udot", 0b110110, MatrixOp64, ZZ_h_mul_r>;
+defm UDOT_VG4_M4Z4Z_HtoD : sme2_dot_mla_add_sub_array_vg4_multi<"udot", 0b110110, MatrixOp64, ZZZZ_h_mul_r>;
defm UVDOT_VG4_M4ZZI_HtoD : sme2_multi_vec_array_vg4_index_64b<"uvdot", 0b111, ZZZZ_h_mul_r, ZPR4b16>;
}
diff --git a/llvm/test/MC/AArch64/SME2/sdot.s b/llvm/test/MC/AArch64/SME2/sdot.s
index 742a97a9d3b0e..f1f1bdb9ed6be 100644
--- a/llvm/test/MC/AArch64/SME2/sdot.s
+++ b/llvm/test/MC/AArch64/SME2/sdot.s
@@ -447,6 +447,152 @@ sdot za.s[w9, 7], {z12.h, z13.h}, {z10.h, z11.h} // 11000001-11101010-001101
// CHECK-UNKNOWN: c1ea358f <unknown>
+
+sdot za.s[w8, 0, vgx2], {z0.b, z1.b}, z0.b // 11000001-00100000-00010100-00000000
+// CHECK-INST: sdot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b
+// CHECK-ENCODING: [0x00,0x14,0x20,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1201400 <unknown>
+
+sdot za.s[w8, 0], {z0.b, z1.b}, z0.b // 11000001-00100000-00010100-00000000
+// CHECK-INST: sdot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b
+// CHECK-ENCODING: [0x00,0x14,0x20,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1201400 <unknown>
+
+sdot za.s[w10, 5, vgx2], {z10.b, z11.b}, z5.b // 11000001-00100101-01010101-01000101
+// CHECK-INST: sdot za.s[w10, 5, vgx2], { z10.b, z11.b }, z5.b
+// CHECK-ENCODING: [0x45,0x55,0x25,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1255545 <unknown>
+
+sdot za.s[w10, 5], {z10.b, z11.b}, z5.b // 11000001-00100101-01010101-01000101
+// CHECK-INST: sdot za.s[w10, 5, vgx2], { z10.b, z11.b }, z5.b
+// CHECK-ENCODING: [0x45,0x55,0x25,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1255545 <unknown>
+
+sdot za.s[w11, 7, vgx2], {z13.b, z14.b}, z8.b // 11000001-00101000-01110101-10100111
+// CHECK-INST: sdot za.s[w11, 7, vgx2], { z13.b, z14.b }, z8.b
+// CHECK-ENCODING: [0xa7,0x75,0x28,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12875a7 <unknown>
+
+sdot za.s[w11, 7], {z13.b, z14.b}, z8.b // 11000001-00101000-01110101-10100111
+// CHECK-INST: sdot za.s[w11, 7, vgx2], { z13.b, z14.b }, z8.b
+// CHECK-ENCODING: [0xa7,0x75,0x28,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12875a7 <unknown>
+
+sdot za.s[w11, 7, vgx2], {z31.b, z0.b}, z15.b // 11000001-00101111-01110111-11100111
+// CHECK-INST: sdot za.s[w11, 7, vgx2], { z31.b, z0.b }, z15.b
+// CHECK-ENCODING: [0xe7,0x77,0x2f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12f77e7 <unknown>
+
+sdot za.s[w11, 7], {z31.b, z0.b}, z15.b // 11000001-00101111-01110111-11100111
+// CHECK-INST: sdot za.s[w11, 7, vgx2], { z31.b, z0.b }, z15.b
+// CHECK-ENCODING: [0xe7,0x77,0x2f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12f77e7 <unknown>
+
+sdot za.s[w8, 5, vgx2], {z17.b, z18.b}, z0.b // 11000001-00100000-00010110-00100101
+// CHECK-INST: sdot za.s[w8, 5, vgx2], { z17.b, z18.b }, z0.b
+// CHECK-ENCODING: [0x25,0x16,0x20,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1201625 <unknown>
+
+sdot za.s[w8, 5], {z17.b, z18.b}, z0.b // 11000001-00100000-00010110-00100101
+// CHECK-INST: sdot za.s[w8, 5, vgx2], { z17.b, z18.b }, z0.b
+// CHECK-ENCODING: [0x25,0x16,0x20,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1201625 <unknown>
+
+sdot za.s[w8, 1, vgx2], {z1.b, z2.b}, z14.b // 11000001-00101110-00010100-00100001
+// CHECK-INST: sdot za.s[w8, 1, vgx2], { z1.b, z2.b }, z14.b
+// CHECK-ENCODING: [0x21,0x14,0x2e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12e1421 <unknown>
+
+sdot za.s[w8, 1], {z1.b, z2.b}, z14.b // 11000001-00101110-00010100-00100001
+// CHECK-INST: sdot za.s[w8, 1, vgx2], { z1.b, z2.b }, z14.b
+// CHECK-ENCODING: [0x21,0x14,0x2e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12e1421 <unknown>
+
+sdot za.s[w10, 0, vgx2], {z19.b, z20.b}, z4.b // 11000001-00100100-01010110-01100000
+// CHECK-INST: sdot za.s[w10, 0, vgx2], { z19.b, z20.b }, z4.b
+// CHECK-ENCODING: [0x60,0x56,0x24,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1245660 <unknown>
+
+sdot za.s[w10, 0], {z19.b, z20.b}, z4.b // 11000001-00100100-01010110-01100000
+// CHECK-INST: sdot za.s[w10, 0, vgx2], { z19.b, z20.b }, z4.b
+// CHECK-ENCODING: [0x60,0x56,0x24,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1245660 <unknown>
+
+sdot za.s[w8, 0, vgx2], {z12.b, z13.b}, z2.b // 11000001-00100010-00010101-10000000
+// CHECK-INST: sdot za.s[w8, 0, vgx2], { z12.b, z13.b }, z2.b
+// CHECK-ENCODING: [0x80,0x15,0x22,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1221580 <unknown>
+
+sdot za.s[w8, 0], {z12.b, z13.b}, z2.b // 11000001-00100010-00010101-10000000
+// CHECK-INST: sdot za.s[w8, 0, vgx2], { z12.b, z13.b }, z2.b
+// CHECK-ENCODING: [0x80,0x15,0x22,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1221580 <unknown>
+
+sdot za.s[w10, 1, vgx2], {z1.b, z2.b}, z10.b // 11000001-00101010-01010100-00100001
+// CHECK-INST: sdot za.s[w10, 1, vgx2], { z1.b, z2.b }, z10.b
+// CHECK-ENCODING: [0x21,0x54,0x2a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12a5421 <unknown>
+
+sdot za.s[w10, 1], {z1.b, z2.b}, z10.b // 11000001-00101010-01010100-00100001
+// CHECK-INST: sdot za.s[w10, 1, vgx2], { z1.b, z2.b }, z10.b
+// CHECK-ENCODING: [0x21,0x54,0x2a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12a5421 <unknown>
+
+sdot za.s[w8, 5, vgx2], {z22.b, z23.b}, z14.b // 11000001-00101110-00010110-11000101
+// CHECK-INST: sdot za.s[w8, 5, vgx2], { z22.b, z23.b }, z14.b
+// CHECK-ENCODING: [0xc5,0x16,0x2e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12e16c5 <unknown>
+
+sdot za.s[w8, 5], {z22.b, z23.b}, z14.b // 11000001-00101110-00010110-11000101
+// CHECK-INST: sdot za.s[w8, 5, vgx2], { z22.b, z23.b }, z14.b
+// CHECK-ENCODING: [0xc5,0x16,0x2e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12e16c5 <unknown>
+
+sdot za.s[w11, 2, vgx2], {z9.b, z10.b}, z1.b // 11000001-00100001-01110101-00100010
+// CHECK-INST: sdot za.s[w11, 2, vgx2], { z9.b, z10.b }, z1.b
+// CHECK-ENCODING: [0x22,0x75,0x21,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1217522 <unknown>
+
+sdot za.s[w11, 2], {z9.b, z10.b}, z1.b // 11000001-00100001-01110101-00100010
+// CHECK-INST: sdot za.s[w11, 2, vgx2], { z9.b, z10.b }, z1.b
+// CHECK-ENCODING: [0x22,0x75,0x21,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1217522 <unknown>
+
+sdot za.s[w9, 7, vgx2], {z12.b, z13.b}, z11.b // 11000001-00101011-00110101-10000111
+// CHECK-INST: sdot za.s[w9, 7, vgx2], { z12.b, z13.b }, z11.b
+// CHECK-ENCODING: [0x87,0x35,0x2b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12b3587 <unknown>
+
+sdot za.s[w9, 7], {z12.b, z13.b}, z11.b // 11000001-00101011-00110101-10000111
+// CHECK-INST: sdot za.s[w9, 7, vgx2], { z12.b, z13.b }, z11.b
+// CHECK-ENCODING: [0x87,0x35,0x2b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12b3587 <unknown>
+
+
sdot za.s[w8, 0, vgx2], {z0.b, z1.b}, z0.b[0] // 11000001-01010000-00010000-00100000
// CHECK-INST: sdot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b[0]
// CHECK-ENCODING: [0x20,0x10,0x50,0xc1]
@@ -592,6 +738,297 @@ sdot za.s[w9, 7], {z12.b, z13.b}, z11.b[2] // 11000001-01011011-00111001-101
// CHECK-UNKNOWN: c15b39a7 <unknown>
+
+sdot za.s[w8, 0, vgx2], {z0.b, z1.b}, {z0.b, z1.b} // 11000001-10100000-00010100-00000000
+// CHECK-INST: sdot za.s[w8, 0, vgx2], { z0.b, z1.b }, { z0.b, z1.b }
+// CHECK-ENCODING: [0x00,0x14,0xa0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a01400 <unknown>
+
+sdot za.s[w8, 0], {z0.b, z1.b}, {z0.b, z1.b} // 11000001-10100000-00010100-00000000
+// CHECK-INST: sdot za.s[w8, 0, vgx2], { z0.b, z1.b }, { z0.b, z1.b }
+// CHECK-ENCODING: [0x00,0x14,0xa0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a01400 <unknown>
+
+sdot za.s[w10, 5, vgx2], {z10.b, z11.b}, {z20.b, z21.b} // 11000001-10110100-01010101-01000101
+// CHECK-INST: sdot za.s[w10, 5, vgx2], { z10.b, z11.b }, { z20.b, z21.b }
+// CHECK-ENCODING: [0x45,0x55,0xb4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b45545 <unknown>
+
+sdot za.s[w10, 5], {z10.b, z11.b}, {z20.b, z21.b} // 11000001-10110100-01010101-01000101
+// CHECK-INST: sdot za.s[w10, 5, vgx2], { z10.b, z11.b }, { z20.b, z21.b }
+// CHECK-ENCODING: [0x45,0x55,0xb4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b45545 <unknown>
+
+sdot za.s[w11, 7, vgx2], {z12.b, z13.b}, {z8.b, z9.b} // 11000001-10101000-01110101-10000111
+// CHECK-INST: sdot za.s[w11, 7, vgx2], { z12.b, z13.b }, { z8.b, z9.b }
+// CHECK-ENCODING: [0x87,0x75,0xa8,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a87587 <unknown>
+
+sdot za.s[w11, 7], {z12.b, z13.b}, {z8.b, z9.b} // 11000001-10101000-01110101-10000111
+// CHECK-INST: sdot za.s[w11, 7, vgx2], { z12.b, z13.b }, { z8.b, z9.b }
+// CHECK-ENCODING: [0x87,0x75,0xa8,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a87587 <unknown>
+
+sdot za.s[w11, 7, vgx2], {z30.b, z31.b}, {z30.b, z31.b} // 11000001-10111110-01110111-11000111
+// CHECK-INST: sdot za.s[w11, 7, vgx2], { z30.b, z31.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0xc7,0x77,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be77c7 <unknown>
+
+sdot za.s[w11, 7], {z30.b, z31.b}, {z30.b, z31.b} // 11000001-10111110-01110111-11000111
+// CHECK-INST: sdot za.s[w11, 7, vgx2], { z30.b, z31.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0xc7,0x77,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be77c7 <unknown>
+
+sdot za.s[w8, 5, vgx2], {z16.b, z17.b}, {z16.b, z17.b} // 11000001-10110000-00010110-00000101
+// CHECK-INST: sdot za.s[w8, 5, vgx2], { z16.b, z17.b }, { z16.b, z17.b }
+// CHECK-ENCODING: [0x05,0x16,0xb0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b01605 <unknown>
+
+sdot za.s[w8, 5], {z16.b, z17.b}, {z16.b, z17.b} // 11000001-10110000-00010110-00000101
+// CHECK-INST: sdot za.s[w8, 5, vgx2], { z16.b, z17.b }, { z16.b, z17.b }
+// CHECK-ENCODING: [0x05,0x16,0xb0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b01605 <unknown>
+
+sdot za.s[w8, 1, vgx2], {z0.b, z1.b}, {z30.b, z31.b} // 11000001-10111110-00010100-00000001
+// CHECK-INST: sdot za.s[w8, 1, vgx2], { z0.b, z1.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0x01,0x14,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be1401 <unknown>
+
+sdot za.s[w8, 1], {z0.b, z1.b}, {z30.b, z31.b} // 11000001-10111110-00010100-00000001
+// CHECK-INST: sdot za.s[w8, 1, vgx2], { z0.b, z1.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0x01,0x14,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be1401 <unknown>
+
+sdot za.s[w10, 0, vgx2], {z18.b, z19.b}, {z20.b, z21.b} // 11000001-10110100-01010110-01000000
+// CHECK-INST: sdot za.s[w10, 0, vgx2], { z18.b, z19.b }, { z20.b, z21.b }
+// CHECK-ENCODING: [0x40,0x56,0xb4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b45640 <unknown>
+
+sdot za.s[w10, 0], {z18.b, z19.b}, {z20.b, z21.b} // 11000001-10110100-01010110-01000000
+// CHECK-INST: sdot za.s[w10, 0, vgx2], { z18.b, z19.b }, { z20.b, z21.b }
+// CHECK-ENCODING: [0x40,0x56,0xb4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b45640 <unknown>
+
+sdot za.s[w8, 0, vgx2], {z12.b, z13.b}, {z2.b, z3.b} // 11000001-10100010-00010101-10000000
+// CHECK-INST: sdot za.s[w8, 0, vgx2], { z12.b, z13.b }, { z2.b, z3.b }
+// CHECK-ENCODING: [0x80,0x15,0xa2,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a21580 <unknown>
+
+sdot za.s[w8, 0], {z12.b, z13.b}, {z2.b, z3.b} // 11000001-10100010-00010101-10000000
+// CHECK-INST: sdot za.s[w8, 0, vgx2], { z12.b, z13.b }, { z2.b, z3.b }
+// CHECK-ENCODING: [0x80,0x15,0xa2,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a21580 <unknown>
+
+sdot za.s[w10, 1, vgx2], {z0.b, z1.b}, {z26.b, z27.b} // 11000001-10111010-01010100-00000001
+// CHECK-INST: sdot za.s[w10, 1, vgx2], { z0.b, z1.b }, { z26.b, z27.b }
+// CHECK-ENCODING: [0x01,0x54,0xba,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1ba5401 <unknown>
+
+sdot za.s[w10, 1], {z0.b, z1.b}, {z26.b, z27.b} // 11000001-10111010-01010100-00000001
+// CHECK-INST: sdot za.s[w10, 1, vgx2], { z0.b, z1.b }, { z26.b, z27.b }
+// CHECK-ENCODING: [0x01,0x54,0xba,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1ba5401 <unknown>
+
+sdot za.s[w8, 5, vgx2], {z22.b, z23.b}, {z30.b, z31.b} // 11000001-10111110-00010110-11000101
+// CHECK-INST: sdot za.s[w8, 5, vgx2], { z22.b, z23.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0xc5,0x16,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be16c5 <unknown>
+
+sdot za.s[w8, 5], {z22.b, z23.b}, {z30.b, z31.b} // 11000001-10111110-00010110-11000101
+// CHECK-INST: sdot za.s[w8, 5, vgx2], { z22.b, z23.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0xc5,0x16,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be16c5 <unknown>
+
+sdot za.s[w11, 2, vgx2], {z8.b, z9.b}, {z0.b, z1.b} // 11000001-10100000-01110101-00000010
+// CHECK-INST: sdot za.s[w11, 2, vgx2], { z8.b, z9.b }, { z0.b, z1.b }
+// CHECK-ENCODING: [0x02,0x75,0xa0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a07502 <unknown>
+
+sdot za.s[w11, 2], {z8.b, z9.b}, {z0.b, z1.b} // 11000001-10100000-01110101-00000010
+// CHECK-INST: sdot za.s[w11, 2, vgx2], { z8.b, z9.b }, { z0.b, z1.b }
+// CHECK-ENCODING: [0x02,0x75,0xa0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a07502 <unknown>
+
+sdot za.s[w9, 7, vgx2], {z12.b, z13.b}, {z10.b, z11.b} // 11000001-10101010-00110101-10000111
+// CHECK-INST: sdot za.s[w9, 7, vgx2], { z12.b, z13.b }, { z10.b, z11.b }
+// CHECK-ENCODING: [0x87,0x35,0xaa,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1aa3587 <unknown>
+
+sdot za.s[w9, 7], {z12.b, z13.b}, {z10.b, z11.b} // 11000001-10101010-00110101-10000111
+// CHECK-INST: sdot za.s[w9, 7, vgx2], { z12.b, z13.b }, { z10.b, z11.b }
+// CHECK-ENCODING: [0x87,0x35,0xaa,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1aa3587 <unknown>
+
+
+sdot za.d[w8, 0, vgx2], {z0.h, z1.h}, z0.h // 11000001-01100000-00010100-00000000
+// CHECK-INST: sdot za.d[w8, 0, vgx2], { z0.h, z1.h }, z0.h
+// CHECK-ENCODING: [0x00,0x14,0x60,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1601400 <unknown>
+
+sdot za.d[w8, 0], {z0.h, z1.h}, z0.h // 11000001-01100000-00010100-00000000
+// CHECK-INST: sdot za.d[w8, 0, vgx2], { z0.h, z1.h }, z0.h
+// CHECK-ENCODING: [0x00,0x14,0x60,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1601400 <unknown>
+
+sdot za.d[w10, 5, vgx2], {z10.h, z11.h}, z5.h // 11000001-01100101-01010101-01000101
+// CHECK-INST: sdot za.d[w10, 5, vgx2], { z10.h, z11.h }, z5.h
+// CHECK-ENCODING: [0x45,0x55,0x65,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1655545 <unknown>
+
+sdot za.d[w10, 5], {z10.h, z11.h}, z5.h // 11000001-01100101-01010101-01000101
+// CHECK-INST: sdot za.d[w10, 5, vgx2], { z10.h, z11.h }, z5.h
+// CHECK-ENCODING: [0x45,0x55,0x65,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1655545 <unknown>
+
+sdot za.d[w11, 7, vgx2], {z13.h, z14.h}, z8.h // 11000001-01101000-01110101-10100111
+// CHECK-INST: sdot za.d[w11, 7, vgx2], { z13.h, z14.h }, z8.h
+// CHECK-ENCODING: [0xa7,0x75,0x68,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16875a7 <unknown>
+
+sdot za.d[w11, 7], {z13.h, z14.h}, z8.h // 11000001-01101000-01110101-10100111
+// CHECK-INST: sdot za.d[w11, 7, vgx2], { z13.h, z14.h }, z8.h
+// CHECK-ENCODING: [0xa7,0x75,0x68,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16875a7 <unknown>
+
+sdot za.d[w11, 7, vgx2], {z31.h, z0.h}, z15.h // 11000001-01101111-01110111-11100111
+// CHECK-INST: sdot za.d[w11, 7, vgx2], { z31.h, z0.h }, z15.h
+// CHECK-ENCODING: [0xe7,0x77,0x6f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16f77e7 <unknown>
+
+sdot za.d[w11, 7], {z31.h, z0.h}, z15.h // 11000001-01101111-01110111-11100111
+// CHECK-INST: sdot za.d[w11, 7, vgx2], { z31.h, z0.h }, z15.h
+// CHECK-ENCODING: [0xe7,0x77,0x6f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16f77e7 <unknown>
+
+sdot za.d[w8, 5, vgx2], {z17.h, z18.h}, z0.h // 11000001-01100000-00010110-00100101
+// CHECK-INST: sdot za.d[w8, 5, vgx2], { z17.h, z18.h }, z0.h
+// CHECK-ENCODING: [0x25,0x16,0x60,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1601625 <unknown>
+
+sdot za.d[w8, 5], {z17.h, z18.h}, z0.h // 11000001-01100000-00010110-00100101
+// CHECK-INST: sdot za.d[w8, 5, vgx2], { z17.h, z18.h }, z0.h
+// CHECK-ENCODING: [0x25,0x16,0x60,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1601625 <unknown>
+
+sdot za.d[w8, 1, vgx2], {z1.h, z2.h}, z14.h // 11000001-01101110-00010100-00100001
+// CHECK-INST: sdot za.d[w8, 1, vgx2], { z1.h, z2.h }, z14.h
+// CHECK-ENCODING: [0x21,0x14,0x6e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16e1421 <unknown>
+
+sdot za.d[w8, 1], {z1.h, z2.h}, z14.h // 11000001-01101110-00010100-00100001
+// CHECK-INST: sdot za.d[w8, 1, vgx2], { z1.h, z2.h }, z14.h
+// CHECK-ENCODING: [0x21,0x14,0x6e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16e1421 <unknown>
+
+sdot za.d[w10, 0, vgx2], {z19.h, z20.h}, z4.h // 11000001-01100100-01010110-01100000
+// CHECK-INST: sdot za.d[w10, 0, vgx2], { z19.h, z20.h }, z4.h
+// CHECK-ENCODING: [0x60,0x56,0x64,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1645660 <unknown>
+
+sdot za.d[w10, 0], {z19.h, z20.h}, z4.h // 11000001-01100100-01010110-01100000
+// CHECK-INST: sdot za.d[w10, 0, vgx2], { z19.h, z20.h }, z4.h
+// CHECK-ENCODING: [0x60,0x56,0x64,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1645660 <unknown>
+
+sdot za.d[w8, 0, vgx2], {z12.h, z13.h}, z2.h // 11000001-01100010-00010101-10000000
+// CHECK-INST: sdot za.d[w8, 0, vgx2], { z12.h, z13.h }, z2.h
+// CHECK-ENCODING: [0x80,0x15,0x62,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1621580 <unknown>
+
+sdot za.d[w8, 0], {z12.h, z13.h}, z2.h // 11000001-01100010-00010101-10000000
+// CHECK-INST: sdot za.d[w8, 0, vgx2], { z12.h, z13.h }, z2.h
+// CHECK-ENCODING: [0x80,0x15,0x62,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1621580 <unknown>
+
+sdot za.d[w10, 1, vgx2], {z1.h, z2.h}, z10.h // 11000001-01101010-01010100-00100001
+// CHECK-INST: sdot za.d[w10, 1, vgx2], { z1.h, z2.h }, z10.h
+// CHECK-ENCODING: [0x21,0x54,0x6a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16a5421 <unknown>
+
+sdot za.d[w10, 1], {z1.h, z2.h}, z10.h // 11000001-01101010-01010100-00100001
+// CHECK-INST: sdot za.d[w10, 1, vgx2], { z1.h, z2.h }, z10.h
+// CHECK-ENCODING: [0x21,0x54,0x6a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16a5421 <unknown>
+
+sdot za.d[w8, 5, vgx2], {z22.h, z23.h}, z14.h // 11000001-01101110-00010110-11000101
+// CHECK-INST: sdot za.d[w8, 5, vgx2], { z22.h, z23.h }, z14.h
+// CHECK-ENCODING: [0xc5,0x16,0x6e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16e16c5 <unknown>
+
+sdot za.d[w8, 5], {z22.h, z23.h}, z14.h // 11000001-01101110-00010110-11000101
+// CHECK-INST: sdot za.d[w8, 5, vgx2], { z22.h, z23.h }, z14.h
+// CHECK-ENCODING: [0xc5,0x16,0x6e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16e16c5 <unknown>
+
+sdot za.d[w11, 2, vgx2], {z9.h, z10.h}, z1.h // 11000001-01100001-01110101-00100010
+// CHECK-INST: sdot za.d[w11, 2, vgx2], { z9.h, z10.h }, z1.h
+// CHECK-ENCODING: [0x22,0x75,0x61,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1617522 <unknown>
+
+sdot za.d[w11, 2], {z9.h, z10.h}, z1.h // 11000001-01100001-01110101-00100010
+// CHECK-INST: sdot za.d[w11, 2, vgx2], { z9.h, z10.h }, z1.h
+// CHECK-ENCODING: [0x22,0x75,0x61,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1617522 <unknown>
+
+sdot za.d[w9, 7, vgx2], {z12.h, z13.h}, z11.h // 11000001-01101011-00110101-10000111
+// CHECK-INST: sdot za.d[w9, 7, vgx2], { z12.h, z13.h }, z11.h
+// CHECK-ENCODING: [0x87,0x35,0x6b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16b3587 <unknown>
+
+sdot za.d[w9, 7], {z12.h, z13.h}, z11.h // 11000001-01101011-00110101-10000111
+// CHECK-INST: sdot za.d[w9, 7, vgx2], { z12.h, z13.h }, z11.h
+// CHECK-ENCODING: [0x87,0x35,0x6b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16b3587 <unknown>
+
+
sdot za.d[w8, 0, vgx2], {z0.h, z1.h}, z0.h[0] // 11000001-11010000-00000000-00001000
// CHECK-INST: sdot za.d[w8, 0, vgx2], { z0.h, z1.h }, z0.h[0]
// CHECK-ENCODING: [0x08,0x00,0xd0,0xc1]
@@ -737,6 +1174,151 @@ sdot za.d[w9, 7], {z12.h, z13.h}, z11.h[0] // 11000001-11011011-00100001-100
// CHECK-UNKNOWN: c1db218f <unknown>
+sdot za.d[w8, 0, vgx2], {z0.h, z1.h}, {z0.h, z1.h} // 11000001-11100000-00010100-00000000
+// CHECK-INST: sdot za.d[w8, 0, vgx2], { z0.h, z1.h }, { z0.h, z1.h }
+// CHECK-ENCODING: [0x00,0x14,0xe0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e01400 <unknown>
+
+sdot za.d[w8, 0], {z0.h, z1.h}, {z0.h, z1.h} // 11000001-11100000-00010100-00000000
+// CHECK-INST: sdot za.d[w8, 0, vgx2], { z0.h, z1.h }, { z0.h, z1.h }
+// CHECK-ENCODING: [0x00,0x14,0xe0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e01400 <unknown>
+
+sdot za.d[w10, 5, vgx2], {z10.h, z11.h}, {z20.h, z21.h} // 11000001-11110100-01010101-01000101
+// CHECK-INST: sdot za.d[w10, 5, vgx2], { z10.h, z11.h }, { z20.h, z21.h }
+// CHECK-ENCODING: [0x45,0x55,0xf4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f45545 <unknown>
+
+sdot za.d[w10, 5], {z10.h, z11.h}, {z20.h, z21.h} // 11000001-11110100-01010101-01000101
+// CHECK-INST: sdot za.d[w10, 5, vgx2], { z10.h, z11.h }, { z20.h, z21.h }
+// CHECK-ENCODING: [0x45,0x55,0xf4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f45545 <unknown>
+
+sdot za.d[w11, 7, vgx2], {z12.h, z13.h}, {z8.h, z9.h} // 11000001-11101000-01110101-10000111
+// CHECK-INST: sdot za.d[w11, 7, vgx2], { z12.h, z13.h }, { z8.h, z9.h }
+// CHECK-ENCODING: [0x87,0x75,0xe8,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e87587 <unknown>
+
+sdot za.d[w11, 7], {z12.h, z13.h}, {z8.h, z9.h} // 11000001-11101000-01110101-10000111
+// CHECK-INST: sdot za.d[w11, 7, vgx2], { z12.h, z13.h }, { z8.h, z9.h }
+// CHECK-ENCODING: [0x87,0x75,0xe8,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e87587 <unknown>
+
+sdot za.d[w11, 7, vgx2], {z30.h, z31.h}, {z30.h, z31.h} // 11000001-11111110-01110111-11000111
+// CHECK-INST: sdot za.d[w11, 7, vgx2], { z30.h, z31.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0xc7,0x77,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe77c7 <unknown>
+
+sdot za.d[w11, 7], {z30.h, z31.h}, {z30.h, z31.h} // 11000001-11111110-01110111-11000111
+// CHECK-INST: sdot za.d[w11, 7, vgx2], { z30.h, z31.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0xc7,0x77,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe77c7 <unknown>
+
+sdot za.d[w8, 5, vgx2], {z16.h, z17.h}, {z16.h, z17.h} // 11000001-11110000-00010110-00000101
+// CHECK-INST: sdot za.d[w8, 5, vgx2], { z16.h, z17.h }, { z16.h, z17.h }
+// CHECK-ENCODING: [0x05,0x16,0xf0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f01605 <unknown>
+
+sdot za.d[w8, 5], {z16.h, z17.h}, {z16.h, z17.h} // 11000001-11110000-00010110-00000101
+// CHECK-INST: sdot za.d[w8, 5, vgx2], { z16.h, z17.h }, { z16.h, z17.h }
+// CHECK-ENCODING: [0x05,0x16,0xf0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f01605 <unknown>
+
+sdot za.d[w8, 1, vgx2], {z0.h, z1.h}, {z30.h, z31.h} // 11000001-11111110-00010100-00000001
+// CHECK-INST: sdot za.d[w8, 1, vgx2], { z0.h, z1.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0x01,0x14,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe1401 <unknown>
+
+sdot za.d[w8, 1], {z0.h, z1.h}, {z30.h, z31.h} // 11000001-11111110-00010100-00000001
+// CHECK-INST: sdot za.d[w8, 1, vgx2], { z0.h, z1.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0x01,0x14,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe1401 <unknown>
+
+sdot za.d[w10, 0, vgx2], {z18.h, z19.h}, {z20.h, z21.h} // 11000001-11110100-01010110-01000000
+// CHECK-INST: sdot za.d[w10, 0, vgx2], { z18.h, z19.h }, { z20.h, z21.h }
+// CHECK-ENCODING: [0x40,0x56,0xf4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f45640 <unknown>
+
+sdot za.d[w10, 0], {z18.h, z19.h}, {z20.h, z21.h} // 11000001-11110100-01010110-01000000
+// CHECK-INST: sdot za.d[w10, 0, vgx2], { z18.h, z19.h }, { z20.h, z21.h }
+// CHECK-ENCODING: [0x40,0x56,0xf4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f45640 <unknown>
+
+sdot za.d[w8, 0, vgx2], {z12.h, z13.h}, {z2.h, z3.h} // 11000001-11100010-00010101-10000000
+// CHECK-INST: sdot za.d[w8, 0, vgx2], { z12.h, z13.h }, { z2.h, z3.h }
+// CHECK-ENCODING: [0x80,0x15,0xe2,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e21580 <unknown>
+
+sdot za.d[w8, 0], {z12.h, z13.h}, {z2.h, z3.h} // 11000001-11100010-00010101-10000000
+// CHECK-INST: sdot za.d[w8, 0, vgx2], { z12.h, z13.h }, { z2.h, z3.h }
+// CHECK-ENCODING: [0x80,0x15,0xe2,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e21580 <unknown>
+
+sdot za.d[w10, 1, vgx2], {z0.h, z1.h}, {z26.h, z27.h} // 11000001-11111010-01010100-00000001
+// CHECK-INST: sdot za.d[w10, 1, vgx2], { z0.h, z1.h }, { z26.h, z27.h }
+// CHECK-ENCODING: [0x01,0x54,0xfa,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fa5401 <unknown>
+
+sdot za.d[w10, 1], {z0.h, z1.h}, {z26.h, z27.h} // 11000001-11111010-01010100-00000001
+// CHECK-INST: sdot za.d[w10, 1, vgx2], { z0.h, z1.h }, { z26.h, z27.h }
+// CHECK-ENCODING: [0x01,0x54,0xfa,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fa5401 <unknown>
+
+sdot za.d[w8, 5, vgx2], {z22.h, z23.h}, {z30.h, z31.h} // 11000001-11111110-00010110-11000101
+// CHECK-INST: sdot za.d[w8, 5, vgx2], { z22.h, z23.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0xc5,0x16,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe16c5 <unknown>
+
+sdot za.d[w8, 5], {z22.h, z23.h}, {z30.h, z31.h} // 11000001-11111110-00010110-11000101
+// CHECK-INST: sdot za.d[w8, 5, vgx2], { z22.h, z23.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0xc5,0x16,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe16c5 <unknown>
+
+sdot za.d[w11, 2, vgx2], {z8.h, z9.h}, {z0.h, z1.h} // 11000001-11100000-01110101-00000010
+// CHECK-INST: sdot za.d[w11, 2, vgx2], { z8.h, z9.h }, { z0.h, z1.h }
+// CHECK-ENCODING: [0x02,0x75,0xe0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e07502 <unknown>
+
+sdot za.d[w11, 2], {z8.h, z9.h}, {z0.h, z1.h} // 11000001-11100000-01110101-00000010
+// CHECK-INST: sdot za.d[w11, 2, vgx2], { z8.h, z9.h }, { z0.h, z1.h }
+// CHECK-ENCODING: [0x02,0x75,0xe0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e07502 <unknown>
+
+sdot za.d[w9, 7, vgx2], {z12.h, z13.h}, {z10.h, z11.h} // 11000001-11101010-00110101-10000111
+// CHECK-INST: sdot za.d[w9, 7, vgx2], { z12.h, z13.h }, { z10.h, z11.h }
+// CHECK-ENCODING: [0x87,0x35,0xea,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1ea3587 <unknown>
+
+sdot za.d[w9, 7], {z12.h, z13.h}, {z10.h, z11.h} // 11000001-11101010-00110101-10000111
+// CHECK-INST: sdot za.d[w9, 7, vgx2], { z12.h, z13.h }, { z10.h, z11.h }
+// CHECK-ENCODING: [0x87,0x35,0xea,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1ea3587 <unknown>
+
+
sdot za.s[w8, 0, vgx4], {z0.h - z3.h}, z0.h // 11000001-01110000-00010100-00001000
// CHECK-INST: sdot za.s[w8, 0, vgx4], { z0.h - z3.h }, z0.h
// CHECK-ENCODING: [0x08,0x14,0x70,0xc1]
@@ -1026,7 +1608,6 @@ sdot za.s[w9, 7], {z12.h - z15.h}, z11.h[2] // 11000001-01011011-10111001-10
// CHECK-ERROR: instruction requires: sme2
// CHECK-UNKNOWN: c15bb987 <unknown>
-
sdot za.s[w8, 0, vgx4], {z0.h - z3.h}, {z0.h - z3.h} // 11000001-11100001-00010100-00001000
// CHECK-INST: sdot za.s[w8, 0, vgx4], { z0.h - z3.h }, { z0.h - z3.h }
// CHECK-ENCODING: [0x08,0x14,0xe1,0xc1]
@@ -1173,6 +1754,151 @@ sdot za.s[w9, 7], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-00110
// CHECK-UNKNOWN: c1e9358f <unknown>
+sdot za.s[w8, 0, vgx4], {z0.b - z3.b}, z0.b // 11000001-00110000-00010100-00000000
+// CHECK-INST: sdot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b
+// CHECK-ENCODING: [0x00,0x14,0x30,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1301400 <unknown>
+
+sdot za.s[w8, 0], {z0.b - z3.b}, z0.b // 11000001-00110000-00010100-00000000
+// CHECK-INST: sdot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b
+// CHECK-ENCODING: [0x00,0x14,0x30,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1301400 <unknown>
+
+sdot za.s[w10, 5, vgx4], {z10.b - z13.b}, z5.b // 11000001-00110101-01010101-01000101
+// CHECK-INST: sdot za.s[w10, 5, vgx4], { z10.b - z13.b }, z5.b
+// CHECK-ENCODING: [0x45,0x55,0x35,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1355545 <unknown>
+
+sdot za.s[w10, 5], {z10.b - z13.b}, z5.b // 11000001-00110101-01010101-01000101
+// CHECK-INST: sdot za.s[w10, 5, vgx4], { z10.b - z13.b }, z5.b
+// CHECK-ENCODING: [0x45,0x55,0x35,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1355545 <unknown>
+
+sdot za.s[w11, 7, vgx4], {z13.b - z16.b}, z8.b // 11000001-00111000-01110101-10100111
+// CHECK-INST: sdot za.s[w11, 7, vgx4], { z13.b - z16.b }, z8.b
+// CHECK-ENCODING: [0xa7,0x75,0x38,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13875a7 <unknown>
+
+sdot za.s[w11, 7], {z13.b - z16.b}, z8.b // 11000001-00111000-01110101-10100111
+// CHECK-INST: sdot za.s[w11, 7, vgx4], { z13.b - z16.b }, z8.b
+// CHECK-ENCODING: [0xa7,0x75,0x38,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13875a7 <unknown>
+
+sdot za.s[w11, 7, vgx4], {z31.b - z2.b}, z15.b // 11000001-00111111-01110111-11100111
+// CHECK-INST: sdot za.s[w11, 7, vgx4], { z31.b, z0.b, z1.b, z2.b }, z15.b
+// CHECK-ENCODING: [0xe7,0x77,0x3f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13f77e7 <unknown>
+
+sdot za.s[w11, 7], {z31.b - z2.b}, z15.b // 11000001-00111111-01110111-11100111
+// CHECK-INST: sdot za.s[w11, 7, vgx4], { z31.b, z0.b, z1.b, z2.b }, z15.b
+// CHECK-ENCODING: [0xe7,0x77,0x3f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13f77e7 <unknown>
+
+sdot za.s[w8, 5, vgx4], {z17.b - z20.b}, z0.b // 11000001-00110000-00010110-00100101
+// CHECK-INST: sdot za.s[w8, 5, vgx4], { z17.b - z20.b }, z0.b
+// CHECK-ENCODING: [0x25,0x16,0x30,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1301625 <unknown>
+
+sdot za.s[w8, 5], {z17.b - z20.b}, z0.b // 11000001-00110000-00010110-00100101
+// CHECK-INST: sdot za.s[w8, 5, vgx4], { z17.b - z20.b }, z0.b
+// CHECK-ENCODING: [0x25,0x16,0x30,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1301625 <unknown>
+
+sdot za.s[w8, 1, vgx4], {z1.b - z4.b}, z14.b // 11000001-00111110-00010100-00100001
+// CHECK-INST: sdot za.s[w8, 1, vgx4], { z1.b - z4.b }, z14.b
+// CHECK-ENCODING: [0x21,0x14,0x3e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13e1421 <unknown>
+
+sdot za.s[w8, 1], {z1.b - z4.b}, z14.b // 11000001-00111110-00010100-00100001
+// CHECK-INST: sdot za.s[w8, 1, vgx4], { z1.b - z4.b }, z14.b
+// CHECK-ENCODING: [0x21,0x14,0x3e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13e1421 <unknown>
+
+sdot za.s[w10, 0, vgx4], {z19.b - z22.b}, z4.b // 11000001-00110100-01010110-01100000
+// CHECK-INST: sdot za.s[w10, 0, vgx4], { z19.b - z22.b }, z4.b
+// CHECK-ENCODING: [0x60,0x56,0x34,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1345660 <unknown>
+
+sdot za.s[w10, 0], {z19.b - z22.b}, z4.b // 11000001-00110100-01010110-01100000
+// CHECK-INST: sdot za.s[w10, 0, vgx4], { z19.b - z22.b }, z4.b
+// CHECK-ENCODING: [0x60,0x56,0x34,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1345660 <unknown>
+
+sdot za.s[w8, 0, vgx4], {z12.b - z15.b}, z2.b // 11000001-00110010-00010101-10000000
+// CHECK-INST: sdot za.s[w8, 0, vgx4], { z12.b - z15.b }, z2.b
+// CHECK-ENCODING: [0x80,0x15,0x32,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1321580 <unknown>
+
+sdot za.s[w8, 0], {z12.b - z15.b}, z2.b // 11000001-00110010-00010101-10000000
+// CHECK-INST: sdot za.s[w8, 0, vgx4], { z12.b - z15.b }, z2.b
+// CHECK-ENCODING: [0x80,0x15,0x32,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1321580 <unknown>
+
+sdot za.s[w10, 1, vgx4], {z1.b - z4.b}, z10.b // 11000001-00111010-01010100-00100001
+// CHECK-INST: sdot za.s[w10, 1, vgx4], { z1.b - z4.b }, z10.b
+// CHECK-ENCODING: [0x21,0x54,0x3a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13a5421 <unknown>
+
+sdot za.s[w10, 1], {z1.b - z4.b}, z10.b // 11000001-00111010-01010100-00100001
+// CHECK-INST: sdot za.s[w10, 1, vgx4], { z1.b - z4.b }, z10.b
+// CHECK-ENCODING: [0x21,0x54,0x3a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13a5421 <unknown>
+
+sdot za.s[w8, 5, vgx4], {z22.b - z25.b}, z14.b // 11000001-00111110-00010110-11000101
+// CHECK-INST: sdot za.s[w8, 5, vgx4], { z22.b - z25.b }, z14.b
+// CHECK-ENCODING: [0xc5,0x16,0x3e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13e16c5 <unknown>
+
+sdot za.s[w8, 5], {z22.b - z25.b}, z14.b // 11000001-00111110-00010110-11000101
+// CHECK-INST: sdot za.s[w8, 5, vgx4], { z22.b - z25.b }, z14.b
+// CHECK-ENCODING: [0xc5,0x16,0x3e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13e16c5 <unknown>
+
+sdot za.s[w11, 2, vgx4], {z9.b - z12.b}, z1.b // 11000001-00110001-01110101-00100010
+// CHECK-INST: sdot za.s[w11, 2, vgx4], { z9.b - z12.b }, z1.b
+// CHECK-ENCODING: [0x22,0x75,0x31,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1317522 <unknown>
+
+sdot za.s[w11, 2], {z9.b - z12.b}, z1.b // 11000001-00110001-01110101-00100010
+// CHECK-INST: sdot za.s[w11, 2, vgx4], { z9.b - z12.b }, z1.b
+// CHECK-ENCODING: [0x22,0x75,0x31,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1317522 <unknown>
+
+sdot za.s[w9, 7, vgx4], {z12.b - z15.b}, z11.b // 11000001-00111011-00110101-10000111
+// CHECK-INST: sdot za.s[w9, 7, vgx4], { z12.b - z15.b }, z11.b
+// CHECK-ENCODING: [0x87,0x35,0x3b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13b3587 <unknown>
+
+sdot za.s[w9, 7], {z12.b - z15.b}, z11.b // 11000001-00111011-00110101-10000111
+// CHECK-INST: sdot za.s[w9, 7, vgx4], { z12.b - z15.b }, z11.b
+// CHECK-ENCODING: [0x87,0x35,0x3b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13b3587 <unknown>
+
+
sdot za.s[w8, 0, vgx4], {z0.b - z3.b}, z0.b[0] // 11000001-01010000-10010000-00100000
// CHECK-INST: sdot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b[0]
// CHECK-ENCODING: [0x20,0x90,0x50,0xc1]
@@ -1318,6 +2044,296 @@ sdot za.s[w9, 7], {z12.b - z15.b}, z11.b[2] // 11000001-01011011-10111001-10
// CHECK-UNKNOWN: c15bb9a7 <unknown>
+sdot za.s[w8, 0, vgx4], {z0.b - z3.b}, {z0.b - z3.b} // 11000001-10100001-00010100-00000000
+// CHECK-INST: sdot za.s[w8, 0, vgx4], { z0.b - z3.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x00,0x14,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a11400 <unknown>
+
+sdot za.s[w8, 0], {z0.b - z3.b}, {z0.b - z3.b} // 11000001-10100001-00010100-00000000
+// CHECK-INST: sdot za.s[w8, 0, vgx4], { z0.b - z3.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x00,0x14,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a11400 <unknown>
+
+sdot za.s[w10, 5, vgx4], {z8.b - z11.b}, {z20.b - z23.b} // 11000001-10110101-01010101-00000101
+// CHECK-INST: sdot za.s[w10, 5, vgx4], { z8.b - z11.b }, { z20.b - z23.b }
+// CHECK-ENCODING: [0x05,0x55,0xb5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b55505 <unknown>
+
+sdot za.s[w10, 5], {z8.b - z11.b}, {z20.b - z23.b} // 11000001-10110101-01010101-00000101
+// CHECK-INST: sdot za.s[w10, 5, vgx4], { z8.b - z11.b }, { z20.b - z23.b }
+// CHECK-ENCODING: [0x05,0x55,0xb5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b55505 <unknown>
+
+sdot za.s[w11, 7, vgx4], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-01110101-10000111
+// CHECK-INST: sdot za.s[w11, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b }
+// CHECK-ENCODING: [0x87,0x75,0xa9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a97587 <unknown>
+
+sdot za.s[w11, 7], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-01110101-10000111
+// CHECK-INST: sdot za.s[w11, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b }
+// CHECK-ENCODING: [0x87,0x75,0xa9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a97587 <unknown>
+
+sdot za.s[w11, 7, vgx4], {z28.b - z31.b}, {z28.b - z31.b} // 11000001-10111101-01110111-10000111
+// CHECK-INST: sdot za.s[w11, 7, vgx4], { z28.b - z31.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x87,0x77,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd7787 <unknown>
+
+sdot za.s[w11, 7], {z28.b - z31.b}, {z28.b - z31.b} // 11000001-10111101-01110111-10000111
+// CHECK-INST: sdot za.s[w11, 7, vgx4], { z28.b - z31.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x87,0x77,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd7787 <unknown>
+
+sdot za.s[w8, 5, vgx4], {z16.b - z19.b}, {z16.b - z19.b} // 11000001-10110001-00010110-00000101
+// CHECK-INST: sdot za.s[w8, 5, vgx4], { z16.b - z19.b }, { z16.b - z19.b }
+// CHECK-ENCODING: [0x05,0x16,0xb1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b11605 <unknown>
+
+sdot za.s[w8, 5], {z16.b - z19.b}, {z16.b - z19.b} // 11000001-10110001-00010110-00000101
+// CHECK-INST: sdot za.s[w8, 5, vgx4], { z16.b - z19.b }, { z16.b - z19.b }
+// CHECK-ENCODING: [0x05,0x16,0xb1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b11605 <unknown>
+
+sdot za.s[w8, 1, vgx4], {z0.b - z3.b}, {z28.b - z31.b} // 11000001-10111101-00010100-00000001
+// CHECK-INST: sdot za.s[w8, 1, vgx4], { z0.b - z3.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x01,0x14,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd1401 <unknown>
+
+sdot za.s[w8, 1], {z0.b - z3.b}, {z28.b - z31.b} // 11000001-10111101-00010100-00000001
+// CHECK-INST: sdot za.s[w8, 1, vgx4], { z0.b - z3.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x01,0x14,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd1401 <unknown>
+
+sdot za.s[w10, 0, vgx4], {z16.b - z19.b}, {z20.b - z23.b} // 11000001-10110101-01010110-00000000
+// CHECK-INST: sdot za.s[w10, 0, vgx4], { z16.b - z19.b }, { z20.b - z23.b }
+// CHECK-ENCODING: [0x00,0x56,0xb5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b55600 <unknown>
+
+sdot za.s[w10, 0], {z16.b - z19.b}, {z20.b - z23.b} // 11000001-10110101-01010110-00000000
+// CHECK-INST: sdot za.s[w10, 0, vgx4], { z16.b - z19.b }, { z20.b - z23.b }
+// CHECK-ENCODING: [0x00,0x56,0xb5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b55600 <unknown>
+
+sdot za.s[w8, 0, vgx4], {z12.b - z15.b}, {z0.b - z3.b} // 11000001-10100001-00010101-10000000
+// CHECK-INST: sdot za.s[w8, 0, vgx4], { z12.b - z15.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x80,0x15,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a11580 <unknown>
+
+sdot za.s[w8, 0], {z12.b - z15.b}, {z0.b - z3.b} // 11000001-10100001-00010101-10000000
+// CHECK-INST: sdot za.s[w8, 0, vgx4], { z12.b - z15.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x80,0x15,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a11580 <unknown>
+
+sdot za.s[w10, 1, vgx4], {z0.b - z3.b}, {z24.b - z27.b} // 11000001-10111001-01010100-00000001
+// CHECK-INST: sdot za.s[w10, 1, vgx4], { z0.b - z3.b }, { z24.b - z27.b }
+// CHECK-ENCODING: [0x01,0x54,0xb9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b95401 <unknown>
+
+sdot za.s[w10, 1], {z0.b - z3.b}, {z24.b - z27.b} // 11000001-10111001-01010100-00000001
+// CHECK-INST: sdot za.s[w10, 1, vgx4], { z0.b - z3.b }, { z24.b - z27.b }
+// CHECK-ENCODING: [0x01,0x54,0xb9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b95401 <unknown>
+
+sdot za.s[w8, 5, vgx4], {z20.b - z23.b}, {z28.b - z31.b} // 11000001-10111101-00010110-10000101
+// CHECK-INST: sdot za.s[w8, 5, vgx4], { z20.b - z23.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x85,0x16,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd1685 <unknown>
+
+sdot za.s[w8, 5], {z20.b - z23.b}, {z28.b - z31.b} // 11000001-10111101-00010110-10000101
+// CHECK-INST: sdot za.s[w8, 5, vgx4], { z20.b - z23.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x85,0x16,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd1685 <unknown>
+
+sdot za.s[w11, 2, vgx4], {z8.b - z11.b}, {z0.b - z3.b} // 11000001-10100001-01110101-00000010
+// CHECK-INST: sdot za.s[w11, 2, vgx4], { z8.b - z11.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x02,0x75,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a17502 <unknown>
+
+sdot za.s[w11, 2], {z8.b - z11.b}, {z0.b - z3.b} // 11000001-10100001-01110101-00000010
+// CHECK-INST: sdot za.s[w11, 2, vgx4], { z8.b - z11.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x02,0x75,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a17502 <unknown>
+
+sdot za.s[w9, 7, vgx4], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-00110101-10000111
+// CHECK-INST: sdot za.s[w9, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b }
+// CHECK-ENCODING: [0x87,0x35,0xa9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a93587 <unknown>
+
+sdot za.s[w9, 7], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-00110101-10000111
+// CHECK-INST: sdot za.s[w9, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b }
+// CHECK-ENCODING: [0x87,0x35,0xa9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a93587 <unknown>
+
+
+sdot za.d[w8, 0, vgx4], {z0.h - z3.h}, z0.h // 11000001-01110000-00010100-00000000
+// CHECK-INST: sdot za.d[w8, 0, vgx4], { z0.h - z3.h }, z0.h
+// CHECK-ENCODING: [0x00,0x14,0x70,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1701400 <unknown>
+
+sdot za.d[w8, 0], {z0.h - z3.h}, z0.h // 11000001-01110000-00010100-00000000
+// CHECK-INST: sdot za.d[w8, 0, vgx4], { z0.h - z3.h }, z0.h
+// CHECK-ENCODING: [0x00,0x14,0x70,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1701400 <unknown>
+
+sdot za.d[w10, 5, vgx4], {z10.h - z13.h}, z5.h // 11000001-01110101-01010101-01000101
+// CHECK-INST: sdot za.d[w10, 5, vgx4], { z10.h - z13.h }, z5.h
+// CHECK-ENCODING: [0x45,0x55,0x75,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1755545 <unknown>
+
+sdot za.d[w10, 5], {z10.h - z13.h}, z5.h // 11000001-01110101-01010101-01000101
+// CHECK-INST: sdot za.d[w10, 5, vgx4], { z10.h - z13.h }, z5.h
+// CHECK-ENCODING: [0x45,0x55,0x75,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1755545 <unknown>
+
+sdot za.d[w11, 7, vgx4], {z13.h - z16.h}, z8.h // 11000001-01111000-01110101-10100111
+// CHECK-INST: sdot za.d[w11, 7, vgx4], { z13.h - z16.h }, z8.h
+// CHECK-ENCODING: [0xa7,0x75,0x78,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17875a7 <unknown>
+
+sdot za.d[w11, 7], {z13.h - z16.h}, z8.h // 11000001-01111000-01110101-10100111
+// CHECK-INST: sdot za.d[w11, 7, vgx4], { z13.h - z16.h }, z8.h
+// CHECK-ENCODING: [0xa7,0x75,0x78,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17875a7 <unknown>
+
+sdot za.d[w11, 7, vgx4], {z31.h - z2.h}, z15.h // 11000001-01111111-01110111-11100111
+// CHECK-INST: sdot za.d[w11, 7, vgx4], { z31.h, z0.h, z1.h, z2.h }, z15.h
+// CHECK-ENCODING: [0xe7,0x77,0x7f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17f77e7 <unknown>
+
+sdot za.d[w11, 7], {z31.h - z2.h}, z15.h // 11000001-01111111-01110111-11100111
+// CHECK-INST: sdot za.d[w11, 7, vgx4], { z31.h, z0.h, z1.h, z2.h }, z15.h
+// CHECK-ENCODING: [0xe7,0x77,0x7f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17f77e7 <unknown>
+
+sdot za.d[w8, 5, vgx4], {z17.h - z20.h}, z0.h // 11000001-01110000-00010110-00100101
+// CHECK-INST: sdot za.d[w8, 5, vgx4], { z17.h - z20.h }, z0.h
+// CHECK-ENCODING: [0x25,0x16,0x70,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1701625 <unknown>
+
+sdot za.d[w8, 5], {z17.h - z20.h}, z0.h // 11000001-01110000-00010110-00100101
+// CHECK-INST: sdot za.d[w8, 5, vgx4], { z17.h - z20.h }, z0.h
+// CHECK-ENCODING: [0x25,0x16,0x70,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1701625 <unknown>
+
+sdot za.d[w8, 1, vgx4], {z1.h - z4.h}, z14.h // 11000001-01111110-00010100-00100001
+// CHECK-INST: sdot za.d[w8, 1, vgx4], { z1.h - z4.h }, z14.h
+// CHECK-ENCODING: [0x21,0x14,0x7e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17e1421 <unknown>
+
+sdot za.d[w8, 1], {z1.h - z4.h}, z14.h // 11000001-01111110-00010100-00100001
+// CHECK-INST: sdot za.d[w8, 1, vgx4], { z1.h - z4.h }, z14.h
+// CHECK-ENCODING: [0x21,0x14,0x7e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17e1421 <unknown>
+
+sdot za.d[w10, 0, vgx4], {z19.h - z22.h}, z4.h // 11000001-01110100-01010110-01100000
+// CHECK-INST: sdot za.d[w10, 0, vgx4], { z19.h - z22.h }, z4.h
+// CHECK-ENCODING: [0x60,0x56,0x74,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1745660 <unknown>
+
+sdot za.d[w10, 0], {z19.h - z22.h}, z4.h // 11000001-01110100-01010110-01100000
+// CHECK-INST: sdot za.d[w10, 0, vgx4], { z19.h - z22.h }, z4.h
+// CHECK-ENCODING: [0x60,0x56,0x74,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1745660 <unknown>
+
+sdot za.d[w8, 0, vgx4], {z12.h - z15.h}, z2.h // 11000001-01110010-00010101-10000000
+// CHECK-INST: sdot za.d[w8, 0, vgx4], { z12.h - z15.h }, z2.h
+// CHECK-ENCODING: [0x80,0x15,0x72,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1721580 <unknown>
+
+sdot za.d[w8, 0], {z12.h - z15.h}, z2.h // 11000001-01110010-00010101-10000000
+// CHECK-INST: sdot za.d[w8, 0, vgx4], { z12.h - z15.h }, z2.h
+// CHECK-ENCODING: [0x80,0x15,0x72,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1721580 <unknown>
+
+sdot za.d[w10, 1, vgx4], {z1.h - z4.h}, z10.h // 11000001-01111010-01010100-00100001
+// CHECK-INST: sdot za.d[w10, 1, vgx4], { z1.h - z4.h }, z10.h
+// CHECK-ENCODING: [0x21,0x54,0x7a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17a5421 <unknown>
+
+sdot za.d[w10, 1], {z1.h - z4.h}, z10.h // 11000001-01111010-01010100-00100001
+// CHECK-INST: sdot za.d[w10, 1, vgx4], { z1.h - z4.h }, z10.h
+// CHECK-ENCODING: [0x21,0x54,0x7a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17a5421 <unknown>
+
+sdot za.d[w8, 5, vgx4], {z22.h - z25.h}, z14.h // 11000001-01111110-00010110-11000101
+// CHECK-INST: sdot za.d[w8, 5, vgx4], { z22.h - z25.h }, z14.h
+// CHECK-ENCODING: [0xc5,0x16,0x7e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17e16c5 <unknown>
+
+sdot za.d[w8, 5], {z22.h - z25.h}, z14.h // 11000001-01111110-00010110-11000101
+// CHECK-INST: sdot za.d[w8, 5, vgx4], { z22.h - z25.h }, z14.h
+// CHECK-ENCODING: [0xc5,0x16,0x7e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17e16c5 <unknown>
+
+sdot za.d[w11, 2, vgx4], {z9.h - z12.h}, z1.h // 11000001-01110001-01110101-00100010
+// CHECK-INST: sdot za.d[w11, 2, vgx4], { z9.h - z12.h }, z1.h
+// CHECK-ENCODING: [0x22,0x75,0x71,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1717522 <unknown>
+
+sdot za.d[w11, 2], {z9.h - z12.h}, z1.h // 11000001-01110001-01110101-00100010
+// CHECK-INST: sdot za.d[w11, 2, vgx4], { z9.h - z12.h }, z1.h
+// CHECK-ENCODING: [0x22,0x75,0x71,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1717522 <unknown>
+
+sdot za.d[w9, 7, vgx4], {z12.h - z15.h}, z11.h // 11000001-01111011-00110101-10000111
+// CHECK-INST: sdot za.d[w9, 7, vgx4], { z12.h - z15.h }, z11.h
+// CHECK-ENCODING: [0x87,0x35,0x7b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17b3587 <unknown>
+
+sdot za.d[w9, 7], {z12.h - z15.h}, z11.h // 11000001-01111011-00110101-10000111
+// CHECK-INST: sdot za.d[w9, 7, vgx4], { z12.h - z15.h }, z11.h
+// CHECK-ENCODING: [0x87,0x35,0x7b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17b3587 <unknown>
+
+
sdot za.d[w8, 0, vgx4], {z0.h - z3.h}, z0.h[0] // 11000001-11010000-10000000-00001000
// CHECK-INST: sdot za.d[w8, 0, vgx4], { z0.h - z3.h }, z0.h[0]
// CHECK-ENCODING: [0x08,0x80,0xd0,0xc1]
@@ -1461,3 +2477,149 @@ sdot za.d[w9, 7], {z12.h - z15.h}, z11.h[0] // 11000001-11011011-10100001-10
// CHECK-ENCODING: [0x8f,0xa1,0xdb,0xc1]
// CHECK-ERROR: instruction requires: sme2
// CHECK-UNKNOWN: c1dba18f <unknown>
+
+
+sdot za.d[w8, 0, vgx4], {z0.h - z3.h}, {z0.h - z3.h} // 11000001-11100001-00010100-00000000
+// CHECK-INST: sdot za.d[w8, 0, vgx4], { z0.h - z3.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x00,0x14,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e11400 <unknown>
+
+sdot za.d[w8, 0], {z0.h - z3.h}, {z0.h - z3.h} // 11000001-11100001-00010100-00000000
+// CHECK-INST: sdot za.d[w8, 0, vgx4], { z0.h - z3.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x00,0x14,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e11400 <unknown>
+
+sdot za.d[w10, 5, vgx4], {z8.h - z11.h}, {z20.h - z23.h} // 11000001-11110101-01010101-00000101
+// CHECK-INST: sdot za.d[w10, 5, vgx4], { z8.h - z11.h }, { z20.h - z23.h }
+// CHECK-ENCODING: [0x05,0x55,0xf5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f55505 <unknown>
+
+sdot za.d[w10, 5], {z8.h - z11.h}, {z20.h - z23.h} // 11000001-11110101-01010101-00000101
+// CHECK-INST: sdot za.d[w10, 5, vgx4], { z8.h - z11.h }, { z20.h - z23.h }
+// CHECK-ENCODING: [0x05,0x55,0xf5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f55505 <unknown>
+
+sdot za.d[w11, 7, vgx4], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-01110101-10000111
+// CHECK-INST: sdot za.d[w11, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h }
+// CHECK-ENCODING: [0x87,0x75,0xe9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e97587 <unknown>
+
+sdot za.d[w11, 7], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-01110101-10000111
+// CHECK-INST: sdot za.d[w11, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h }
+// CHECK-ENCODING: [0x87,0x75,0xe9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e97587 <unknown>
+
+sdot za.d[w11, 7, vgx4], {z28.h - z31.h}, {z28.h - z31.h} // 11000001-11111101-01110111-10000111
+// CHECK-INST: sdot za.d[w11, 7, vgx4], { z28.h - z31.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x87,0x77,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd7787 <unknown>
+
+sdot za.d[w11, 7], {z28.h - z31.h}, {z28.h - z31.h} // 11000001-11111101-01110111-10000111
+// CHECK-INST: sdot za.d[w11, 7, vgx4], { z28.h - z31.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x87,0x77,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd7787 <unknown>
+
+sdot za.d[w8, 5, vgx4], {z16.h - z19.h}, {z16.h - z19.h} // 11000001-11110001-00010110-00000101
+// CHECK-INST: sdot za.d[w8, 5, vgx4], { z16.h - z19.h }, { z16.h - z19.h }
+// CHECK-ENCODING: [0x05,0x16,0xf1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f11605 <unknown>
+
+sdot za.d[w8, 5], {z16.h - z19.h}, {z16.h - z19.h} // 11000001-11110001-00010110-00000101
+// CHECK-INST: sdot za.d[w8, 5, vgx4], { z16.h - z19.h }, { z16.h - z19.h }
+// CHECK-ENCODING: [0x05,0x16,0xf1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f11605 <unknown>
+
+sdot za.d[w8, 1, vgx4], {z0.h - z3.h}, {z28.h - z31.h} // 11000001-11111101-00010100-00000001
+// CHECK-INST: sdot za.d[w8, 1, vgx4], { z0.h - z3.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x01,0x14,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd1401 <unknown>
+
+sdot za.d[w8, 1], {z0.h - z3.h}, {z28.h - z31.h} // 11000001-11111101-00010100-00000001
+// CHECK-INST: sdot za.d[w8, 1, vgx4], { z0.h - z3.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x01,0x14,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd1401 <unknown>
+
+sdot za.d[w10, 0, vgx4], {z16.h - z19.h}, {z20.h - z23.h} // 11000001-11110101-01010110-00000000
+// CHECK-INST: sdot za.d[w10, 0, vgx4], { z16.h - z19.h }, { z20.h - z23.h }
+// CHECK-ENCODING: [0x00,0x56,0xf5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f55600 <unknown>
+
+sdot za.d[w10, 0], {z16.h - z19.h}, {z20.h - z23.h} // 11000001-11110101-01010110-00000000
+// CHECK-INST: sdot za.d[w10, 0, vgx4], { z16.h - z19.h }, { z20.h - z23.h }
+// CHECK-ENCODING: [0x00,0x56,0xf5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f55600 <unknown>
+
+sdot za.d[w8, 0, vgx4], {z12.h - z15.h}, {z0.h - z3.h} // 11000001-11100001-00010101-10000000
+// CHECK-INST: sdot za.d[w8, 0, vgx4], { z12.h - z15.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x80,0x15,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e11580 <unknown>
+
+sdot za.d[w8, 0], {z12.h - z15.h}, {z0.h - z3.h} // 11000001-11100001-00010101-10000000
+// CHECK-INST: sdot za.d[w8, 0, vgx4], { z12.h - z15.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x80,0x15,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e11580 <unknown>
+
+sdot za.d[w10, 1, vgx4], {z0.h - z3.h}, {z24.h - z27.h} // 11000001-11111001-01010100-00000001
+// CHECK-INST: sdot za.d[w10, 1, vgx4], { z0.h - z3.h }, { z24.h - z27.h }
+// CHECK-ENCODING: [0x01,0x54,0xf9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f95401 <unknown>
+
+sdot za.d[w10, 1], {z0.h - z3.h}, {z24.h - z27.h} // 11000001-11111001-01010100-00000001
+// CHECK-INST: sdot za.d[w10, 1, vgx4], { z0.h - z3.h }, { z24.h - z27.h }
+// CHECK-ENCODING: [0x01,0x54,0xf9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f95401 <unknown>
+
+sdot za.d[w8, 5, vgx4], {z20.h - z23.h}, {z28.h - z31.h} // 11000001-11111101-00010110-10000101
+// CHECK-INST: sdot za.d[w8, 5, vgx4], { z20.h - z23.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x85,0x16,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd1685 <unknown>
+
+sdot za.d[w8, 5], {z20.h - z23.h}, {z28.h - z31.h} // 11000001-11111101-00010110-10000101
+// CHECK-INST: sdot za.d[w8, 5, vgx4], { z20.h - z23.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x85,0x16,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd1685 <unknown>
+
+sdot za.d[w11, 2, vgx4], {z8.h - z11.h}, {z0.h - z3.h} // 11000001-11100001-01110101-00000010
+// CHECK-INST: sdot za.d[w11, 2, vgx4], { z8.h - z11.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x02,0x75,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e17502 <unknown>
+
+sdot za.d[w11, 2], {z8.h - z11.h}, {z0.h - z3.h} // 11000001-11100001-01110101-00000010
+// CHECK-INST: sdot za.d[w11, 2, vgx4], { z8.h - z11.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x02,0x75,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e17502 <unknown>
+
+sdot za.d[w9, 7, vgx4], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-00110101-10000111
+// CHECK-INST: sdot za.d[w9, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h }
+// CHECK-ENCODING: [0x87,0x35,0xe9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e93587 <unknown>
+
+sdot za.d[w9, 7], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-00110101-10000111
+// CHECK-INST: sdot za.d[w9, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h }
+// CHECK-ENCODING: [0x87,0x35,0xe9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e93587 <unknown>
+
diff --git a/llvm/test/MC/AArch64/SME2/udot.s b/llvm/test/MC/AArch64/SME2/udot.s
index 6246b527b06c5..3899e88527ddf 100644
--- a/llvm/test/MC/AArch64/SME2/udot.s
+++ b/llvm/test/MC/AArch64/SME2/udot.s
@@ -1461,3 +1461,1166 @@ udot za.d[w9, 7], {z12.h - z15.h}, z11.h[0] // 11000001-11011011-10100001-10
// CHECK-ERROR: instruction requires: sme2
// CHECK-UNKNOWN: c1dba19f <unknown>
+
+udot za.s[w8, 0, vgx2], {z0.b, z1.b}, z0.b // 11000001-00100000-00010100-00010000
+// CHECK-INST: udot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b
+// CHECK-ENCODING: [0x10,0x14,0x20,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1201410 <unknown>
+
+udot za.s[w8, 0], {z0.b - z1.b}, z0.b // 11000001-00100000-00010100-00010000
+// CHECK-INST: udot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b
+// CHECK-ENCODING: [0x10,0x14,0x20,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1201410 <unknown>
+
+udot za.s[w10, 5, vgx2], {z10.b, z11.b}, z5.b // 11000001-00100101-01010101-01010101
+// CHECK-INST: udot za.s[w10, 5, vgx2], { z10.b, z11.b }, z5.b
+// CHECK-ENCODING: [0x55,0x55,0x25,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1255555 <unknown>
+
+udot za.s[w10, 5], {z10.b - z11.b}, z5.b // 11000001-00100101-01010101-01010101
+// CHECK-INST: udot za.s[w10, 5, vgx2], { z10.b, z11.b }, z5.b
+// CHECK-ENCODING: [0x55,0x55,0x25,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1255555 <unknown>
+
+udot za.s[w11, 7, vgx2], {z13.b, z14.b}, z8.b // 11000001-00101000-01110101-10110111
+// CHECK-INST: udot za.s[w11, 7, vgx2], { z13.b, z14.b }, z8.b
+// CHECK-ENCODING: [0xb7,0x75,0x28,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12875b7 <unknown>
+
+udot za.s[w11, 7], {z13.b - z14.b}, z8.b // 11000001-00101000-01110101-10110111
+// CHECK-INST: udot za.s[w11, 7, vgx2], { z13.b, z14.b }, z8.b
+// CHECK-ENCODING: [0xb7,0x75,0x28,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12875b7 <unknown>
+
+udot za.s[w11, 7, vgx2], {z31.b, z0.b}, z15.b // 11000001-00101111-01110111-11110111
+// CHECK-INST: udot za.s[w11, 7, vgx2], { z31.b, z0.b }, z15.b
+// CHECK-ENCODING: [0xf7,0x77,0x2f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12f77f7 <unknown>
+
+udot za.s[w11, 7], {z31.b - z0.b}, z15.b // 11000001-00101111-01110111-11110111
+// CHECK-INST: udot za.s[w11, 7, vgx2], { z31.b, z0.b }, z15.b
+// CHECK-ENCODING: [0xf7,0x77,0x2f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12f77f7 <unknown>
+
+udot za.s[w8, 5, vgx2], {z17.b, z18.b}, z0.b // 11000001-00100000-00010110-00110101
+// CHECK-INST: udot za.s[w8, 5, vgx2], { z17.b, z18.b }, z0.b
+// CHECK-ENCODING: [0x35,0x16,0x20,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1201635 <unknown>
+
+udot za.s[w8, 5], {z17.b - z18.b}, z0.b // 11000001-00100000-00010110-00110101
+// CHECK-INST: udot za.s[w8, 5, vgx2], { z17.b, z18.b }, z0.b
+// CHECK-ENCODING: [0x35,0x16,0x20,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1201635 <unknown>
+
+udot za.s[w8, 1, vgx2], {z1.b, z2.b}, z14.b // 11000001-00101110-00010100-00110001
+// CHECK-INST: udot za.s[w8, 1, vgx2], { z1.b, z2.b }, z14.b
+// CHECK-ENCODING: [0x31,0x14,0x2e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12e1431 <unknown>
+
+udot za.s[w8, 1], {z1.b - z2.b}, z14.b // 11000001-00101110-00010100-00110001
+// CHECK-INST: udot za.s[w8, 1, vgx2], { z1.b, z2.b }, z14.b
+// CHECK-ENCODING: [0x31,0x14,0x2e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12e1431 <unknown>
+
+udot za.s[w10, 0, vgx2], {z19.b, z20.b}, z4.b // 11000001-00100100-01010110-01110000
+// CHECK-INST: udot za.s[w10, 0, vgx2], { z19.b, z20.b }, z4.b
+// CHECK-ENCODING: [0x70,0x56,0x24,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1245670 <unknown>
+
+udot za.s[w10, 0], {z19.b - z20.b}, z4.b // 11000001-00100100-01010110-01110000
+// CHECK-INST: udot za.s[w10, 0, vgx2], { z19.b, z20.b }, z4.b
+// CHECK-ENCODING: [0x70,0x56,0x24,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1245670 <unknown>
+
+udot za.s[w8, 0, vgx2], {z12.b, z13.b}, z2.b // 11000001-00100010-00010101-10010000
+// CHECK-INST: udot za.s[w8, 0, vgx2], { z12.b, z13.b }, z2.b
+// CHECK-ENCODING: [0x90,0x15,0x22,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1221590 <unknown>
+
+udot za.s[w8, 0], {z12.b - z13.b}, z2.b // 11000001-00100010-00010101-10010000
+// CHECK-INST: udot za.s[w8, 0, vgx2], { z12.b, z13.b }, z2.b
+// CHECK-ENCODING: [0x90,0x15,0x22,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1221590 <unknown>
+
+udot za.s[w10, 1, vgx2], {z1.b, z2.b}, z10.b // 11000001-00101010-01010100-00110001
+// CHECK-INST: udot za.s[w10, 1, vgx2], { z1.b, z2.b }, z10.b
+// CHECK-ENCODING: [0x31,0x54,0x2a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12a5431 <unknown>
+
+udot za.s[w10, 1], {z1.b - z2.b}, z10.b // 11000001-00101010-01010100-00110001
+// CHECK-INST: udot za.s[w10, 1, vgx2], { z1.b, z2.b }, z10.b
+// CHECK-ENCODING: [0x31,0x54,0x2a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12a5431 <unknown>
+
+udot za.s[w8, 5, vgx2], {z22.b, z23.b}, z14.b // 11000001-00101110-00010110-11010101
+// CHECK-INST: udot za.s[w8, 5, vgx2], { z22.b, z23.b }, z14.b
+// CHECK-ENCODING: [0xd5,0x16,0x2e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12e16d5 <unknown>
+
+udot za.s[w8, 5], {z22.b - z23.b}, z14.b // 11000001-00101110-00010110-11010101
+// CHECK-INST: udot za.s[w8, 5, vgx2], { z22.b, z23.b }, z14.b
+// CHECK-ENCODING: [0xd5,0x16,0x2e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12e16d5 <unknown>
+
+udot za.s[w11, 2, vgx2], {z9.b, z10.b}, z1.b // 11000001-00100001-01110101-00110010
+// CHECK-INST: udot za.s[w11, 2, vgx2], { z9.b, z10.b }, z1.b
+// CHECK-ENCODING: [0x32,0x75,0x21,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1217532 <unknown>
+
+udot za.s[w11, 2], {z9.b - z10.b}, z1.b // 11000001-00100001-01110101-00110010
+// CHECK-INST: udot za.s[w11, 2, vgx2], { z9.b, z10.b }, z1.b
+// CHECK-ENCODING: [0x32,0x75,0x21,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1217532 <unknown>
+
+udot za.s[w9, 7, vgx2], {z12.b, z13.b}, z11.b // 11000001-00101011-00110101-10010111
+// CHECK-INST: udot za.s[w9, 7, vgx2], { z12.b, z13.b }, z11.b
+// CHECK-ENCODING: [0x97,0x35,0x2b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12b3597 <unknown>
+
+udot za.s[w9, 7], {z12.b - z13.b}, z11.b // 11000001-00101011-00110101-10010111
+// CHECK-INST: udot za.s[w9, 7, vgx2], { z12.b, z13.b }, z11.b
+// CHECK-ENCODING: [0x97,0x35,0x2b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c12b3597 <unknown>
+
+udot za.s[w8, 0, vgx2], {z0.b, z1.b}, {z0.b, z1.b} // 11000001-10100000-00010100-00010000
+// CHECK-INST: udot za.s[w8, 0, vgx2], { z0.b, z1.b }, { z0.b, z1.b }
+// CHECK-ENCODING: [0x10,0x14,0xa0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a01410 <unknown>
+
+udot za.s[w8, 0], {z0.b - z1.b}, {z0.b - z1.b} // 11000001-10100000-00010100-00010000
+// CHECK-INST: udot za.s[w8, 0, vgx2], { z0.b, z1.b }, { z0.b, z1.b }
+// CHECK-ENCODING: [0x10,0x14,0xa0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a01410 <unknown>
+
+udot za.s[w10, 5, vgx2], {z10.b, z11.b}, {z20.b, z21.b} // 11000001-10110100-01010101-01010101
+// CHECK-INST: udot za.s[w10, 5, vgx2], { z10.b, z11.b }, { z20.b, z21.b }
+// CHECK-ENCODING: [0x55,0x55,0xb4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b45555 <unknown>
+
+udot za.s[w10, 5], {z10.b - z11.b}, {z20.b - z21.b} // 11000001-10110100-01010101-01010101
+// CHECK-INST: udot za.s[w10, 5, vgx2], { z10.b, z11.b }, { z20.b, z21.b }
+// CHECK-ENCODING: [0x55,0x55,0xb4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b45555 <unknown>
+
+udot za.s[w11, 7, vgx2], {z12.b, z13.b}, {z8.b, z9.b} // 11000001-10101000-01110101-10010111
+// CHECK-INST: udot za.s[w11, 7, vgx2], { z12.b, z13.b }, { z8.b, z9.b }
+// CHECK-ENCODING: [0x97,0x75,0xa8,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a87597 <unknown>
+
+udot za.s[w11, 7], {z12.b - z13.b}, {z8.b - z9.b} // 11000001-10101000-01110101-10010111
+// CHECK-INST: udot za.s[w11, 7, vgx2], { z12.b, z13.b }, { z8.b, z9.b }
+// CHECK-ENCODING: [0x97,0x75,0xa8,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a87597 <unknown>
+
+udot za.s[w11, 7, vgx2], {z30.b, z31.b}, {z30.b, z31.b} // 11000001-10111110-01110111-11010111
+// CHECK-INST: udot za.s[w11, 7, vgx2], { z30.b, z31.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0xd7,0x77,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be77d7 <unknown>
+
+udot za.s[w11, 7], {z30.b - z31.b}, {z30.b - z31.b} // 11000001-10111110-01110111-11010111
+// CHECK-INST: udot za.s[w11, 7, vgx2], { z30.b, z31.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0xd7,0x77,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be77d7 <unknown>
+
+udot za.s[w8, 5, vgx2], {z16.b, z17.b}, {z16.b, z17.b} // 11000001-10110000-00010110-00010101
+// CHECK-INST: udot za.s[w8, 5, vgx2], { z16.b, z17.b }, { z16.b, z17.b }
+// CHECK-ENCODING: [0x15,0x16,0xb0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b01615 <unknown>
+
+udot za.s[w8, 5], {z16.b - z17.b}, {z16.b - z17.b} // 11000001-10110000-00010110-00010101
+// CHECK-INST: udot za.s[w8, 5, vgx2], { z16.b, z17.b }, { z16.b, z17.b }
+// CHECK-ENCODING: [0x15,0x16,0xb0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b01615 <unknown>
+
+udot za.s[w8, 1, vgx2], {z0.b, z1.b}, {z30.b, z31.b} // 11000001-10111110-00010100-00010001
+// CHECK-INST: udot za.s[w8, 1, vgx2], { z0.b, z1.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0x11,0x14,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be1411 <unknown>
+
+udot za.s[w8, 1], {z0.b - z1.b}, {z30.b - z31.b} // 11000001-10111110-00010100-00010001
+// CHECK-INST: udot za.s[w8, 1, vgx2], { z0.b, z1.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0x11,0x14,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be1411 <unknown>
+
+udot za.s[w10, 0, vgx2], {z18.b, z19.b}, {z20.b, z21.b} // 11000001-10110100-01010110-01010000
+// CHECK-INST: udot za.s[w10, 0, vgx2], { z18.b, z19.b }, { z20.b, z21.b }
+// CHECK-ENCODING: [0x50,0x56,0xb4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b45650 <unknown>
+
+udot za.s[w10, 0], {z18.b - z19.b}, {z20.b - z21.b} // 11000001-10110100-01010110-01010000
+// CHECK-INST: udot za.s[w10, 0, vgx2], { z18.b, z19.b }, { z20.b, z21.b }
+// CHECK-ENCODING: [0x50,0x56,0xb4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b45650 <unknown>
+
+udot za.s[w8, 0, vgx2], {z12.b, z13.b}, {z2.b, z3.b} // 11000001-10100010-00010101-10010000
+// CHECK-INST: udot za.s[w8, 0, vgx2], { z12.b, z13.b }, { z2.b, z3.b }
+// CHECK-ENCODING: [0x90,0x15,0xa2,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a21590 <unknown>
+
+udot za.s[w8, 0], {z12.b - z13.b}, {z2.b - z3.b} // 11000001-10100010-00010101-10010000
+// CHECK-INST: udot za.s[w8, 0, vgx2], { z12.b, z13.b }, { z2.b, z3.b }
+// CHECK-ENCODING: [0x90,0x15,0xa2,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a21590 <unknown>
+
+udot za.s[w10, 1, vgx2], {z0.b, z1.b}, {z26.b, z27.b} // 11000001-10111010-01010100-00010001
+// CHECK-INST: udot za.s[w10, 1, vgx2], { z0.b, z1.b }, { z26.b, z27.b }
+// CHECK-ENCODING: [0x11,0x54,0xba,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1ba5411 <unknown>
+
+udot za.s[w10, 1], {z0.b - z1.b}, {z26.b - z27.b} // 11000001-10111010-01010100-00010001
+// CHECK-INST: udot za.s[w10, 1, vgx2], { z0.b, z1.b }, { z26.b, z27.b }
+// CHECK-ENCODING: [0x11,0x54,0xba,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1ba5411 <unknown>
+
+udot za.s[w8, 5, vgx2], {z22.b, z23.b}, {z30.b, z31.b} // 11000001-10111110-00010110-11010101
+// CHECK-INST: udot za.s[w8, 5, vgx2], { z22.b, z23.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0xd5,0x16,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be16d5 <unknown>
+
+udot za.s[w8, 5], {z22.b - z23.b}, {z30.b - z31.b} // 11000001-10111110-00010110-11010101
+// CHECK-INST: udot za.s[w8, 5, vgx2], { z22.b, z23.b }, { z30.b, z31.b }
+// CHECK-ENCODING: [0xd5,0x16,0xbe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1be16d5 <unknown>
+
+udot za.s[w11, 2, vgx2], {z8.b, z9.b}, {z0.b, z1.b} // 11000001-10100000-01110101-00010010
+// CHECK-INST: udot za.s[w11, 2, vgx2], { z8.b, z9.b }, { z0.b, z1.b }
+// CHECK-ENCODING: [0x12,0x75,0xa0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a07512 <unknown>
+
+udot za.s[w11, 2], {z8.b - z9.b}, {z0.b - z1.b} // 11000001-10100000-01110101-00010010
+// CHECK-INST: udot za.s[w11, 2, vgx2], { z8.b, z9.b }, { z0.b, z1.b }
+// CHECK-ENCODING: [0x12,0x75,0xa0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a07512 <unknown>
+
+udot za.s[w9, 7, vgx2], {z12.b, z13.b}, {z10.b, z11.b} // 11000001-10101010-00110101-10010111
+// CHECK-INST: udot za.s[w9, 7, vgx2], { z12.b, z13.b }, { z10.b, z11.b }
+// CHECK-ENCODING: [0x97,0x35,0xaa,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1aa3597 <unknown>
+
+udot za.s[w9, 7], {z12.b - z13.b}, {z10.b - z11.b} // 11000001-10101010-00110101-10010111
+// CHECK-INST: udot za.s[w9, 7, vgx2], { z12.b, z13.b }, { z10.b, z11.b }
+// CHECK-ENCODING: [0x97,0x35,0xaa,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1aa3597 <unknown>
+
+
+udot za.d[w8, 0, vgx2], {z0.h, z1.h}, z0.h // 11000001-01100000-00010100-00010000
+// CHECK-INST: udot za.d[w8, 0, vgx2], { z0.h, z1.h }, z0.h
+// CHECK-ENCODING: [0x10,0x14,0x60,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1601410 <unknown>
+
+udot za.d[w8, 0], {z0.h - z1.h}, z0.h // 11000001-01100000-00010100-00010000
+// CHECK-INST: udot za.d[w8, 0, vgx2], { z0.h, z1.h }, z0.h
+// CHECK-ENCODING: [0x10,0x14,0x60,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1601410 <unknown>
+
+udot za.d[w10, 5, vgx2], {z10.h, z11.h}, z5.h // 11000001-01100101-01010101-01010101
+// CHECK-INST: udot za.d[w10, 5, vgx2], { z10.h, z11.h }, z5.h
+// CHECK-ENCODING: [0x55,0x55,0x65,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1655555 <unknown>
+
+udot za.d[w10, 5], {z10.h - z11.h}, z5.h // 11000001-01100101-01010101-01010101
+// CHECK-INST: udot za.d[w10, 5, vgx2], { z10.h, z11.h }, z5.h
+// CHECK-ENCODING: [0x55,0x55,0x65,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1655555 <unknown>
+
+udot za.d[w11, 7, vgx2], {z13.h, z14.h}, z8.h // 11000001-01101000-01110101-10110111
+// CHECK-INST: udot za.d[w11, 7, vgx2], { z13.h, z14.h }, z8.h
+// CHECK-ENCODING: [0xb7,0x75,0x68,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16875b7 <unknown>
+
+udot za.d[w11, 7], {z13.h - z14.h}, z8.h // 11000001-01101000-01110101-10110111
+// CHECK-INST: udot za.d[w11, 7, vgx2], { z13.h, z14.h }, z8.h
+// CHECK-ENCODING: [0xb7,0x75,0x68,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16875b7 <unknown>
+
+udot za.d[w11, 7, vgx2], {z31.h, z0.h}, z15.h // 11000001-01101111-01110111-11110111
+// CHECK-INST: udot za.d[w11, 7, vgx2], { z31.h, z0.h }, z15.h
+// CHECK-ENCODING: [0xf7,0x77,0x6f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16f77f7 <unknown>
+
+udot za.d[w11, 7], {z31.h - z0.h}, z15.h // 11000001-01101111-01110111-11110111
+// CHECK-INST: udot za.d[w11, 7, vgx2], { z31.h, z0.h }, z15.h
+// CHECK-ENCODING: [0xf7,0x77,0x6f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16f77f7 <unknown>
+
+udot za.d[w8, 5, vgx2], {z17.h, z18.h}, z0.h // 11000001-01100000-00010110-00110101
+// CHECK-INST: udot za.d[w8, 5, vgx2], { z17.h, z18.h }, z0.h
+// CHECK-ENCODING: [0x35,0x16,0x60,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1601635 <unknown>
+
+udot za.d[w8, 5], {z17.h - z18.h}, z0.h // 11000001-01100000-00010110-00110101
+// CHECK-INST: udot za.d[w8, 5, vgx2], { z17.h, z18.h }, z0.h
+// CHECK-ENCODING: [0x35,0x16,0x60,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1601635 <unknown>
+
+udot za.d[w8, 1, vgx2], {z1.h, z2.h}, z14.h // 11000001-01101110-00010100-00110001
+// CHECK-INST: udot za.d[w8, 1, vgx2], { z1.h, z2.h }, z14.h
+// CHECK-ENCODING: [0x31,0x14,0x6e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16e1431 <unknown>
+
+udot za.d[w8, 1], {z1.h - z2.h}, z14.h // 11000001-01101110-00010100-00110001
+// CHECK-INST: udot za.d[w8, 1, vgx2], { z1.h, z2.h }, z14.h
+// CHECK-ENCODING: [0x31,0x14,0x6e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16e1431 <unknown>
+
+udot za.d[w10, 0, vgx2], {z19.h, z20.h}, z4.h // 11000001-01100100-01010110-01110000
+// CHECK-INST: udot za.d[w10, 0, vgx2], { z19.h, z20.h }, z4.h
+// CHECK-ENCODING: [0x70,0x56,0x64,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1645670 <unknown>
+
+udot za.d[w10, 0], {z19.h - z20.h}, z4.h // 11000001-01100100-01010110-01110000
+// CHECK-INST: udot za.d[w10, 0, vgx2], { z19.h, z20.h }, z4.h
+// CHECK-ENCODING: [0x70,0x56,0x64,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1645670 <unknown>
+
+udot za.d[w8, 0, vgx2], {z12.h, z13.h}, z2.h // 11000001-01100010-00010101-10010000
+// CHECK-INST: udot za.d[w8, 0, vgx2], { z12.h, z13.h }, z2.h
+// CHECK-ENCODING: [0x90,0x15,0x62,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1621590 <unknown>
+
+udot za.d[w8, 0], {z12.h - z13.h}, z2.h // 11000001-01100010-00010101-10010000
+// CHECK-INST: udot za.d[w8, 0, vgx2], { z12.h, z13.h }, z2.h
+// CHECK-ENCODING: [0x90,0x15,0x62,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1621590 <unknown>
+
+udot za.d[w10, 1, vgx2], {z1.h, z2.h}, z10.h // 11000001-01101010-01010100-00110001
+// CHECK-INST: udot za.d[w10, 1, vgx2], { z1.h, z2.h }, z10.h
+// CHECK-ENCODING: [0x31,0x54,0x6a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16a5431 <unknown>
+
+udot za.d[w10, 1], {z1.h - z2.h}, z10.h // 11000001-01101010-01010100-00110001
+// CHECK-INST: udot za.d[w10, 1, vgx2], { z1.h, z2.h }, z10.h
+// CHECK-ENCODING: [0x31,0x54,0x6a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16a5431 <unknown>
+
+udot za.d[w8, 5, vgx2], {z22.h, z23.h}, z14.h // 11000001-01101110-00010110-11010101
+// CHECK-INST: udot za.d[w8, 5, vgx2], { z22.h, z23.h }, z14.h
+// CHECK-ENCODING: [0xd5,0x16,0x6e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16e16d5 <unknown>
+
+udot za.d[w8, 5], {z22.h - z23.h}, z14.h // 11000001-01101110-00010110-11010101
+// CHECK-INST: udot za.d[w8, 5, vgx2], { z22.h, z23.h }, z14.h
+// CHECK-ENCODING: [0xd5,0x16,0x6e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16e16d5 <unknown>
+
+udot za.d[w11, 2, vgx2], {z9.h, z10.h}, z1.h // 11000001-01100001-01110101-00110010
+// CHECK-INST: udot za.d[w11, 2, vgx2], { z9.h, z10.h }, z1.h
+// CHECK-ENCODING: [0x32,0x75,0x61,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1617532 <unknown>
+
+udot za.d[w11, 2], {z9.h - z10.h}, z1.h // 11000001-01100001-01110101-00110010
+// CHECK-INST: udot za.d[w11, 2, vgx2], { z9.h, z10.h }, z1.h
+// CHECK-ENCODING: [0x32,0x75,0x61,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1617532 <unknown>
+
+udot za.d[w9, 7, vgx2], {z12.h, z13.h}, z11.h // 11000001-01101011-00110101-10010111
+// CHECK-INST: udot za.d[w9, 7, vgx2], { z12.h, z13.h }, z11.h
+// CHECK-ENCODING: [0x97,0x35,0x6b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16b3597 <unknown>
+
+udot za.d[w9, 7], {z12.h - z13.h}, z11.h // 11000001-01101011-00110101-10010111
+// CHECK-INST: udot za.d[w9, 7, vgx2], { z12.h, z13.h }, z11.h
+// CHECK-ENCODING: [0x97,0x35,0x6b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16b3597 <unknown>
+
+udot za.d[w9, 7], {z12.h - z13.h}, z11.h // 11000001-01101011-00110101-10010111
+// CHECK-INST: udot za.d[w9, 7, vgx2], { z12.h, z13.h }, z11.h
+// CHECK-ENCODING: [0x97,0x35,0x6b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c16b3597 <unknown>
+
+
+udot za.d[w8, 0, vgx2], {z0.h, z1.h}, {z0.h, z1.h} // 11000001-11100000-00010100-00010000
+// CHECK-INST: udot za.d[w8, 0, vgx2], { z0.h, z1.h }, { z0.h, z1.h }
+// CHECK-ENCODING: [0x10,0x14,0xe0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e01410 <unknown>
+
+udot za.d[w8, 0], {z0.h - z1.h}, {z0.h - z1.h} // 11000001-11100000-00010100-00010000
+// CHECK-INST: udot za.d[w8, 0, vgx2], { z0.h, z1.h }, { z0.h, z1.h }
+// CHECK-ENCODING: [0x10,0x14,0xe0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e01410 <unknown>
+
+udot za.d[w10, 5, vgx2], {z10.h, z11.h}, {z20.h, z21.h} // 11000001-11110100-01010101-01010101
+// CHECK-INST: udot za.d[w10, 5, vgx2], { z10.h, z11.h }, { z20.h, z21.h }
+// CHECK-ENCODING: [0x55,0x55,0xf4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f45555 <unknown>
+
+udot za.d[w10, 5], {z10.h - z11.h}, {z20.h - z21.h} // 11000001-11110100-01010101-01010101
+// CHECK-INST: udot za.d[w10, 5, vgx2], { z10.h, z11.h }, { z20.h, z21.h }
+// CHECK-ENCODING: [0x55,0x55,0xf4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f45555 <unknown>
+
+udot za.d[w11, 7, vgx2], {z12.h, z13.h}, {z8.h, z9.h} // 11000001-11101000-01110101-10010111
+// CHECK-INST: udot za.d[w11, 7, vgx2], { z12.h, z13.h }, { z8.h, z9.h }
+// CHECK-ENCODING: [0x97,0x75,0xe8,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e87597 <unknown>
+
+udot za.d[w11, 7], {z12.h - z13.h}, {z8.h - z9.h} // 11000001-11101000-01110101-10010111
+// CHECK-INST: udot za.d[w11, 7, vgx2], { z12.h, z13.h }, { z8.h, z9.h }
+// CHECK-ENCODING: [0x97,0x75,0xe8,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e87597 <unknown>
+
+udot za.d[w11, 7, vgx2], {z30.h, z31.h}, {z30.h, z31.h} // 11000001-11111110-01110111-11010111
+// CHECK-INST: udot za.d[w11, 7, vgx2], { z30.h, z31.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0xd7,0x77,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe77d7 <unknown>
+
+udot za.d[w11, 7], {z30.h - z31.h}, {z30.h - z31.h} // 11000001-11111110-01110111-11010111
+// CHECK-INST: udot za.d[w11, 7, vgx2], { z30.h, z31.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0xd7,0x77,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe77d7 <unknown>
+
+udot za.d[w8, 5, vgx2], {z16.h, z17.h}, {z16.h, z17.h} // 11000001-11110000-00010110-00010101
+// CHECK-INST: udot za.d[w8, 5, vgx2], { z16.h, z17.h }, { z16.h, z17.h }
+// CHECK-ENCODING: [0x15,0x16,0xf0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f01615 <unknown>
+
+udot za.d[w8, 5], {z16.h - z17.h}, {z16.h - z17.h} // 11000001-11110000-00010110-00010101
+// CHECK-INST: udot za.d[w8, 5, vgx2], { z16.h, z17.h }, { z16.h, z17.h }
+// CHECK-ENCODING: [0x15,0x16,0xf0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f01615 <unknown>
+
+udot za.d[w8, 1, vgx2], {z0.h, z1.h}, {z30.h, z31.h} // 11000001-11111110-00010100-00010001
+// CHECK-INST: udot za.d[w8, 1, vgx2], { z0.h, z1.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0x11,0x14,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe1411 <unknown>
+
+udot za.d[w8, 1], {z0.h - z1.h}, {z30.h - z31.h} // 11000001-11111110-00010100-00010001
+// CHECK-INST: udot za.d[w8, 1, vgx2], { z0.h, z1.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0x11,0x14,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe1411 <unknown>
+
+udot za.d[w10, 0, vgx2], {z18.h, z19.h}, {z20.h, z21.h} // 11000001-11110100-01010110-01010000
+// CHECK-INST: udot za.d[w10, 0, vgx2], { z18.h, z19.h }, { z20.h, z21.h }
+// CHECK-ENCODING: [0x50,0x56,0xf4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f45650 <unknown>
+
+udot za.d[w10, 0], {z18.h - z19.h}, {z20.h - z21.h} // 11000001-11110100-01010110-01010000
+// CHECK-INST: udot za.d[w10, 0, vgx2], { z18.h, z19.h }, { z20.h, z21.h }
+// CHECK-ENCODING: [0x50,0x56,0xf4,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f45650 <unknown>
+
+udot za.d[w8, 0, vgx2], {z12.h, z13.h}, {z2.h, z3.h} // 11000001-11100010-00010101-10010000
+// CHECK-INST: udot za.d[w8, 0, vgx2], { z12.h, z13.h }, { z2.h, z3.h }
+// CHECK-ENCODING: [0x90,0x15,0xe2,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e21590 <unknown>
+
+udot za.d[w8, 0], {z12.h - z13.h}, {z2.h - z3.h} // 11000001-11100010-00010101-10010000
+// CHECK-INST: udot za.d[w8, 0, vgx2], { z12.h, z13.h }, { z2.h, z3.h }
+// CHECK-ENCODING: [0x90,0x15,0xe2,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e21590 <unknown>
+
+udot za.d[w10, 1, vgx2], {z0.h, z1.h}, {z26.h, z27.h} // 11000001-11111010-01010100-00010001
+// CHECK-INST: udot za.d[w10, 1, vgx2], { z0.h, z1.h }, { z26.h, z27.h }
+// CHECK-ENCODING: [0x11,0x54,0xfa,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fa5411 <unknown>
+
+udot za.d[w10, 1], {z0.h - z1.h}, {z26.h - z27.h} // 11000001-11111010-01010100-00010001
+// CHECK-INST: udot za.d[w10, 1, vgx2], { z0.h, z1.h }, { z26.h, z27.h }
+// CHECK-ENCODING: [0x11,0x54,0xfa,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fa5411 <unknown>
+
+udot za.d[w8, 5, vgx2], {z22.h, z23.h}, {z30.h, z31.h} // 11000001-11111110-00010110-11010101
+// CHECK-INST: udot za.d[w8, 5, vgx2], { z22.h, z23.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0xd5,0x16,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe16d5 <unknown>
+
+udot za.d[w8, 5], {z22.h - z23.h}, {z30.h - z31.h} // 11000001-11111110-00010110-11010101
+// CHECK-INST: udot za.d[w8, 5, vgx2], { z22.h, z23.h }, { z30.h, z31.h }
+// CHECK-ENCODING: [0xd5,0x16,0xfe,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fe16d5 <unknown>
+
+udot za.d[w11, 2, vgx2], {z8.h, z9.h}, {z0.h, z1.h} // 11000001-11100000-01110101-00010010
+// CHECK-INST: udot za.d[w11, 2, vgx2], { z8.h, z9.h }, { z0.h, z1.h }
+// CHECK-ENCODING: [0x12,0x75,0xe0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e07512 <unknown>
+
+udot za.d[w11, 2], {z8.h - z9.h}, {z0.h - z1.h} // 11000001-11100000-01110101-00010010
+// CHECK-INST: udot za.d[w11, 2, vgx2], { z8.h, z9.h }, { z0.h, z1.h }
+// CHECK-ENCODING: [0x12,0x75,0xe0,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e07512 <unknown>
+
+udot za.d[w9, 7, vgx2], {z12.h, z13.h}, {z10.h, z11.h} // 11000001-11101010-00110101-10010111
+// CHECK-INST: udot za.d[w9, 7, vgx2], { z12.h, z13.h }, { z10.h, z11.h }
+// CHECK-ENCODING: [0x97,0x35,0xea,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1ea3597 <unknown>
+
+udot za.d[w9, 7], {z12.h - z13.h}, {z10.h - z11.h} // 11000001-11101010-00110101-10010111
+// CHECK-INST: udot za.d[w9, 7, vgx2], { z12.h, z13.h }, { z10.h, z11.h }
+// CHECK-ENCODING: [0x97,0x35,0xea,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1ea3597 <unknown>
+
+
+udot za.s[w8, 0, vgx4], {z0.b - z3.b}, z0.b // 11000001-00110000-00010100-00010000
+// CHECK-INST: udot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b
+// CHECK-ENCODING: [0x10,0x14,0x30,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1301410 <unknown>
+
+udot za.s[w8, 0], {z0.b - z3.b}, z0.b // 11000001-00110000-00010100-00010000
+// CHECK-INST: udot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b
+// CHECK-ENCODING: [0x10,0x14,0x30,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1301410 <unknown>
+
+udot za.s[w10, 5, vgx4], {z10.b - z13.b}, z5.b // 11000001-00110101-01010101-01010101
+// CHECK-INST: udot za.s[w10, 5, vgx4], { z10.b - z13.b }, z5.b
+// CHECK-ENCODING: [0x55,0x55,0x35,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1355555 <unknown>
+
+udot za.s[w10, 5], {z10.b - z13.b}, z5.b // 11000001-00110101-01010101-01010101
+// CHECK-INST: udot za.s[w10, 5, vgx4], { z10.b - z13.b }, z5.b
+// CHECK-ENCODING: [0x55,0x55,0x35,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1355555 <unknown>
+
+udot za.s[w11, 7, vgx4], {z13.b - z16.b}, z8.b // 11000001-00111000-01110101-10110111
+// CHECK-INST: udot za.s[w11, 7, vgx4], { z13.b - z16.b }, z8.b
+// CHECK-ENCODING: [0xb7,0x75,0x38,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13875b7 <unknown>
+
+udot za.s[w11, 7], {z13.b - z16.b}, z8.b // 11000001-00111000-01110101-10110111
+// CHECK-INST: udot za.s[w11, 7, vgx4], { z13.b - z16.b }, z8.b
+// CHECK-ENCODING: [0xb7,0x75,0x38,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13875b7 <unknown>
+
+udot za.s[w11, 7, vgx4], {z31.b - z2.b}, z15.b // 11000001-00111111-01110111-11110111
+// CHECK-INST: udot za.s[w11, 7, vgx4], { z31.b, z0.b, z1.b, z2.b }, z15.b
+// CHECK-ENCODING: [0xf7,0x77,0x3f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13f77f7 <unknown>
+
+udot za.s[w11, 7], {z31.b - z2.b}, z15.b // 11000001-00111111-01110111-11110111
+// CHECK-INST: udot za.s[w11, 7, vgx4], { z31.b, z0.b, z1.b, z2.b }, z15.b
+// CHECK-ENCODING: [0xf7,0x77,0x3f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13f77f7 <unknown>
+
+udot za.s[w8, 5, vgx4], {z17.b - z20.b}, z0.b // 11000001-00110000-00010110-00110101
+// CHECK-INST: udot za.s[w8, 5, vgx4], { z17.b - z20.b }, z0.b
+// CHECK-ENCODING: [0x35,0x16,0x30,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1301635 <unknown>
+
+udot za.s[w8, 5], {z17.b - z20.b}, z0.b // 11000001-00110000-00010110-00110101
+// CHECK-INST: udot za.s[w8, 5, vgx4], { z17.b - z20.b }, z0.b
+// CHECK-ENCODING: [0x35,0x16,0x30,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1301635 <unknown>
+
+udot za.s[w8, 1, vgx4], {z1.b - z4.b}, z14.b // 11000001-00111110-00010100-00110001
+// CHECK-INST: udot za.s[w8, 1, vgx4], { z1.b - z4.b }, z14.b
+// CHECK-ENCODING: [0x31,0x14,0x3e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13e1431 <unknown>
+
+udot za.s[w8, 1], {z1.b - z4.b}, z14.b // 11000001-00111110-00010100-00110001
+// CHECK-INST: udot za.s[w8, 1, vgx4], { z1.b - z4.b }, z14.b
+// CHECK-ENCODING: [0x31,0x14,0x3e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13e1431 <unknown>
+
+udot za.s[w10, 0, vgx4], {z19.b - z22.b}, z4.b // 11000001-00110100-01010110-01110000
+// CHECK-INST: udot za.s[w10, 0, vgx4], { z19.b - z22.b }, z4.b
+// CHECK-ENCODING: [0x70,0x56,0x34,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1345670 <unknown>
+
+udot za.s[w10, 0], {z19.b - z22.b}, z4.b // 11000001-00110100-01010110-01110000
+// CHECK-INST: udot za.s[w10, 0, vgx4], { z19.b - z22.b }, z4.b
+// CHECK-ENCODING: [0x70,0x56,0x34,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1345670 <unknown>
+
+udot za.s[w8, 0, vgx4], {z12.b - z15.b}, z2.b // 11000001-00110010-00010101-10010000
+// CHECK-INST: udot za.s[w8, 0, vgx4], { z12.b - z15.b }, z2.b
+// CHECK-ENCODING: [0x90,0x15,0x32,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1321590 <unknown>
+
+udot za.s[w8, 0], {z12.b - z15.b}, z2.b // 11000001-00110010-00010101-10010000
+// CHECK-INST: udot za.s[w8, 0, vgx4], { z12.b - z15.b }, z2.b
+// CHECK-ENCODING: [0x90,0x15,0x32,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1321590 <unknown>
+
+udot za.s[w10, 1, vgx4], {z1.b - z4.b}, z10.b // 11000001-00111010-01010100-00110001
+// CHECK-INST: udot za.s[w10, 1, vgx4], { z1.b - z4.b }, z10.b
+// CHECK-ENCODING: [0x31,0x54,0x3a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13a5431 <unknown>
+
+udot za.s[w10, 1], {z1.b - z4.b}, z10.b // 11000001-00111010-01010100-00110001
+// CHECK-INST: udot za.s[w10, 1, vgx4], { z1.b - z4.b }, z10.b
+// CHECK-ENCODING: [0x31,0x54,0x3a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13a5431 <unknown>
+
+udot za.s[w8, 5, vgx4], {z22.b - z25.b}, z14.b // 11000001-00111110-00010110-11010101
+// CHECK-INST: udot za.s[w8, 5, vgx4], { z22.b - z25.b }, z14.b
+// CHECK-ENCODING: [0xd5,0x16,0x3e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13e16d5 <unknown>
+
+udot za.s[w8, 5], {z22.b - z25.b}, z14.b // 11000001-00111110-00010110-11010101
+// CHECK-INST: udot za.s[w8, 5, vgx4], { z22.b - z25.b }, z14.b
+// CHECK-ENCODING: [0xd5,0x16,0x3e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13e16d5 <unknown>
+
+udot za.s[w11, 2, vgx4], {z9.b - z12.b}, z1.b // 11000001-00110001-01110101-00110010
+// CHECK-INST: udot za.s[w11, 2, vgx4], { z9.b - z12.b }, z1.b
+// CHECK-ENCODING: [0x32,0x75,0x31,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1317532 <unknown>
+
+udot za.s[w11, 2], {z9.b - z12.b}, z1.b // 11000001-00110001-01110101-00110010
+// CHECK-INST: udot za.s[w11, 2, vgx4], { z9.b - z12.b }, z1.b
+// CHECK-ENCODING: [0x32,0x75,0x31,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1317532 <unknown>
+
+udot za.s[w9, 7, vgx4], {z12.b - z15.b}, z11.b // 11000001-00111011-00110101-10010111
+// CHECK-INST: udot za.s[w9, 7, vgx4], { z12.b - z15.b }, z11.b
+// CHECK-ENCODING: [0x97,0x35,0x3b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13b3597 <unknown>
+
+udot za.s[w9, 7], {z12.b - z15.b}, z11.b // 11000001-00111011-00110101-10010111
+// CHECK-INST: udot za.s[w9, 7, vgx4], { z12.b - z15.b }, z11.b
+// CHECK-ENCODING: [0x97,0x35,0x3b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c13b3597 <unknown>
+
+
+udot za.s[w8, 0, vgx4], {z0.b - z3.b}, {z0.b - z3.b} // 11000001-10100001-00010100-00010000
+// CHECK-INST: udot za.s[w8, 0, vgx4], { z0.b - z3.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x10,0x14,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a11410 <unknown>
+
+udot za.s[w8, 0], {z0.b - z3.b}, {z0.b - z3.b} // 11000001-10100001-00010100-00010000
+// CHECK-INST: udot za.s[w8, 0, vgx4], { z0.b - z3.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x10,0x14,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a11410 <unknown>
+
+udot za.s[w10, 5, vgx4], {z8.b - z11.b}, {z20.b - z23.b} // 11000001-10110101-01010101-00010101
+// CHECK-INST: udot za.s[w10, 5, vgx4], { z8.b - z11.b }, { z20.b - z23.b }
+// CHECK-ENCODING: [0x15,0x55,0xb5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b55515 <unknown>
+
+udot za.s[w10, 5], {z8.b - z11.b}, {z20.b - z23.b} // 11000001-10110101-01010101-00010101
+// CHECK-INST: udot za.s[w10, 5, vgx4], { z8.b - z11.b }, { z20.b - z23.b }
+// CHECK-ENCODING: [0x15,0x55,0xb5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b55515 <unknown>
+
+udot za.s[w11, 7, vgx4], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-01110101-10010111
+// CHECK-INST: udot za.s[w11, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b }
+// CHECK-ENCODING: [0x97,0x75,0xa9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a97597 <unknown>
+
+udot za.s[w11, 7], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-01110101-10010111
+// CHECK-INST: udot za.s[w11, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b }
+// CHECK-ENCODING: [0x97,0x75,0xa9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a97597 <unknown>
+
+udot za.s[w11, 7, vgx4], {z28.b - z31.b}, {z28.b - z31.b} // 11000001-10111101-01110111-10010111
+// CHECK-INST: udot za.s[w11, 7, vgx4], { z28.b - z31.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x97,0x77,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd7797 <unknown>
+
+udot za.s[w11, 7], {z28.b - z31.b}, {z28.b - z31.b} // 11000001-10111101-01110111-10010111
+// CHECK-INST: udot za.s[w11, 7, vgx4], { z28.b - z31.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x97,0x77,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd7797 <unknown>
+
+udot za.s[w8, 5, vgx4], {z16.b - z19.b}, {z16.b - z19.b} // 11000001-10110001-00010110-00010101
+// CHECK-INST: udot za.s[w8, 5, vgx4], { z16.b - z19.b }, { z16.b - z19.b }
+// CHECK-ENCODING: [0x15,0x16,0xb1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b11615 <unknown>
+
+udot za.s[w8, 5], {z16.b - z19.b}, {z16.b - z19.b} // 11000001-10110001-00010110-00010101
+// CHECK-INST: udot za.s[w8, 5, vgx4], { z16.b - z19.b }, { z16.b - z19.b }
+// CHECK-ENCODING: [0x15,0x16,0xb1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b11615 <unknown>
+
+udot za.s[w8, 1, vgx4], {z0.b - z3.b}, {z28.b - z31.b} // 11000001-10111101-00010100-00010001
+// CHECK-INST: udot za.s[w8, 1, vgx4], { z0.b - z3.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x11,0x14,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd1411 <unknown>
+
+udot za.s[w8, 1], {z0.b - z3.b}, {z28.b - z31.b} // 11000001-10111101-00010100-00010001
+// CHECK-INST: udot za.s[w8, 1, vgx4], { z0.b - z3.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x11,0x14,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd1411 <unknown>
+
+udot za.s[w10, 0, vgx4], {z16.b - z19.b}, {z20.b - z23.b} // 11000001-10110101-01010110-00010000
+// CHECK-INST: udot za.s[w10, 0, vgx4], { z16.b - z19.b }, { z20.b - z23.b }
+// CHECK-ENCODING: [0x10,0x56,0xb5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b55610 <unknown>
+
+udot za.s[w10, 0], {z16.b - z19.b}, {z20.b - z23.b} // 11000001-10110101-01010110-00010000
+// CHECK-INST: udot za.s[w10, 0, vgx4], { z16.b - z19.b }, { z20.b - z23.b }
+// CHECK-ENCODING: [0x10,0x56,0xb5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b55610 <unknown>
+
+udot za.s[w8, 0, vgx4], {z12.b - z15.b}, {z0.b - z3.b} // 11000001-10100001-00010101-10010000
+// CHECK-INST: udot za.s[w8, 0, vgx4], { z12.b - z15.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x90,0x15,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a11590 <unknown>
+udot za.s[w8, 0], {z12.b - z15.b}, {z0.b - z3.b} // 11000001-10100001-00010101-10010000
+// CHECK-INST: udot za.s[w8, 0, vgx4], { z12.b - z15.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x90,0x15,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a11590 <unknown>
+
+udot za.s[w10, 1, vgx4], {z0.b - z3.b}, {z24.b - z27.b} // 11000001-10111001-01010100-00010001
+// CHECK-INST: udot za.s[w10, 1, vgx4], { z0.b - z3.b }, { z24.b - z27.b }
+// CHECK-ENCODING: [0x11,0x54,0xb9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b95411 <unknown>
+
+udot za.s[w10, 1], {z0.b - z3.b}, {z24.b - z27.b} // 11000001-10111001-01010100-00010001
+// CHECK-INST: udot za.s[w10, 1, vgx4], { z0.b - z3.b }, { z24.b - z27.b }
+// CHECK-ENCODING: [0x11,0x54,0xb9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1b95411 <unknown>
+
+udot za.s[w8, 5, vgx4], {z20.b - z23.b}, {z28.b - z31.b} // 11000001-10111101-00010110-10010101
+// CHECK-INST: udot za.s[w8, 5, vgx4], { z20.b - z23.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x95,0x16,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd1695 <unknown>
+
+udot za.s[w8, 5], {z20.b - z23.b}, {z28.b - z31.b} // 11000001-10111101-00010110-10010101
+// CHECK-INST: udot za.s[w8, 5, vgx4], { z20.b - z23.b }, { z28.b - z31.b }
+// CHECK-ENCODING: [0x95,0x16,0xbd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1bd1695 <unknown>
+
+udot za.s[w11, 2, vgx4], {z8.b - z11.b}, {z0.b - z3.b} // 11000001-10100001-01110101-00010010
+// CHECK-INST: udot za.s[w11, 2, vgx4], { z8.b - z11.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x12,0x75,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a17512 <unknown>
+
+udot za.s[w11, 2], {z8.b - z11.b}, {z0.b - z3.b} // 11000001-10100001-01110101-00010010
+// CHECK-INST: udot za.s[w11, 2, vgx4], { z8.b - z11.b }, { z0.b - z3.b }
+// CHECK-ENCODING: [0x12,0x75,0xa1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a17512 <unknown>
+
+udot za.s[w9, 7, vgx4], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-00110101-10010111
+// CHECK-INST: udot za.s[w9, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b }
+// CHECK-ENCODING: [0x97,0x35,0xa9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a93597 <unknown>
+
+udot za.s[w9, 7], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-00110101-10010111
+// CHECK-INST: udot za.s[w9, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b }
+// CHECK-ENCODING: [0x97,0x35,0xa9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1a93597 <unknown>
+
+
+udot za.d[w8, 0, vgx4], {z0.h - z3.h}, z0.h // 11000001-01110000-00010100-00010000
+// CHECK-INST: udot za.d[w8, 0, vgx4], { z0.h - z3.h }, z0.h
+// CHECK-ENCODING: [0x10,0x14,0x70,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1701410 <unknown>
+
+udot za.d[w8, 0], {z0.h - z3.h}, z0.h // 11000001-01110000-00010100-00010000
+// CHECK-INST: udot za.d[w8, 0, vgx4], { z0.h - z3.h }, z0.h
+// CHECK-ENCODING: [0x10,0x14,0x70,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1701410 <unknown>
+
+udot za.d[w10, 5, vgx4], {z10.h - z13.h}, z5.h // 11000001-01110101-01010101-01010101
+// CHECK-INST: udot za.d[w10, 5, vgx4], { z10.h - z13.h }, z5.h
+// CHECK-ENCODING: [0x55,0x55,0x75,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1755555 <unknown>
+
+udot za.d[w10, 5], {z10.h - z13.h}, z5.h // 11000001-01110101-01010101-01010101
+// CHECK-INST: udot za.d[w10, 5, vgx4], { z10.h - z13.h }, z5.h
+// CHECK-ENCODING: [0x55,0x55,0x75,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1755555 <unknown>
+
+udot za.d[w11, 7, vgx4], {z13.h - z16.h}, z8.h // 11000001-01111000-01110101-10110111
+// CHECK-INST: udot za.d[w11, 7, vgx4], { z13.h - z16.h }, z8.h
+// CHECK-ENCODING: [0xb7,0x75,0x78,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17875b7 <unknown>
+
+udot za.d[w11, 7], {z13.h - z16.h}, z8.h // 11000001-01111000-01110101-10110111
+// CHECK-INST: udot za.d[w11, 7, vgx4], { z13.h - z16.h }, z8.h
+// CHECK-ENCODING: [0xb7,0x75,0x78,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17875b7 <unknown>
+
+udot za.d[w11, 7, vgx4], {z31.h - z2.h}, z15.h // 11000001-01111111-01110111-11110111
+// CHECK-INST: udot za.d[w11, 7, vgx4], { z31.h, z0.h, z1.h, z2.h }, z15.h
+// CHECK-ENCODING: [0xf7,0x77,0x7f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17f77f7 <unknown>
+
+udot za.d[w11, 7], {z31.h - z2.h}, z15.h // 11000001-01111111-01110111-11110111
+// CHECK-INST: udot za.d[w11, 7, vgx4], { z31.h, z0.h, z1.h, z2.h }, z15.h
+// CHECK-ENCODING: [0xf7,0x77,0x7f,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17f77f7 <unknown>
+
+udot za.d[w8, 5, vgx4], {z17.h - z20.h}, z0.h // 11000001-01110000-00010110-00110101
+// CHECK-INST: udot za.d[w8, 5, vgx4], { z17.h - z20.h }, z0.h
+// CHECK-ENCODING: [0x35,0x16,0x70,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1701635 <unknown>
+
+udot za.d[w8, 5], {z17.h - z20.h}, z0.h // 11000001-01110000-00010110-00110101
+// CHECK-INST: udot za.d[w8, 5, vgx4], { z17.h - z20.h }, z0.h
+// CHECK-ENCODING: [0x35,0x16,0x70,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1701635 <unknown>
+
+udot za.d[w8, 1, vgx4], {z1.h - z4.h}, z14.h // 11000001-01111110-00010100-00110001
+// CHECK-INST: udot za.d[w8, 1, vgx4], { z1.h - z4.h }, z14.h
+// CHECK-ENCODING: [0x31,0x14,0x7e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17e1431 <unknown>
+
+udot za.d[w8, 1], {z1.h - z4.h}, z14.h // 11000001-01111110-00010100-00110001
+// CHECK-INST: udot za.d[w8, 1, vgx4], { z1.h - z4.h }, z14.h
+// CHECK-ENCODING: [0x31,0x14,0x7e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17e1431 <unknown>
+
+udot za.d[w10, 0, vgx4], {z19.h - z22.h}, z4.h // 11000001-01110100-01010110-01110000
+// CHECK-INST: udot za.d[w10, 0, vgx4], { z19.h - z22.h }, z4.h
+// CHECK-ENCODING: [0x70,0x56,0x74,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1745670 <unknown>
+
+udot za.d[w10, 0], {z19.h - z22.h}, z4.h // 11000001-01110100-01010110-01110000
+// CHECK-INST: udot za.d[w10, 0, vgx4], { z19.h - z22.h }, z4.h
+// CHECK-ENCODING: [0x70,0x56,0x74,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1745670 <unknown>
+
+udot za.d[w8, 0, vgx4], {z12.h - z15.h}, z2.h // 11000001-01110010-00010101-10010000
+// CHECK-INST: udot za.d[w8, 0, vgx4], { z12.h - z15.h }, z2.h
+// CHECK-ENCODING: [0x90,0x15,0x72,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1721590 <unknown>
+
+udot za.d[w8, 0], {z12.h - z15.h}, z2.h // 11000001-01110010-00010101-10010000
+// CHECK-INST: udot za.d[w8, 0, vgx4], { z12.h - z15.h }, z2.h
+// CHECK-ENCODING: [0x90,0x15,0x72,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1721590 <unknown>
+
+udot za.d[w10, 1, vgx4], {z1.h - z4.h}, z10.h // 11000001-01111010-01010100-00110001
+// CHECK-INST: udot za.d[w10, 1, vgx4], { z1.h - z4.h }, z10.h
+// CHECK-ENCODING: [0x31,0x54,0x7a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17a5431 <unknown>
+
+udot za.d[w10, 1], {z1.h - z4.h}, z10.h // 11000001-01111010-01010100-00110001
+// CHECK-INST: udot za.d[w10, 1, vgx4], { z1.h - z4.h }, z10.h
+// CHECK-ENCODING: [0x31,0x54,0x7a,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17a5431 <unknown>
+
+udot za.d[w8, 5, vgx4], {z22.h - z25.h}, z14.h // 11000001-01111110-00010110-11010101
+// CHECK-INST: udot za.d[w8, 5, vgx4], { z22.h - z25.h }, z14.h
+// CHECK-ENCODING: [0xd5,0x16,0x7e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17e16d5 <unknown>
+
+udot za.d[w8, 5], {z22.h - z25.h}, z14.h // 11000001-01111110-00010110-11010101
+// CHECK-INST: udot za.d[w8, 5, vgx4], { z22.h - z25.h }, z14.h
+// CHECK-ENCODING: [0xd5,0x16,0x7e,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17e16d5 <unknown>
+
+udot za.d[w11, 2, vgx4], {z9.h - z12.h}, z1.h // 11000001-01110001-01110101-00110010
+// CHECK-INST: udot za.d[w11, 2, vgx4], { z9.h - z12.h }, z1.h
+// CHECK-ENCODING: [0x32,0x75,0x71,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1717532 <unknown>
+
+udot za.d[w11, 2], {z9.h - z12.h}, z1.h // 11000001-01110001-01110101-00110010
+// CHECK-INST: udot za.d[w11, 2, vgx4], { z9.h - z12.h }, z1.h
+// CHECK-ENCODING: [0x32,0x75,0x71,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1717532 <unknown>
+
+udot za.d[w9, 7, vgx4], {z12.h - z15.h}, z11.h // 11000001-01111011-00110101-10010111
+// CHECK-INST: udot za.d[w9, 7, vgx4], { z12.h - z15.h }, z11.h
+// CHECK-ENCODING: [0x97,0x35,0x7b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17b3597 <unknown>
+
+udot za.d[w9, 7], {z12.h - z15.h}, z11.h // 11000001-01111011-00110101-10010111
+// CHECK-INST: udot za.d[w9, 7, vgx4], { z12.h - z15.h }, z11.h
+// CHECK-ENCODING: [0x97,0x35,0x7b,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c17b3597 <unknown>
+
+udot za.d[w8, 0, vgx4], {z0.h - z3.h}, {z0.h - z3.h} // 11000001-11100001-00010100-00010000
+// CHECK-INST: udot za.d[w8, 0, vgx4], { z0.h - z3.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x10,0x14,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e11410 <unknown>
+
+udot za.d[w8, 0], {z0.h - z3.h}, {z0.h - z3.h} // 11000001-11100001-00010100-00010000
+// CHECK-INST: udot za.d[w8, 0, vgx4], { z0.h - z3.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x10,0x14,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e11410 <unknown>
+
+udot za.d[w10, 5, vgx4], {z8.h - z11.h}, {z20.h - z23.h} // 11000001-11110101-01010101-00010101
+// CHECK-INST: udot za.d[w10, 5, vgx4], { z8.h - z11.h }, { z20.h - z23.h }
+// CHECK-ENCODING: [0x15,0x55,0xf5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f55515 <unknown>
+
+udot za.d[w10, 5], {z8.h - z11.h}, {z20.h - z23.h} // 11000001-11110101-01010101-00010101
+// CHECK-INST: udot za.d[w10, 5, vgx4], { z8.h - z11.h }, { z20.h - z23.h }
+// CHECK-ENCODING: [0x15,0x55,0xf5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f55515 <unknown>
+
+udot za.d[w11, 7, vgx4], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-01110101-10010111
+// CHECK-INST: udot za.d[w11, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h }
+// CHECK-ENCODING: [0x97,0x75,0xe9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e97597 <unknown>
+
+udot za.d[w11, 7], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-01110101-10010111
+// CHECK-INST: udot za.d[w11, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h }
+// CHECK-ENCODING: [0x97,0x75,0xe9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e97597 <unknown>
+
+udot za.d[w11, 7, vgx4], {z28.h - z31.h}, {z28.h - z31.h} // 11000001-11111101-01110111-10010111
+// CHECK-INST: udot za.d[w11, 7, vgx4], { z28.h - z31.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x97,0x77,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd7797 <unknown>
+
+udot za.d[w11, 7], {z28.h - z31.h}, {z28.h - z31.h} // 11000001-11111101-01110111-10010111
+// CHECK-INST: udot za.d[w11, 7, vgx4], { z28.h - z31.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x97,0x77,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd7797 <unknown>
+
+udot za.d[w8, 5, vgx4], {z16.h - z19.h}, {z16.h - z19.h} // 11000001-11110001-00010110-00010101
+// CHECK-INST: udot za.d[w8, 5, vgx4], { z16.h - z19.h }, { z16.h - z19.h }
+// CHECK-ENCODING: [0x15,0x16,0xf1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f11615 <unknown>
+
+udot za.d[w8, 5], {z16.h - z19.h}, {z16.h - z19.h} // 11000001-11110001-00010110-00010101
+// CHECK-INST: udot za.d[w8, 5, vgx4], { z16.h - z19.h }, { z16.h - z19.h }
+// CHECK-ENCODING: [0x15,0x16,0xf1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f11615 <unknown>
+
+udot za.d[w8, 1, vgx4], {z0.h - z3.h}, {z28.h - z31.h} // 11000001-11111101-00010100-00010001
+// CHECK-INST: udot za.d[w8, 1, vgx4], { z0.h - z3.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x11,0x14,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd1411 <unknown>
+
+udot za.d[w8, 1], {z0.h - z3.h}, {z28.h - z31.h} // 11000001-11111101-00010100-00010001
+// CHECK-INST: udot za.d[w8, 1, vgx4], { z0.h - z3.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x11,0x14,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd1411 <unknown>
+
+udot za.d[w10, 0, vgx4], {z16.h - z19.h}, {z20.h - z23.h} // 11000001-11110101-01010110-00010000
+// CHECK-INST: udot za.d[w10, 0, vgx4], { z16.h - z19.h }, { z20.h - z23.h }
+// CHECK-ENCODING: [0x10,0x56,0xf5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f55610 <unknown>
+udot za.d[w10, 0], {z16.h - z19.h}, {z20.h - z23.h} // 11000001-11110101-01010110-00010000
+// CHECK-INST: udot za.d[w10, 0, vgx4], { z16.h - z19.h }, { z20.h - z23.h }
+// CHECK-ENCODING: [0x10,0x56,0xf5,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f55610 <unknown>
+
+udot za.d[w8, 0, vgx4], {z12.h - z15.h}, {z0.h - z3.h} // 11000001-11100001-00010101-10010000
+// CHECK-INST: udot za.d[w8, 0, vgx4], { z12.h - z15.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x90,0x15,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e11590 <unknown>
+
+udot za.d[w8, 0], {z12.h - z15.h}, {z0.h - z3.h} // 11000001-11100001-00010101-10010000
+// CHECK-INST: udot za.d[w8, 0, vgx4], { z12.h - z15.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x90,0x15,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e11590 <unknown>
+
+udot za.d[w10, 1, vgx4], {z0.h - z3.h}, {z24.h - z27.h} // 11000001-11111001-01010100-00010001
+// CHECK-INST: udot za.d[w10, 1, vgx4], { z0.h - z3.h }, { z24.h - z27.h }
+// CHECK-ENCODING: [0x11,0x54,0xf9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f95411 <unknown>
+
+udot za.d[w10, 1], {z0.h - z3.h}, {z24.h - z27.h} // 11000001-11111001-01010100-00010001
+// CHECK-INST: udot za.d[w10, 1, vgx4], { z0.h - z3.h }, { z24.h - z27.h }
+// CHECK-ENCODING: [0x11,0x54,0xf9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1f95411 <unknown>
+
+udot za.d[w8, 5, vgx4], {z20.h - z23.h}, {z28.h - z31.h} // 11000001-11111101-00010110-10010101
+// CHECK-INST: udot za.d[w8, 5, vgx4], { z20.h - z23.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x95,0x16,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd1695 <unknown>
+
+udot za.d[w8, 5], {z20.h - z23.h}, {z28.h - z31.h} // 11000001-11111101-00010110-10010101
+// CHECK-INST: udot za.d[w8, 5, vgx4], { z20.h - z23.h }, { z28.h - z31.h }
+// CHECK-ENCODING: [0x95,0x16,0xfd,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1fd1695 <unknown>
+
+udot za.d[w11, 2, vgx4], {z8.h - z11.h}, {z0.h - z3.h} // 11000001-11100001-01110101-00010010
+// CHECK-INST: udot za.d[w11, 2, vgx4], { z8.h - z11.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x12,0x75,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e17512 <unknown>
+
+udot za.d[w11, 2], {z8.h - z11.h}, {z0.h - z3.h} // 11000001-11100001-01110101-00010010
+// CHECK-INST: udot za.d[w11, 2, vgx4], { z8.h - z11.h }, { z0.h - z3.h }
+// CHECK-ENCODING: [0x12,0x75,0xe1,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e17512 <unknown>
+
+udot za.d[w9, 7, vgx4], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-00110101-10010111
+// CHECK-INST: udot za.d[w9, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h }
+// CHECK-ENCODING: [0x97,0x35,0xe9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e93597 <unknown>
+
+udot za.d[w9, 7], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-00110101-10010111
+// CHECK-INST: udot za.d[w9, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h }
+// CHECK-ENCODING: [0x97,0x35,0xe9,0xc1]
+// CHECK-ERROR: instruction requires: sme2
+// CHECK-UNKNOWN: c1e93597 <unknown>
+
+
More information about the llvm-commits
mailing list