diff --git a/llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td b/llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td --- a/llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td +++ b/llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td @@ -448,9 +448,15 @@ defm SDOT_VG2_M2ZZI_BToS : sme2_dot_array_vg2_index_BToS<"sdot", 0b1100>; defm SDOT_VG4_M4ZZI_HToS : sme2_dot_array_vg4_index_HtoS<"sdot", 0b1000>; defm SDOT_VG4_M4ZZI_BToS : sme2_dot_array_vg4_index_BtoS<"sdot", 0b1100>; +defm SDOT_VG2_M2ZZ_HtoS : sme2_int_dot_array_vg2_single_HtoS<"sdot", 0b0>; +defm SDOT_VG4_M4ZZ_HtoS : sme2_int_dot_array_vg4_single_HtoS<"sdot", 0b0>; +defm SDOT_VG2_M2Z2Z_HtoS : sme2_int_dot_array_vg2_multi_HtoS<"sdot", 0b0>; +defm SDOT_VG4_M4Z4Z_HtoS : sme2_int_dot_array_vg4_multi_HtoS<"sdot", 0b0>; defm SUDOT_VG2_M2ZZI : sme2_dot_array_vg2_index_BToS<"sudot", 0b1111>; defm SUDOT_VG4_M4ZZI : sme2_dot_array_vg4_index_BtoS<"sudot", 0b1111>; +defm SUDOT_VG2_M2ZZ : sme2_int_dot_array_vg2_single<"sudot", 0b1>; +defm SUDOT_VG4_M4ZZ : sme2_int_dot_array_vg4_single<"sudot", 0b1>; defm SVDOT_VG2_M2ZZI : sme2_dot_array_vg2_index_HToS<"svdot", 0b0100>; defm SVDOT_VG4_M4ZZI_BtoS : sme2_dot_array_vg4_index_BtoS<"svdot", 0b0100>; @@ -460,8 +466,18 @@ defm UDOT_VG2_M2ZZI_BToS : sme2_dot_array_vg2_index_BToS<"udot", 0b1110>; defm UDOT_VG4_M4ZZI_BtoS : sme2_dot_array_vg4_index_BtoS<"udot", 0b1110>; defm UDOT_VG4_M4ZZI_HToS : sme2_dot_array_vg4_index_HtoS<"udot", 0b1010>; +defm UDOT_VG2_M2ZZ_HtoS : sme2_int_dot_array_vg2_single_HtoS<"udot", 0b1>; +defm UDOT_VG4_M4ZZ_HtoS : sme2_int_dot_array_vg4_single_HtoS<"udot", 0b1>; +defm UDOT_VG2_M2Z2Z_HtoS : sme2_int_dot_array_vg2_multi_HtoS<"udot", 0b1>; +defm UDOT_VG4_M4Z4Z_HtoS : sme2_int_dot_array_vg4_multi_HtoS<"udot", 0b1>; + defm USDOT_VG2_M2ZZI : sme2_dot_array_vg2_index_BToS<"usdot", 0b1101>; defm USDOT_VG4_M4ZZI : sme2_dot_array_vg4_index_BtoS<"usdot", 0b1101>; +defm USDOT_VG2_M2ZZ : sme2_int_dot_array_vg2_single<"usdot", 0b0>; +defm USDOT_VG4_M4ZZ : sme2_int_dot_array_vg4_single<"usdot", 0b0>; +defm USDOT_VG2_M2Z2Z : sme2_int_dot_array_vg2_multi<"usdot">; +defm USDOT_VG4_M4Z4Z : sme2_int_dot_array_vg4_multi<"usdot">; + defm USVDOT_VG4_M4ZZI : sme2_dot_array_vg4_index_BtoS<"usvdot", 0b0101>; defm UVDOT_VG2_M2ZZI : sme2_dot_array_vg2_index_HToS<"uvdot", 0b0110>; defm UVDOT_VG4_M4ZZI_BtoS : sme2_dot_array_vg4_index_BtoS<"uvdot", 0b0110>; diff --git a/llvm/lib/Target/AArch64/SMEInstrFormats.td b/llvm/lib/Target/AArch64/SMEInstrFormats.td --- a/llvm/lib/Target/AArch64/SMEInstrFormats.td +++ b/llvm/lib/Target/AArch64/SMEInstrFormats.td @@ -2325,3 +2325,153 @@ def : InstAlias(NAME) MatrixOp32:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3, ZZZZ_h_mul_r:$Zn, ZZZZ_h_mul_r:$Zm), 0>; } + +class sme2_int_dot_array_vg24_single_2way + : I<(outs MatrixOp32:$ZAda), + (ins MatrixOp32:$_ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3, + multi_vector_ty:$Zn, zpr_ty:$Zm), + mnemonic, "\t$ZAda[$Rv, $imm3, " # !if(vg4, "vgx4", "vgx2") # "], $Zn, $Zm", + "", []>, Sched<[]> { + bits<4> Zm; + bits<2> Rv; + bits<5> Zn; + bits<3> imm3; + let Inst{31-23} = 0b110000010; + let Inst{22} = op; + let Inst{21} = 0b1; + let Inst{20} = vg4; + let Inst{19-16} = Zm; + let Inst{15} = 0b0; + let Inst{14-13} = Rv; + let Inst{12-10} = 0b101; + let Inst{9-5} = Zn; + let Inst{4} = u; + let Inst{3} = 0b1; + let Inst{2-0} = imm3; + + let Constraints = "$ZAda = $_ZAda"; +} + +// SME2 single-multi two-way dot product two registers +multiclass sme2_int_dot_array_vg2_single_HtoS { + def NAME: sme2_int_dot_array_vg24_single_2way<0b1, 0b0, u, ZZ_h, ZPR4b16, mnemonic>; + + def : InstAlias(NAME) MatrixOp32:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3, ZZ_h:$Zn, ZPR4b16:$Zm), 0>; +} + +// SME2 single-multi two-way dot product four registers + +multiclass sme2_int_dot_array_vg4_single_HtoS { + def NAME: sme2_int_dot_array_vg24_single_2way<0b1, 0b1, u, ZZZZ_h, ZPR4b16, mnemonic>; + + def : InstAlias(NAME) MatrixOp32:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3, ZZZZ_h:$Zn, ZPR4b16:$Zm), 0>; +} + +multiclass sme2_int_dot_array_vg2_single { + def _BtoS: sme2_int_dot_array_vg24_single_2way<0b0, 0b0, u, ZZ_b, ZPR4b8, mnemonic>; + + def : InstAlias(NAME # _BtoS) MatrixOp32:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3, ZZ_b:$Zn, ZPR4b8:$Zm), 0>; +} + +multiclass sme2_int_dot_array_vg4_single { + def _BtoS: sme2_int_dot_array_vg24_single_2way<0b0, 0b1, u, ZZZZ_b, ZPR4b8, mnemonic>; + + def : InstAlias(NAME # _BtoS) MatrixOp32:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3, ZZZZ_b:$Zn, ZPR4b8:$Zm), 0>; +} + +class sme2_int_dot_array_vg24_multi_2way + : I<(outs MatrixOp32:$ZAda), + (ins MatrixOp32:$_ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3, + multi_vector_ty:$Zn, multi_vector_ty:$Zm), + mnemonic, "\t$ZAda[$Rv, $imm3, " # vg_acronym # "], $Zn, $Zm", + "", []>, Sched<[]> { + bits<2> Rv; + bits<3> imm3; + let Inst{31-23} = 0b110000011; + let Inst{22} = op0; + let Inst{21} = 0b1; + let Inst{15} = 0b0; + let Inst{14-13} = Rv; + let Inst{12-10} = 0b101; + let Inst{5} = 0b0; + let Inst{4} = u; + let Inst{3} = 0b1; + let Inst{2-0} = imm3; + + let Constraints = "$ZAda = $_ZAda"; +} + + +// SME2 multi two-way dot product two registers + +multiclass sme2_int_dot_array_vg2_multi_HtoS { + def NAME : sme2_int_dot_array_vg24_multi_2way<0b1, u, ZZ_h_mul_r, mnemonic, + "vgx2"> { + bits<4> Zm; + bits<4> Zn; + let Inst{20-17} = Zm; + let Inst{16} = 0b0; + let Inst{9-6} = Zn; + } + + def : InstAlias(NAME) MatrixOp32:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3, ZZ_h_mul_r:$Zn, ZZ_h_mul_r:$Zm), 0>; + +} + +multiclass sme2_int_dot_array_vg2_multi { + def _BtoS : sme2_int_dot_array_vg24_multi_2way<0b0, 0b0, ZZ_b_mul_r, mnemonic, + "vgx2"> { + bits<4> Zm; + bits<4> Zn; + let Inst{20-17} = Zm; + let Inst{16} = 0b0; + let Inst{9-6} = Zn; + } + + def : InstAlias(NAME # _BtoS) MatrixOp32:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3, ZZ_b_mul_r:$Zn, ZZ_b_mul_r:$Zm), 0>; + +} + +// SME2 multi two-way dot product four registers + +multiclass sme2_int_dot_array_vg4_multi_HtoS { + def NAME : sme2_int_dot_array_vg24_multi_2way<0b1, u, ZZZZ_h_mul_r, mnemonic, + "vgx4"> { + bits<3> Zm; + bits<3> Zn; + let Inst{20-18} = Zm; + let Inst{17-16} = 0b01; + let Inst{9-7} = Zn; + let Inst{6} = 0b0; + } + + def : InstAlias(NAME) MatrixOp32:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3, ZZZZ_h_mul_r:$Zn, ZZZZ_h_mul_r:$Zm), 0>; +} + +multiclass sme2_int_dot_array_vg4_multi { + def _BtoS : sme2_int_dot_array_vg24_multi_2way<0b0, 0b0, ZZZZ_b_mul_r, mnemonic, + "vgx4"> { + bits<3> Zm; + bits<3> Zn; + let Inst{20-18} = Zm; + let Inst{17-16} = 0b01; + let Inst{9-7} = Zn; + let Inst{6} = 0b0; + } + + def : InstAlias(NAME # _BtoS) MatrixOp32:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3, ZZZZ_b_mul_r:$Zn, ZZZZ_b_mul_r:$Zm), 0>; +} + + diff --git a/llvm/test/MC/AArch64/SME2/sdot.s b/llvm/test/MC/AArch64/SME2/sdot.s --- a/llvm/test/MC/AArch64/SME2/sdot.s +++ b/llvm/test/MC/AArch64/SME2/sdot.s @@ -12,6 +12,151 @@ // RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +sdot za.s[w8, 0, vgx2], {z0.h, z1.h}, z0.h // 11000001-01100000-00010100-00001000 +// CHECK-INST: sdot za.s[w8, 0, vgx2], { z0.h, z1.h }, z0.h +// CHECK-ENCODING: [0x08,0x14,0x60,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1601408 + +sdot za.s[w8, 0], {z0.h, z1.h}, z0.h // 11000001-01100000-00010100-00001000 +// CHECK-INST: sdot za.s[w8, 0, vgx2], { z0.h, z1.h }, z0.h +// CHECK-ENCODING: [0x08,0x14,0x60,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1601408 + +sdot za.s[w10, 5, vgx2], {z10.h, z11.h}, z5.h // 11000001-01100101-01010101-01001101 +// CHECK-INST: sdot za.s[w10, 5, vgx2], { z10.h, z11.h }, z5.h +// CHECK-ENCODING: [0x4d,0x55,0x65,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c165554d + +sdot za.s[w10, 5], {z10.h, z11.h}, z5.h // 11000001-01100101-01010101-01001101 +// CHECK-INST: sdot za.s[w10, 5, vgx2], { z10.h, z11.h }, z5.h +// CHECK-ENCODING: [0x4d,0x55,0x65,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c165554d + +sdot za.s[w11, 7, vgx2], {z13.h, z14.h}, z8.h // 11000001-01101000-01110101-10101111 +// CHECK-INST: sdot za.s[w11, 7, vgx2], { z13.h, z14.h }, z8.h +// CHECK-ENCODING: [0xaf,0x75,0x68,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16875af + +sdot za.s[w11, 7], {z13.h, z14.h}, z8.h // 11000001-01101000-01110101-10101111 +// CHECK-INST: sdot za.s[w11, 7, vgx2], { z13.h, z14.h }, z8.h +// CHECK-ENCODING: [0xaf,0x75,0x68,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16875af + +sdot za.s[w11, 7, vgx2], {z31.h, z0.h}, z15.h // 11000001-01101111-01110111-11101111 +// CHECK-INST: sdot za.s[w11, 7, vgx2], { z31.h, z0.h }, z15.h +// CHECK-ENCODING: [0xef,0x77,0x6f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16f77ef + +sdot za.s[w11, 7], {z31.h, z0.h}, z15.h // 11000001-01101111-01110111-11101111 +// CHECK-INST: sdot za.s[w11, 7, vgx2], { z31.h, z0.h }, z15.h +// CHECK-ENCODING: [0xef,0x77,0x6f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16f77ef + +sdot za.s[w8, 5, vgx2], {z17.h, z18.h}, z0.h // 11000001-01100000-00010110-00101101 +// CHECK-INST: sdot za.s[w8, 5, vgx2], { z17.h, z18.h }, z0.h +// CHECK-ENCODING: [0x2d,0x16,0x60,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c160162d + +sdot za.s[w8, 5], {z17.h, z18.h}, z0.h // 11000001-01100000-00010110-00101101 +// CHECK-INST: sdot za.s[w8, 5, vgx2], { z17.h, z18.h }, z0.h +// CHECK-ENCODING: [0x2d,0x16,0x60,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c160162d + +sdot za.s[w8, 1, vgx2], {z1.h, z2.h}, z14.h // 11000001-01101110-00010100-00101001 +// CHECK-INST: sdot za.s[w8, 1, vgx2], { z1.h, z2.h }, z14.h +// CHECK-ENCODING: [0x29,0x14,0x6e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16e1429 + +sdot za.s[w8, 1], {z1.h, z2.h}, z14.h // 11000001-01101110-00010100-00101001 +// CHECK-INST: sdot za.s[w8, 1, vgx2], { z1.h, z2.h }, z14.h +// CHECK-ENCODING: [0x29,0x14,0x6e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16e1429 + +sdot za.s[w10, 0, vgx2], {z19.h, z20.h}, z4.h // 11000001-01100100-01010110-01101000 +// CHECK-INST: sdot za.s[w10, 0, vgx2], { z19.h, z20.h }, z4.h +// CHECK-ENCODING: [0x68,0x56,0x64,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1645668 + +sdot za.s[w10, 0], {z19.h, z20.h}, z4.h // 11000001-01100100-01010110-01101000 +// CHECK-INST: sdot za.s[w10, 0, vgx2], { z19.h, z20.h }, z4.h +// CHECK-ENCODING: [0x68,0x56,0x64,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1645668 + +sdot za.s[w8, 0, vgx2], {z12.h, z13.h}, z2.h // 11000001-01100010-00010101-10001000 +// CHECK-INST: sdot za.s[w8, 0, vgx2], { z12.h, z13.h }, z2.h +// CHECK-ENCODING: [0x88,0x15,0x62,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1621588 + +sdot za.s[w8, 0], {z12.h, z13.h}, z2.h // 11000001-01100010-00010101-10001000 +// CHECK-INST: sdot za.s[w8, 0, vgx2], { z12.h, z13.h }, z2.h +// CHECK-ENCODING: [0x88,0x15,0x62,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1621588 + +sdot za.s[w10, 1, vgx2], {z1.h, z2.h}, z10.h // 11000001-01101010-01010100-00101001 +// CHECK-INST: sdot za.s[w10, 1, vgx2], { z1.h, z2.h }, z10.h +// CHECK-ENCODING: [0x29,0x54,0x6a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16a5429 + +sdot za.s[w10, 1], {z1.h, z2.h}, z10.h // 11000001-01101010-01010100-00101001 +// CHECK-INST: sdot za.s[w10, 1, vgx2], { z1.h, z2.h }, z10.h +// CHECK-ENCODING: [0x29,0x54,0x6a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16a5429 + +sdot za.s[w8, 5, vgx2], {z22.h, z23.h}, z14.h // 11000001-01101110-00010110-11001101 +// CHECK-INST: sdot za.s[w8, 5, vgx2], { z22.h, z23.h }, z14.h +// CHECK-ENCODING: [0xcd,0x16,0x6e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16e16cd + +sdot za.s[w8, 5], {z22.h, z23.h}, z14.h // 11000001-01101110-00010110-11001101 +// CHECK-INST: sdot za.s[w8, 5, vgx2], { z22.h, z23.h }, z14.h +// CHECK-ENCODING: [0xcd,0x16,0x6e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16e16cd + +sdot za.s[w11, 2, vgx2], {z9.h, z10.h}, z1.h // 11000001-01100001-01110101-00101010 +// CHECK-INST: sdot za.s[w11, 2, vgx2], { z9.h, z10.h }, z1.h +// CHECK-ENCODING: [0x2a,0x75,0x61,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c161752a + +sdot za.s[w11, 2], {z9.h, z10.h}, z1.h // 11000001-01100001-01110101-00101010 +// CHECK-INST: sdot za.s[w11, 2, vgx2], { z9.h, z10.h }, z1.h +// CHECK-ENCODING: [0x2a,0x75,0x61,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c161752a + +sdot za.s[w9, 7, vgx2], {z12.h, z13.h}, z11.h // 11000001-01101011-00110101-10001111 +// CHECK-INST: sdot za.s[w9, 7, vgx2], { z12.h, z13.h }, z11.h +// CHECK-ENCODING: [0x8f,0x35,0x6b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16b358f + +sdot za.s[w9, 7], {z12.h, z13.h}, z11.h // 11000001-01101011-00110101-10001111 +// CHECK-INST: sdot za.s[w9, 7, vgx2], { z12.h, z13.h }, z11.h +// CHECK-ENCODING: [0x8f,0x35,0x6b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16b358f + + sdot za.s[w8, 0, vgx2], {z0.h, z1.h}, z0.h[0] // 11000001-01010000-00010000-00000000 // CHECK-INST: sdot za.s[w8, 0, vgx2], { z0.h, z1.h }, z0.h[0] // CHECK-ENCODING: [0x00,0x10,0x50,0xc1] @@ -157,6 +302,151 @@ // CHECK-UNKNOWN: c15b3987 +sdot za.s[w8, 0, vgx2], {z0.h, z1.h}, {z0.h, z1.h} // 11000001-11100000-00010100-00001000 +// CHECK-INST: sdot za.s[w8, 0, vgx2], { z0.h, z1.h }, { z0.h, z1.h } +// CHECK-ENCODING: [0x08,0x14,0xe0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e01408 + +sdot za.s[w8, 0], {z0.h, z1.h}, {z0.h, z1.h} // 11000001-11100000-00010100-00001000 +// CHECK-INST: sdot za.s[w8, 0, vgx2], { z0.h, z1.h }, { z0.h, z1.h } +// CHECK-ENCODING: [0x08,0x14,0xe0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e01408 + +sdot za.s[w10, 5, vgx2], {z10.h, z11.h}, {z20.h, z21.h} // 11000001-11110100-01010101-01001101 +// CHECK-INST: sdot za.s[w10, 5, vgx2], { z10.h, z11.h }, { z20.h, z21.h } +// CHECK-ENCODING: [0x4d,0x55,0xf4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f4554d + +sdot za.s[w10, 5], {z10.h, z11.h}, {z20.h, z21.h} // 11000001-11110100-01010101-01001101 +// CHECK-INST: sdot za.s[w10, 5, vgx2], { z10.h, z11.h }, { z20.h, z21.h } +// CHECK-ENCODING: [0x4d,0x55,0xf4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f4554d + +sdot za.s[w11, 7, vgx2], {z12.h, z13.h}, {z8.h, z9.h} // 11000001-11101000-01110101-10001111 +// CHECK-INST: sdot za.s[w11, 7, vgx2], { z12.h, z13.h }, { z8.h, z9.h } +// CHECK-ENCODING: [0x8f,0x75,0xe8,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e8758f + +sdot za.s[w11, 7], {z12.h, z13.h}, {z8.h, z9.h} // 11000001-11101000-01110101-10001111 +// CHECK-INST: sdot za.s[w11, 7, vgx2], { z12.h, z13.h }, { z8.h, z9.h } +// CHECK-ENCODING: [0x8f,0x75,0xe8,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e8758f + +sdot za.s[w11, 7, vgx2], {z30.h, z31.h}, {z30.h, z31.h} // 11000001-11111110-01110111-11001111 +// CHECK-INST: sdot za.s[w11, 7, vgx2], { z30.h, z31.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0xcf,0x77,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe77cf + +sdot za.s[w11, 7], {z30.h, z31.h}, {z30.h, z31.h} // 11000001-11111110-01110111-11001111 +// CHECK-INST: sdot za.s[w11, 7, vgx2], { z30.h, z31.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0xcf,0x77,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe77cf + +sdot za.s[w8, 5, vgx2], {z16.h, z17.h}, {z16.h, z17.h} // 11000001-11110000-00010110-00001101 +// CHECK-INST: sdot za.s[w8, 5, vgx2], { z16.h, z17.h }, { z16.h, z17.h } +// CHECK-ENCODING: [0x0d,0x16,0xf0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f0160d + +sdot za.s[w8, 5], {z16.h, z17.h}, {z16.h, z17.h} // 11000001-11110000-00010110-00001101 +// CHECK-INST: sdot za.s[w8, 5, vgx2], { z16.h, z17.h }, { z16.h, z17.h } +// CHECK-ENCODING: [0x0d,0x16,0xf0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f0160d + +sdot za.s[w8, 1, vgx2], {z0.h, z1.h}, {z30.h, z31.h} // 11000001-11111110-00010100-00001001 +// CHECK-INST: sdot za.s[w8, 1, vgx2], { z0.h, z1.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0x09,0x14,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe1409 + +sdot za.s[w8, 1], {z0.h, z1.h}, {z30.h, z31.h} // 11000001-11111110-00010100-00001001 +// CHECK-INST: sdot za.s[w8, 1, vgx2], { z0.h, z1.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0x09,0x14,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe1409 + +sdot za.s[w10, 0, vgx2], {z18.h, z19.h}, {z20.h, z21.h} // 11000001-11110100-01010110-01001000 +// CHECK-INST: sdot za.s[w10, 0, vgx2], { z18.h, z19.h }, { z20.h, z21.h } +// CHECK-ENCODING: [0x48,0x56,0xf4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f45648 + +sdot za.s[w10, 0], {z18.h, z19.h}, {z20.h, z21.h} // 11000001-11110100-01010110-01001000 +// CHECK-INST: sdot za.s[w10, 0, vgx2], { z18.h, z19.h }, { z20.h, z21.h } +// CHECK-ENCODING: [0x48,0x56,0xf4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f45648 + +sdot za.s[w8, 0, vgx2], {z12.h, z13.h}, {z2.h, z3.h} // 11000001-11100010-00010101-10001000 +// CHECK-INST: sdot za.s[w8, 0, vgx2], { z12.h, z13.h }, { z2.h, z3.h } +// CHECK-ENCODING: [0x88,0x15,0xe2,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e21588 + +sdot za.s[w8, 0], {z12.h, z13.h}, {z2.h, z3.h} // 11000001-11100010-00010101-10001000 +// CHECK-INST: sdot za.s[w8, 0, vgx2], { z12.h, z13.h }, { z2.h, z3.h } +// CHECK-ENCODING: [0x88,0x15,0xe2,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e21588 + +sdot za.s[w10, 1, vgx2], {z0.h, z1.h}, {z26.h, z27.h} // 11000001-11111010-01010100-00001001 +// CHECK-INST: sdot za.s[w10, 1, vgx2], { z0.h, z1.h }, { z26.h, z27.h } +// CHECK-ENCODING: [0x09,0x54,0xfa,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fa5409 + +sdot za.s[w10, 1], {z0.h, z1.h}, {z26.h, z27.h} // 11000001-11111010-01010100-00001001 +// CHECK-INST: sdot za.s[w10, 1, vgx2], { z0.h, z1.h }, { z26.h, z27.h } +// CHECK-ENCODING: [0x09,0x54,0xfa,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fa5409 + +sdot za.s[w8, 5, vgx2], {z22.h, z23.h}, {z30.h, z31.h} // 11000001-11111110-00010110-11001101 +// CHECK-INST: sdot za.s[w8, 5, vgx2], { z22.h, z23.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0xcd,0x16,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe16cd + +sdot za.s[w8, 5], {z22.h, z23.h}, {z30.h, z31.h} // 11000001-11111110-00010110-11001101 +// CHECK-INST: sdot za.s[w8, 5, vgx2], { z22.h, z23.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0xcd,0x16,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe16cd + +sdot za.s[w11, 2, vgx2], {z8.h, z9.h}, {z0.h, z1.h} // 11000001-11100000-01110101-00001010 +// CHECK-INST: sdot za.s[w11, 2, vgx2], { z8.h, z9.h }, { z0.h, z1.h } +// CHECK-ENCODING: [0x0a,0x75,0xe0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e0750a + +sdot za.s[w11, 2], {z8.h, z9.h}, {z0.h, z1.h} // 11000001-11100000-01110101-00001010 +// CHECK-INST: sdot za.s[w11, 2, vgx2], { z8.h, z9.h }, { z0.h, z1.h } +// CHECK-ENCODING: [0x0a,0x75,0xe0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e0750a + +sdot za.s[w9, 7, vgx2], {z12.h, z13.h}, {z10.h, z11.h} // 11000001-11101010-00110101-10001111 +// CHECK-INST: sdot za.s[w9, 7, vgx2], { z12.h, z13.h }, { z10.h, z11.h } +// CHECK-ENCODING: [0x8f,0x35,0xea,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1ea358f + +sdot za.s[w9, 7], {z12.h, z13.h}, {z10.h, z11.h} // 11000001-11101010-00110101-10001111 +// CHECK-INST: sdot za.s[w9, 7, vgx2], { z12.h, z13.h }, { z10.h, z11.h } +// CHECK-ENCODING: [0x8f,0x35,0xea,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1ea358f + + 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] @@ -447,6 +737,151 @@ // CHECK-UNKNOWN: c1db218f +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] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1701408 + +sdot za.s[w8, 0], {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] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1701408 + +sdot za.s[w10, 5, vgx4], {z10.h - z13.h}, z5.h // 11000001-01110101-01010101-01001101 +// CHECK-INST: sdot za.s[w10, 5, vgx4], { z10.h - z13.h }, z5.h +// CHECK-ENCODING: [0x4d,0x55,0x75,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c175554d + +sdot za.s[w10, 5], {z10.h - z13.h}, z5.h // 11000001-01110101-01010101-01001101 +// CHECK-INST: sdot za.s[w10, 5, vgx4], { z10.h - z13.h }, z5.h +// CHECK-ENCODING: [0x4d,0x55,0x75,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c175554d + +sdot za.s[w11, 7, vgx4], {z13.h - z16.h}, z8.h // 11000001-01111000-01110101-10101111 +// CHECK-INST: sdot za.s[w11, 7, vgx4], { z13.h - z16.h }, z8.h +// CHECK-ENCODING: [0xaf,0x75,0x78,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17875af + +sdot za.s[w11, 7], {z13.h - z16.h}, z8.h // 11000001-01111000-01110101-10101111 +// CHECK-INST: sdot za.s[w11, 7, vgx4], { z13.h - z16.h }, z8.h +// CHECK-ENCODING: [0xaf,0x75,0x78,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17875af + +sdot za.s[w11, 7, vgx4], {z31.h - z2.h}, z15.h // 11000001-01111111-01110111-11101111 +// CHECK-INST: sdot za.s[w11, 7, vgx4], { z31.h, z0.h, z1.h, z2.h }, z15.h +// CHECK-ENCODING: [0xef,0x77,0x7f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17f77ef + +sdot za.s[w11, 7], {z31.h - z2.h}, z15.h // 11000001-01111111-01110111-11101111 +// CHECK-INST: sdot za.s[w11, 7, vgx4], { z31.h, z0.h, z1.h, z2.h }, z15.h +// CHECK-ENCODING: [0xef,0x77,0x7f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17f77ef + +sdot za.s[w8, 5, vgx4], {z17.h - z20.h}, z0.h // 11000001-01110000-00010110-00101101 +// CHECK-INST: sdot za.s[w8, 5, vgx4], { z17.h - z20.h }, z0.h +// CHECK-ENCODING: [0x2d,0x16,0x70,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c170162d + +sdot za.s[w8, 5], {z17.h - z20.h}, z0.h // 11000001-01110000-00010110-00101101 +// CHECK-INST: sdot za.s[w8, 5, vgx4], { z17.h - z20.h }, z0.h +// CHECK-ENCODING: [0x2d,0x16,0x70,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c170162d + +sdot za.s[w8, 1, vgx4], {z1.h - z4.h}, z14.h // 11000001-01111110-00010100-00101001 +// CHECK-INST: sdot za.s[w8, 1, vgx4], { z1.h - z4.h }, z14.h +// CHECK-ENCODING: [0x29,0x14,0x7e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17e1429 + +sdot za.s[w8, 1], {z1.h - z4.h}, z14.h // 11000001-01111110-00010100-00101001 +// CHECK-INST: sdot za.s[w8, 1, vgx4], { z1.h - z4.h }, z14.h +// CHECK-ENCODING: [0x29,0x14,0x7e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17e1429 + +sdot za.s[w10, 0, vgx4], {z19.h - z22.h}, z4.h // 11000001-01110100-01010110-01101000 +// CHECK-INST: sdot za.s[w10, 0, vgx4], { z19.h - z22.h }, z4.h +// CHECK-ENCODING: [0x68,0x56,0x74,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1745668 + +sdot za.s[w10, 0], {z19.h - z22.h}, z4.h // 11000001-01110100-01010110-01101000 +// CHECK-INST: sdot za.s[w10, 0, vgx4], { z19.h - z22.h }, z4.h +// CHECK-ENCODING: [0x68,0x56,0x74,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1745668 + +sdot za.s[w8, 0, vgx4], {z12.h - z15.h}, z2.h // 11000001-01110010-00010101-10001000 +// CHECK-INST: sdot za.s[w8, 0, vgx4], { z12.h - z15.h }, z2.h +// CHECK-ENCODING: [0x88,0x15,0x72,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1721588 + +sdot za.s[w8, 0], {z12.h - z15.h}, z2.h // 11000001-01110010-00010101-10001000 +// CHECK-INST: sdot za.s[w8, 0, vgx4], { z12.h - z15.h }, z2.h +// CHECK-ENCODING: [0x88,0x15,0x72,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1721588 + +sdot za.s[w10, 1, vgx4], {z1.h - z4.h}, z10.h // 11000001-01111010-01010100-00101001 +// CHECK-INST: sdot za.s[w10, 1, vgx4], { z1.h - z4.h }, z10.h +// CHECK-ENCODING: [0x29,0x54,0x7a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17a5429 + +sdot za.s[w10, 1], {z1.h - z4.h}, z10.h // 11000001-01111010-01010100-00101001 +// CHECK-INST: sdot za.s[w10, 1, vgx4], { z1.h - z4.h }, z10.h +// CHECK-ENCODING: [0x29,0x54,0x7a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17a5429 + +sdot za.s[w8, 5, vgx4], {z22.h - z25.h}, z14.h // 11000001-01111110-00010110-11001101 +// CHECK-INST: sdot za.s[w8, 5, vgx4], { z22.h - z25.h }, z14.h +// CHECK-ENCODING: [0xcd,0x16,0x7e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17e16cd + +sdot za.s[w8, 5], {z22.h - z25.h}, z14.h // 11000001-01111110-00010110-11001101 +// CHECK-INST: sdot za.s[w8, 5, vgx4], { z22.h - z25.h }, z14.h +// CHECK-ENCODING: [0xcd,0x16,0x7e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17e16cd + +sdot za.s[w11, 2, vgx4], {z9.h - z12.h}, z1.h // 11000001-01110001-01110101-00101010 +// CHECK-INST: sdot za.s[w11, 2, vgx4], { z9.h - z12.h }, z1.h +// CHECK-ENCODING: [0x2a,0x75,0x71,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c171752a + +sdot za.s[w11, 2], {z9.h - z12.h}, z1.h // 11000001-01110001-01110101-00101010 +// CHECK-INST: sdot za.s[w11, 2, vgx4], { z9.h - z12.h }, z1.h +// CHECK-ENCODING: [0x2a,0x75,0x71,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c171752a + +sdot za.s[w9, 7, vgx4], {z12.h - z15.h}, z11.h // 11000001-01111011-00110101-10001111 +// CHECK-INST: sdot za.s[w9, 7, vgx4], { z12.h - z15.h }, z11.h +// CHECK-ENCODING: [0x8f,0x35,0x7b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17b358f + +sdot za.s[w9, 7], {z12.h - z15.h}, z11.h // 11000001-01111011-00110101-10001111 +// CHECK-INST: sdot za.s[w9, 7, vgx4], { z12.h - z15.h }, z11.h +// CHECK-ENCODING: [0x8f,0x35,0x7b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17b358f + + sdot za.s[w8, 0, vgx4], {z0.h - z3.h}, z0.h[0] // 11000001-01010000-10010000-00000000 // CHECK-INST: sdot za.s[w8, 0, vgx4], { z0.h - z3.h }, z0.h[0] // CHECK-ENCODING: [0x00,0x90,0x50,0xc1] @@ -592,6 +1027,151 @@ // CHECK-UNKNOWN: c15bb987 +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] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e11408 + +sdot za.s[w8, 0], {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] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e11408 + +sdot za.s[w10, 5, vgx4], {z8.h - z11.h}, {z20.h - z23.h} // 11000001-11110101-01010101-00001101 +// CHECK-INST: sdot za.s[w10, 5, vgx4], { z8.h - z11.h }, { z20.h - z23.h } +// CHECK-ENCODING: [0x0d,0x55,0xf5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f5550d + +sdot za.s[w10, 5], {z8.h - z11.h}, {z20.h - z23.h} // 11000001-11110101-01010101-00001101 +// CHECK-INST: sdot za.s[w10, 5, vgx4], { z8.h - z11.h }, { z20.h - z23.h } +// CHECK-ENCODING: [0x0d,0x55,0xf5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f5550d + +sdot za.s[w11, 7, vgx4], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-01110101-10001111 +// CHECK-INST: sdot za.s[w11, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h } +// CHECK-ENCODING: [0x8f,0x75,0xe9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e9758f + +sdot za.s[w11, 7], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-01110101-10001111 +// CHECK-INST: sdot za.s[w11, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h } +// CHECK-ENCODING: [0x8f,0x75,0xe9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e9758f + +sdot za.s[w11, 7, vgx4], {z28.h - z31.h}, {z28.h - z31.h} // 11000001-11111101-01110111-10001111 +// CHECK-INST: sdot za.s[w11, 7, vgx4], { z28.h - z31.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x8f,0x77,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd778f + +sdot za.s[w11, 7], {z28.h - z31.h}, {z28.h - z31.h} // 11000001-11111101-01110111-10001111 +// CHECK-INST: sdot za.s[w11, 7, vgx4], { z28.h - z31.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x8f,0x77,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd778f + +sdot za.s[w8, 5, vgx4], {z16.h - z19.h}, {z16.h - z19.h} // 11000001-11110001-00010110-00001101 +// CHECK-INST: sdot za.s[w8, 5, vgx4], { z16.h - z19.h }, { z16.h - z19.h } +// CHECK-ENCODING: [0x0d,0x16,0xf1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f1160d + +sdot za.s[w8, 5], {z16.h - z19.h}, {z16.h - z19.h} // 11000001-11110001-00010110-00001101 +// CHECK-INST: sdot za.s[w8, 5, vgx4], { z16.h - z19.h }, { z16.h - z19.h } +// CHECK-ENCODING: [0x0d,0x16,0xf1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f1160d + +sdot za.s[w8, 1, vgx4], {z0.h - z3.h}, {z28.h - z31.h} // 11000001-11111101-00010100-00001001 +// CHECK-INST: sdot za.s[w8, 1, vgx4], { z0.h - z3.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x09,0x14,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd1409 + +sdot za.s[w8, 1], {z0.h - z3.h}, {z28.h - z31.h} // 11000001-11111101-00010100-00001001 +// CHECK-INST: sdot za.s[w8, 1, vgx4], { z0.h - z3.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x09,0x14,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd1409 + +sdot za.s[w10, 0, vgx4], {z16.h - z19.h}, {z20.h - z23.h} // 11000001-11110101-01010110-00001000 +// CHECK-INST: sdot za.s[w10, 0, vgx4], { z16.h - z19.h }, { z20.h - z23.h } +// CHECK-ENCODING: [0x08,0x56,0xf5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f55608 + +sdot za.s[w10, 0], {z16.h - z19.h}, {z20.h - z23.h} // 11000001-11110101-01010110-00001000 +// CHECK-INST: sdot za.s[w10, 0, vgx4], { z16.h - z19.h }, { z20.h - z23.h } +// CHECK-ENCODING: [0x08,0x56,0xf5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f55608 + +sdot za.s[w8, 0, vgx4], {z12.h - z15.h}, {z0.h - z3.h} // 11000001-11100001-00010101-10001000 +// CHECK-INST: sdot za.s[w8, 0, vgx4], { z12.h - z15.h }, { z0.h - z3.h } +// CHECK-ENCODING: [0x88,0x15,0xe1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e11588 + +sdot za.s[w8, 0], {z12.h - z15.h}, {z0.h - z3.h} // 11000001-11100001-00010101-10001000 +// CHECK-INST: sdot za.s[w8, 0, vgx4], { z12.h - z15.h }, { z0.h - z3.h } +// CHECK-ENCODING: [0x88,0x15,0xe1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e11588 + +sdot za.s[w10, 1, vgx4], {z0.h - z3.h}, {z24.h - z27.h} // 11000001-11111001-01010100-00001001 +// CHECK-INST: sdot za.s[w10, 1, vgx4], { z0.h - z3.h }, { z24.h - z27.h } +// CHECK-ENCODING: [0x09,0x54,0xf9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f95409 + +sdot za.s[w10, 1], {z0.h - z3.h}, {z24.h - z27.h} // 11000001-11111001-01010100-00001001 +// CHECK-INST: sdot za.s[w10, 1, vgx4], { z0.h - z3.h }, { z24.h - z27.h } +// CHECK-ENCODING: [0x09,0x54,0xf9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f95409 + +sdot za.s[w8, 5, vgx4], {z20.h - z23.h}, {z28.h - z31.h} // 11000001-11111101-00010110-10001101 +// CHECK-INST: sdot za.s[w8, 5, vgx4], { z20.h - z23.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x8d,0x16,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd168d + +sdot za.s[w8, 5], {z20.h - z23.h}, {z28.h - z31.h} // 11000001-11111101-00010110-10001101 +// CHECK-INST: sdot za.s[w8, 5, vgx4], { z20.h - z23.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x8d,0x16,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd168d + +sdot za.s[w11, 2, vgx4], {z8.h - z11.h}, {z0.h - z3.h} // 11000001-11100001-01110101-00001010 +// CHECK-INST: sdot za.s[w11, 2, vgx4], { z8.h - z11.h }, { z0.h - z3.h } +// CHECK-ENCODING: [0x0a,0x75,0xe1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e1750a + +sdot za.s[w11, 2], {z8.h - z11.h}, {z0.h - z3.h} // 11000001-11100001-01110101-00001010 +// CHECK-INST: sdot za.s[w11, 2, vgx4], { z8.h - z11.h }, { z0.h - z3.h } +// CHECK-ENCODING: [0x0a,0x75,0xe1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e1750a + +sdot za.s[w9, 7, vgx4], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-00110101-10001111 +// CHECK-INST: sdot za.s[w9, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h } +// CHECK-ENCODING: [0x8f,0x35,0xe9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e9358f + +sdot za.s[w9, 7], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-00110101-10001111 +// CHECK-INST: sdot za.s[w9, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h } +// CHECK-ENCODING: [0x8f,0x35,0xe9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e9358f + + 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] @@ -880,3 +1460,5 @@ // CHECK-ENCODING: [0x8f,0xa1,0xdb,0xc1] // CHECK-ERROR: instruction requires: sme2 // CHECK-UNKNOWN: c1dba18f + + diff --git a/llvm/test/MC/AArch64/SME2/sudot.s b/llvm/test/MC/AArch64/SME2/sudot.s --- a/llvm/test/MC/AArch64/SME2/sudot.s +++ b/llvm/test/MC/AArch64/SME2/sudot.s @@ -12,6 +12,151 @@ // RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +sudot za.s[w8, 0, vgx2], {z0.b, z1.b}, z0.b // 11000001-00100000-00010100-00011000 +// CHECK-INST: sudot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b +// CHECK-ENCODING: [0x18,0x14,0x20,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1201418 + +sudot za.s[w8, 0], {z0.b, z1.b}, z0.b // 11000001-00100000-00010100-00011000 +// CHECK-INST: sudot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b +// CHECK-ENCODING: [0x18,0x14,0x20,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1201418 + +sudot za.s[w10, 5, vgx2], {z10.b, z11.b}, z5.b // 11000001-00100101-01010101-01011101 +// CHECK-INST: sudot za.s[w10, 5, vgx2], { z10.b, z11.b }, z5.b +// CHECK-ENCODING: [0x5d,0x55,0x25,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c125555d + +sudot za.s[w10, 5], {z10.b, z11.b}, z5.b // 11000001-00100101-01010101-01011101 +// CHECK-INST: sudot za.s[w10, 5, vgx2], { z10.b, z11.b }, z5.b +// CHECK-ENCODING: [0x5d,0x55,0x25,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c125555d + +sudot za.s[w11, 7, vgx2], {z13.b, z14.b}, z8.b // 11000001-00101000-01110101-10111111 +// CHECK-INST: sudot za.s[w11, 7, vgx2], { z13.b, z14.b }, z8.b +// CHECK-ENCODING: [0xbf,0x75,0x28,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12875bf + +sudot za.s[w11, 7], {z13.b, z14.b}, z8.b // 11000001-00101000-01110101-10111111 +// CHECK-INST: sudot za.s[w11, 7, vgx2], { z13.b, z14.b }, z8.b +// CHECK-ENCODING: [0xbf,0x75,0x28,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12875bf + +sudot za.s[w11, 7, vgx2], {z31.b, z0.b}, z15.b // 11000001-00101111-01110111-11111111 +// CHECK-INST: sudot za.s[w11, 7, vgx2], { z31.b, z0.b }, z15.b +// CHECK-ENCODING: [0xff,0x77,0x2f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12f77ff + +sudot za.s[w11, 7], {z31.b, z0.b}, z15.b // 11000001-00101111-01110111-11111111 +// CHECK-INST: sudot za.s[w11, 7, vgx2], { z31.b, z0.b }, z15.b +// CHECK-ENCODING: [0xff,0x77,0x2f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12f77ff + +sudot za.s[w8, 5, vgx2], {z17.b, z18.b}, z0.b // 11000001-00100000-00010110-00111101 +// CHECK-INST: sudot za.s[w8, 5, vgx2], { z17.b, z18.b }, z0.b +// CHECK-ENCODING: [0x3d,0x16,0x20,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c120163d + +sudot za.s[w8, 5], {z17.b, z18.b}, z0.b // 11000001-00100000-00010110-00111101 +// CHECK-INST: sudot za.s[w8, 5, vgx2], { z17.b, z18.b }, z0.b +// CHECK-ENCODING: [0x3d,0x16,0x20,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c120163d + +sudot za.s[w8, 1, vgx2], {z1.b, z2.b}, z14.b // 11000001-00101110-00010100-00111001 +// CHECK-INST: sudot za.s[w8, 1, vgx2], { z1.b, z2.b }, z14.b +// CHECK-ENCODING: [0x39,0x14,0x2e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12e1439 + +sudot za.s[w8, 1], {z1.b, z2.b}, z14.b // 11000001-00101110-00010100-00111001 +// CHECK-INST: sudot za.s[w8, 1, vgx2], { z1.b, z2.b }, z14.b +// CHECK-ENCODING: [0x39,0x14,0x2e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12e1439 + +sudot za.s[w10, 0, vgx2], {z19.b, z20.b}, z4.b // 11000001-00100100-01010110-01111000 +// CHECK-INST: sudot za.s[w10, 0, vgx2], { z19.b, z20.b }, z4.b +// CHECK-ENCODING: [0x78,0x56,0x24,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1245678 + +sudot za.s[w10, 0], {z19.b, z20.b}, z4.b // 11000001-00100100-01010110-01111000 +// CHECK-INST: sudot za.s[w10, 0, vgx2], { z19.b, z20.b }, z4.b +// CHECK-ENCODING: [0x78,0x56,0x24,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1245678 + +sudot za.s[w8, 0, vgx2], {z12.b, z13.b}, z2.b // 11000001-00100010-00010101-10011000 +// CHECK-INST: sudot za.s[w8, 0, vgx2], { z12.b, z13.b }, z2.b +// CHECK-ENCODING: [0x98,0x15,0x22,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1221598 + +sudot za.s[w8, 0], {z12.b, z13.b}, z2.b // 11000001-00100010-00010101-10011000 +// CHECK-INST: sudot za.s[w8, 0, vgx2], { z12.b, z13.b }, z2.b +// CHECK-ENCODING: [0x98,0x15,0x22,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1221598 + +sudot za.s[w10, 1, vgx2], {z1.b, z2.b}, z10.b // 11000001-00101010-01010100-00111001 +// CHECK-INST: sudot za.s[w10, 1, vgx2], { z1.b, z2.b }, z10.b +// CHECK-ENCODING: [0x39,0x54,0x2a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12a5439 + +sudot za.s[w10, 1], {z1.b, z2.b}, z10.b // 11000001-00101010-01010100-00111001 +// CHECK-INST: sudot za.s[w10, 1, vgx2], { z1.b, z2.b }, z10.b +// CHECK-ENCODING: [0x39,0x54,0x2a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12a5439 + +sudot za.s[w8, 5, vgx2], {z22.b, z23.b}, z14.b // 11000001-00101110-00010110-11011101 +// CHECK-INST: sudot za.s[w8, 5, vgx2], { z22.b, z23.b }, z14.b +// CHECK-ENCODING: [0xdd,0x16,0x2e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12e16dd + +sudot za.s[w8, 5], {z22.b, z23.b}, z14.b // 11000001-00101110-00010110-11011101 +// CHECK-INST: sudot za.s[w8, 5, vgx2], { z22.b, z23.b }, z14.b +// CHECK-ENCODING: [0xdd,0x16,0x2e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12e16dd + +sudot za.s[w11, 2, vgx2], {z9.b, z10.b}, z1.b // 11000001-00100001-01110101-00111010 +// CHECK-INST: sudot za.s[w11, 2, vgx2], { z9.b, z10.b }, z1.b +// CHECK-ENCODING: [0x3a,0x75,0x21,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c121753a + +sudot za.s[w11, 2], {z9.b, z10.b}, z1.b // 11000001-00100001-01110101-00111010 +// CHECK-INST: sudot za.s[w11, 2, vgx2], { z9.b, z10.b }, z1.b +// CHECK-ENCODING: [0x3a,0x75,0x21,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c121753a + +sudot za.s[w9, 7, vgx2], {z12.b, z13.b}, z11.b // 11000001-00101011-00110101-10011111 +// CHECK-INST: sudot za.s[w9, 7, vgx2], { z12.b, z13.b }, z11.b +// CHECK-ENCODING: [0x9f,0x35,0x2b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12b359f + +sudot za.s[w9, 7], {z12.b, z13.b}, z11.b // 11000001-00101011-00110101-10011111 +// CHECK-INST: sudot za.s[w9, 7, vgx2], { z12.b, z13.b }, z11.b +// CHECK-ENCODING: [0x9f,0x35,0x2b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12b359f + + sudot za.s[w8, 0, vgx2], {z0.b, z1.b}, z0.b[0] // 11000001-01010000-00010000-00111000 // CHECK-INST: sudot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b[0] // CHECK-ENCODING: [0x38,0x10,0x50,0xc1] @@ -157,6 +302,151 @@ // CHECK-UNKNOWN: c15b39bf +sudot za.s[w8, 0, vgx4], {z0.b - z3.b}, z0.b // 11000001-00110000-00010100-00011000 +// CHECK-INST: sudot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b +// CHECK-ENCODING: [0x18,0x14,0x30,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1301418 + +sudot za.s[w8, 0], {z0.b - z3.b}, z0.b // 11000001-00110000-00010100-00011000 +// CHECK-INST: sudot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b +// CHECK-ENCODING: [0x18,0x14,0x30,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1301418 + +sudot za.s[w10, 5, vgx4], {z10.b - z13.b}, z5.b // 11000001-00110101-01010101-01011101 +// CHECK-INST: sudot za.s[w10, 5, vgx4], { z10.b - z13.b }, z5.b +// CHECK-ENCODING: [0x5d,0x55,0x35,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c135555d + +sudot za.s[w10, 5], {z10.b - z13.b}, z5.b // 11000001-00110101-01010101-01011101 +// CHECK-INST: sudot za.s[w10, 5, vgx4], { z10.b - z13.b }, z5.b +// CHECK-ENCODING: [0x5d,0x55,0x35,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c135555d + +sudot za.s[w11, 7, vgx4], {z13.b - z16.b}, z8.b // 11000001-00111000-01110101-10111111 +// CHECK-INST: sudot za.s[w11, 7, vgx4], { z13.b - z16.b }, z8.b +// CHECK-ENCODING: [0xbf,0x75,0x38,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13875bf + +sudot za.s[w11, 7], {z13.b - z16.b}, z8.b // 11000001-00111000-01110101-10111111 +// CHECK-INST: sudot za.s[w11, 7, vgx4], { z13.b - z16.b }, z8.b +// CHECK-ENCODING: [0xbf,0x75,0x38,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13875bf + +sudot za.s[w11, 7, vgx4], {z31.b - z2.b}, z15.b // 11000001-00111111-01110111-11111111 +// CHECK-INST: sudot za.s[w11, 7, vgx4], { z31.b, z0.b, z1.b, z2.b }, z15.b +// CHECK-ENCODING: [0xff,0x77,0x3f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13f77ff + +sudot za.s[w11, 7], {z31.b - z2.b}, z15.b // 11000001-00111111-01110111-11111111 +// CHECK-INST: sudot za.s[w11, 7, vgx4], { z31.b, z0.b, z1.b, z2.b }, z15.b +// CHECK-ENCODING: [0xff,0x77,0x3f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13f77ff + +sudot za.s[w8, 5, vgx4], {z17.b - z20.b}, z0.b // 11000001-00110000-00010110-00111101 +// CHECK-INST: sudot za.s[w8, 5, vgx4], { z17.b - z20.b }, z0.b +// CHECK-ENCODING: [0x3d,0x16,0x30,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c130163d + +sudot za.s[w8, 5], {z17.b - z20.b}, z0.b // 11000001-00110000-00010110-00111101 +// CHECK-INST: sudot za.s[w8, 5, vgx4], { z17.b - z20.b }, z0.b +// CHECK-ENCODING: [0x3d,0x16,0x30,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c130163d + +sudot za.s[w8, 1, vgx4], {z1.b - z4.b}, z14.b // 11000001-00111110-00010100-00111001 +// CHECK-INST: sudot za.s[w8, 1, vgx4], { z1.b - z4.b }, z14.b +// CHECK-ENCODING: [0x39,0x14,0x3e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13e1439 + +sudot za.s[w8, 1], {z1.b - z4.b}, z14.b // 11000001-00111110-00010100-00111001 +// CHECK-INST: sudot za.s[w8, 1, vgx4], { z1.b - z4.b }, z14.b +// CHECK-ENCODING: [0x39,0x14,0x3e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13e1439 + +sudot za.s[w10, 0, vgx4], {z19.b - z22.b}, z4.b // 11000001-00110100-01010110-01111000 +// CHECK-INST: sudot za.s[w10, 0, vgx4], { z19.b - z22.b }, z4.b +// CHECK-ENCODING: [0x78,0x56,0x34,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1345678 + +sudot za.s[w10, 0], {z19.b - z22.b}, z4.b // 11000001-00110100-01010110-01111000 +// CHECK-INST: sudot za.s[w10, 0, vgx4], { z19.b - z22.b }, z4.b +// CHECK-ENCODING: [0x78,0x56,0x34,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1345678 + +sudot za.s[w8, 0, vgx4], {z12.b - z15.b}, z2.b // 11000001-00110010-00010101-10011000 +// CHECK-INST: sudot za.s[w8, 0, vgx4], { z12.b - z15.b }, z2.b +// CHECK-ENCODING: [0x98,0x15,0x32,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1321598 + +sudot za.s[w8, 0], {z12.b - z15.b}, z2.b // 11000001-00110010-00010101-10011000 +// CHECK-INST: sudot za.s[w8, 0, vgx4], { z12.b - z15.b }, z2.b +// CHECK-ENCODING: [0x98,0x15,0x32,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1321598 + +sudot za.s[w10, 1, vgx4], {z1.b - z4.b}, z10.b // 11000001-00111010-01010100-00111001 +// CHECK-INST: sudot za.s[w10, 1, vgx4], { z1.b - z4.b }, z10.b +// CHECK-ENCODING: [0x39,0x54,0x3a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13a5439 + +sudot za.s[w10, 1], {z1.b - z4.b}, z10.b // 11000001-00111010-01010100-00111001 +// CHECK-INST: sudot za.s[w10, 1, vgx4], { z1.b - z4.b }, z10.b +// CHECK-ENCODING: [0x39,0x54,0x3a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13a5439 + +sudot za.s[w8, 5, vgx4], {z22.b - z25.b}, z14.b // 11000001-00111110-00010110-11011101 +// CHECK-INST: sudot za.s[w8, 5, vgx4], { z22.b - z25.b }, z14.b +// CHECK-ENCODING: [0xdd,0x16,0x3e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13e16dd + +sudot za.s[w8, 5], {z22.b - z25.b}, z14.b // 11000001-00111110-00010110-11011101 +// CHECK-INST: sudot za.s[w8, 5, vgx4], { z22.b - z25.b }, z14.b +// CHECK-ENCODING: [0xdd,0x16,0x3e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13e16dd + +sudot za.s[w11, 2, vgx4], {z9.b - z12.b}, z1.b // 11000001-00110001-01110101-00111010 +// CHECK-INST: sudot za.s[w11, 2, vgx4], { z9.b - z12.b }, z1.b +// CHECK-ENCODING: [0x3a,0x75,0x31,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c131753a + +sudot za.s[w11, 2], {z9.b - z12.b}, z1.b // 11000001-00110001-01110101-00111010 +// CHECK-INST: sudot za.s[w11, 2, vgx4], { z9.b - z12.b }, z1.b +// CHECK-ENCODING: [0x3a,0x75,0x31,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c131753a + +sudot za.s[w9, 7, vgx4], {z12.b - z15.b}, z11.b // 11000001-00111011-00110101-10011111 +// CHECK-INST: sudot za.s[w9, 7, vgx4], { z12.b - z15.b }, z11.b +// CHECK-ENCODING: [0x9f,0x35,0x3b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13b359f + +sudot za.s[w9, 7], {z12.b - z15.b}, z11.b // 11000001-00111011-00110101-10011111 +// CHECK-INST: sudot za.s[w9, 7, vgx4], { z12.b - z15.b }, z11.b +// CHECK-ENCODING: [0x9f,0x35,0x3b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13b359f + + sudot za.s[w8, 0, vgx4], {z0.b - z3.b}, z0.b[0] // 11000001-01010000-10010000-00111000 // CHECK-INST: sudot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b[0] // CHECK-ENCODING: [0x38,0x90,0x50,0xc1] diff --git a/llvm/test/MC/AArch64/SME2/udot.s b/llvm/test/MC/AArch64/SME2/udot.s --- a/llvm/test/MC/AArch64/SME2/udot.s +++ b/llvm/test/MC/AArch64/SME2/udot.s @@ -12,6 +12,151 @@ // RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +udot za.s[w8, 0, vgx2], {z0.h, z1.h}, z0.h // 11000001-01100000-00010100-00011000 +// CHECK-INST: udot za.s[w8, 0, vgx2], { z0.h, z1.h }, z0.h +// CHECK-ENCODING: [0x18,0x14,0x60,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1601418 + +udot za.s[w8, 0], {z0.h, z1.h}, z0.h // 11000001-01100000-00010100-00011000 +// CHECK-INST: udot za.s[w8, 0, vgx2], { z0.h, z1.h }, z0.h +// CHECK-ENCODING: [0x18,0x14,0x60,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1601418 + +udot za.s[w10, 5, vgx2], {z10.h, z11.h}, z5.h // 11000001-01100101-01010101-01011101 +// CHECK-INST: udot za.s[w10, 5, vgx2], { z10.h, z11.h }, z5.h +// CHECK-ENCODING: [0x5d,0x55,0x65,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c165555d + +udot za.s[w10, 5], {z10.h, z11.h}, z5.h // 11000001-01100101-01010101-01011101 +// CHECK-INST: udot za.s[w10, 5, vgx2], { z10.h, z11.h }, z5.h +// CHECK-ENCODING: [0x5d,0x55,0x65,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c165555d + +udot za.s[w11, 7, vgx2], {z13.h, z14.h}, z8.h // 11000001-01101000-01110101-10111111 +// CHECK-INST: udot za.s[w11, 7, vgx2], { z13.h, z14.h }, z8.h +// CHECK-ENCODING: [0xbf,0x75,0x68,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16875bf + +udot za.s[w11, 7], {z13.h, z14.h}, z8.h // 11000001-01101000-01110101-10111111 +// CHECK-INST: udot za.s[w11, 7, vgx2], { z13.h, z14.h }, z8.h +// CHECK-ENCODING: [0xbf,0x75,0x68,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16875bf + +udot za.s[w11, 7, vgx2], {z31.h, z0.h}, z15.h // 11000001-01101111-01110111-11111111 +// CHECK-INST: udot za.s[w11, 7, vgx2], { z31.h, z0.h }, z15.h +// CHECK-ENCODING: [0xff,0x77,0x6f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16f77ff + +udot za.s[w11, 7], {z31.h, z0.h}, z15.h // 11000001-01101111-01110111-11111111 +// CHECK-INST: udot za.s[w11, 7, vgx2], { z31.h, z0.h }, z15.h +// CHECK-ENCODING: [0xff,0x77,0x6f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16f77ff + +udot za.s[w8, 5, vgx2], {z17.h, z18.h}, z0.h // 11000001-01100000-00010110-00111101 +// CHECK-INST: udot za.s[w8, 5, vgx2], { z17.h, z18.h }, z0.h +// CHECK-ENCODING: [0x3d,0x16,0x60,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c160163d + +udot za.s[w8, 5], {z17.h, z18.h}, z0.h // 11000001-01100000-00010110-00111101 +// CHECK-INST: udot za.s[w8, 5, vgx2], { z17.h, z18.h }, z0.h +// CHECK-ENCODING: [0x3d,0x16,0x60,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c160163d + +udot za.s[w8, 1, vgx2], {z1.h, z2.h}, z14.h // 11000001-01101110-00010100-00111001 +// CHECK-INST: udot za.s[w8, 1, vgx2], { z1.h, z2.h }, z14.h +// CHECK-ENCODING: [0x39,0x14,0x6e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16e1439 + +udot za.s[w8, 1], {z1.h, z2.h}, z14.h // 11000001-01101110-00010100-00111001 +// CHECK-INST: udot za.s[w8, 1, vgx2], { z1.h, z2.h }, z14.h +// CHECK-ENCODING: [0x39,0x14,0x6e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16e1439 + +udot za.s[w10, 0, vgx2], {z19.h, z20.h}, z4.h // 11000001-01100100-01010110-01111000 +// CHECK-INST: udot za.s[w10, 0, vgx2], { z19.h, z20.h }, z4.h +// CHECK-ENCODING: [0x78,0x56,0x64,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1645678 + +udot za.s[w10, 0], {z19.h, z20.h}, z4.h // 11000001-01100100-01010110-01111000 +// CHECK-INST: udot za.s[w10, 0, vgx2], { z19.h, z20.h }, z4.h +// CHECK-ENCODING: [0x78,0x56,0x64,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1645678 + +udot za.s[w8, 0, vgx2], {z12.h, z13.h}, z2.h // 11000001-01100010-00010101-10011000 +// CHECK-INST: udot za.s[w8, 0, vgx2], { z12.h, z13.h }, z2.h +// CHECK-ENCODING: [0x98,0x15,0x62,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1621598 + +udot za.s[w8, 0], {z12.h, z13.h}, z2.h // 11000001-01100010-00010101-10011000 +// CHECK-INST: udot za.s[w8, 0, vgx2], { z12.h, z13.h }, z2.h +// CHECK-ENCODING: [0x98,0x15,0x62,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1621598 + +udot za.s[w10, 1, vgx2], {z1.h, z2.h}, z10.h // 11000001-01101010-01010100-00111001 +// CHECK-INST: udot za.s[w10, 1, vgx2], { z1.h, z2.h }, z10.h +// CHECK-ENCODING: [0x39,0x54,0x6a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16a5439 + +udot za.s[w10, 1], {z1.h, z2.h}, z10.h // 11000001-01101010-01010100-00111001 +// CHECK-INST: udot za.s[w10, 1, vgx2], { z1.h, z2.h }, z10.h +// CHECK-ENCODING: [0x39,0x54,0x6a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16a5439 + +udot za.s[w8, 5, vgx2], {z22.h, z23.h}, z14.h // 11000001-01101110-00010110-11011101 +// CHECK-INST: udot za.s[w8, 5, vgx2], { z22.h, z23.h }, z14.h +// CHECK-ENCODING: [0xdd,0x16,0x6e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16e16dd + +udot za.s[w8, 5], {z22.h, z23.h}, z14.h // 11000001-01101110-00010110-11011101 +// CHECK-INST: udot za.s[w8, 5, vgx2], { z22.h, z23.h }, z14.h +// CHECK-ENCODING: [0xdd,0x16,0x6e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16e16dd + +udot za.s[w11, 2, vgx2], {z9.h, z10.h}, z1.h // 11000001-01100001-01110101-00111010 +// CHECK-INST: udot za.s[w11, 2, vgx2], { z9.h, z10.h }, z1.h +// CHECK-ENCODING: [0x3a,0x75,0x61,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c161753a + +udot za.s[w11, 2], {z9.h, z10.h}, z1.h // 11000001-01100001-01110101-00111010 +// CHECK-INST: udot za.s[w11, 2, vgx2], { z9.h, z10.h }, z1.h +// CHECK-ENCODING: [0x3a,0x75,0x61,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c161753a + +udot za.s[w9, 7, vgx2], {z12.h, z13.h}, z11.h // 11000001-01101011-00110101-10011111 +// CHECK-INST: udot za.s[w9, 7, vgx2], { z12.h, z13.h }, z11.h +// CHECK-ENCODING: [0x9f,0x35,0x6b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16b359f + +udot za.s[w9, 7], {z12.h, z13.h}, z11.h // 11000001-01101011-00110101-10011111 +// CHECK-INST: udot za.s[w9, 7, vgx2], { z12.h, z13.h }, z11.h +// CHECK-ENCODING: [0x9f,0x35,0x6b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c16b359f + + udot za.s[w8, 0, vgx2], {z0.h, z1.h}, z0.h[0] // 11000001-01010000-00010000-00010000 // CHECK-INST: udot za.s[w8, 0, vgx2], { z0.h, z1.h }, z0.h[0] // CHECK-ENCODING: [0x10,0x10,0x50,0xc1] @@ -157,6 +302,151 @@ // CHECK-UNKNOWN: c15b3997 +udot za.s[w8, 0, vgx2], {z0.h, z1.h}, {z0.h, z1.h} // 11000001-11100000-00010100-00011000 +// CHECK-INST: udot za.s[w8, 0, vgx2], { z0.h, z1.h }, { z0.h, z1.h } +// CHECK-ENCODING: [0x18,0x14,0xe0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e01418 + +udot za.s[w8, 0], {z0.h, z1.h}, {z0.h, z1.h} // 11000001-11100000-00010100-00011000 +// CHECK-INST: udot za.s[w8, 0, vgx2], { z0.h, z1.h }, { z0.h, z1.h } +// CHECK-ENCODING: [0x18,0x14,0xe0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e01418 + +udot za.s[w10, 5, vgx2], {z10.h, z11.h}, {z20.h, z21.h} // 11000001-11110100-01010101-01011101 +// CHECK-INST: udot za.s[w10, 5, vgx2], { z10.h, z11.h }, { z20.h, z21.h } +// CHECK-ENCODING: [0x5d,0x55,0xf4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f4555d + +udot za.s[w10, 5], {z10.h, z11.h}, {z20.h, z21.h} // 11000001-11110100-01010101-01011101 +// CHECK-INST: udot za.s[w10, 5, vgx2], { z10.h, z11.h }, { z20.h, z21.h } +// CHECK-ENCODING: [0x5d,0x55,0xf4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f4555d + +udot za.s[w11, 7, vgx2], {z12.h, z13.h}, {z8.h, z9.h} // 11000001-11101000-01110101-10011111 +// CHECK-INST: udot za.s[w11, 7, vgx2], { z12.h, z13.h }, { z8.h, z9.h } +// CHECK-ENCODING: [0x9f,0x75,0xe8,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e8759f + +udot za.s[w11, 7], {z12.h, z13.h}, {z8.h, z9.h} // 11000001-11101000-01110101-10011111 +// CHECK-INST: udot za.s[w11, 7, vgx2], { z12.h, z13.h }, { z8.h, z9.h } +// CHECK-ENCODING: [0x9f,0x75,0xe8,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e8759f + +udot za.s[w11, 7, vgx2], {z30.h, z31.h}, {z30.h, z31.h} // 11000001-11111110-01110111-11011111 +// CHECK-INST: udot za.s[w11, 7, vgx2], { z30.h, z31.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0xdf,0x77,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe77df + +udot za.s[w11, 7], {z30.h, z31.h}, {z30.h, z31.h} // 11000001-11111110-01110111-11011111 +// CHECK-INST: udot za.s[w11, 7, vgx2], { z30.h, z31.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0xdf,0x77,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe77df + +udot za.s[w8, 5, vgx2], {z16.h, z17.h}, {z16.h, z17.h} // 11000001-11110000-00010110-00011101 +// CHECK-INST: udot za.s[w8, 5, vgx2], { z16.h, z17.h }, { z16.h, z17.h } +// CHECK-ENCODING: [0x1d,0x16,0xf0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f0161d + +udot za.s[w8, 5], {z16.h, z17.h}, {z16.h, z17.h} // 11000001-11110000-00010110-00011101 +// CHECK-INST: udot za.s[w8, 5, vgx2], { z16.h, z17.h }, { z16.h, z17.h } +// CHECK-ENCODING: [0x1d,0x16,0xf0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f0161d + +udot za.s[w8, 1, vgx2], {z0.h, z1.h}, {z30.h, z31.h} // 11000001-11111110-00010100-00011001 +// CHECK-INST: udot za.s[w8, 1, vgx2], { z0.h, z1.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0x19,0x14,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe1419 + +udot za.s[w8, 1], {z0.h, z1.h}, {z30.h, z31.h} // 11000001-11111110-00010100-00011001 +// CHECK-INST: udot za.s[w8, 1, vgx2], { z0.h, z1.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0x19,0x14,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe1419 + +udot za.s[w10, 0, vgx2], {z18.h, z19.h}, {z20.h, z21.h} // 11000001-11110100-01010110-01011000 +// CHECK-INST: udot za.s[w10, 0, vgx2], { z18.h, z19.h }, { z20.h, z21.h } +// CHECK-ENCODING: [0x58,0x56,0xf4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f45658 + +udot za.s[w10, 0], {z18.h, z19.h}, {z20.h, z21.h} // 11000001-11110100-01010110-01011000 +// CHECK-INST: udot za.s[w10, 0, vgx2], { z18.h, z19.h }, { z20.h, z21.h } +// CHECK-ENCODING: [0x58,0x56,0xf4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f45658 + +udot za.s[w8, 0, vgx2], {z12.h, z13.h}, {z2.h, z3.h} // 11000001-11100010-00010101-10011000 +// CHECK-INST: udot za.s[w8, 0, vgx2], { z12.h, z13.h }, { z2.h, z3.h } +// CHECK-ENCODING: [0x98,0x15,0xe2,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e21598 + +udot za.s[w8, 0], {z12.h, z13.h}, {z2.h, z3.h} // 11000001-11100010-00010101-10011000 +// CHECK-INST: udot za.s[w8, 0, vgx2], { z12.h, z13.h }, { z2.h, z3.h } +// CHECK-ENCODING: [0x98,0x15,0xe2,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e21598 + +udot za.s[w10, 1, vgx2], {z0.h, z1.h}, {z26.h, z27.h} // 11000001-11111010-01010100-00011001 +// CHECK-INST: udot za.s[w10, 1, vgx2], { z0.h, z1.h }, { z26.h, z27.h } +// CHECK-ENCODING: [0x19,0x54,0xfa,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fa5419 + +udot za.s[w10, 1], {z0.h, z1.h}, {z26.h, z27.h} // 11000001-11111010-01010100-00011001 +// CHECK-INST: udot za.s[w10, 1, vgx2], { z0.h, z1.h }, { z26.h, z27.h } +// CHECK-ENCODING: [0x19,0x54,0xfa,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fa5419 + +udot za.s[w8, 5, vgx2], {z22.h, z23.h}, {z30.h, z31.h} // 11000001-11111110-00010110-11011101 +// CHECK-INST: udot za.s[w8, 5, vgx2], { z22.h, z23.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0xdd,0x16,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe16dd + +udot za.s[w8, 5], {z22.h, z23.h}, {z30.h, z31.h} // 11000001-11111110-00010110-11011101 +// CHECK-INST: udot za.s[w8, 5, vgx2], { z22.h, z23.h }, { z30.h, z31.h } +// CHECK-ENCODING: [0xdd,0x16,0xfe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fe16dd + +udot za.s[w11, 2, vgx2], {z8.h, z9.h}, {z0.h, z1.h} // 11000001-11100000-01110101-00011010 +// CHECK-INST: udot za.s[w11, 2, vgx2], { z8.h, z9.h }, { z0.h, z1.h } +// CHECK-ENCODING: [0x1a,0x75,0xe0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e0751a + +udot za.s[w11, 2], {z8.h, z9.h}, {z0.h, z1.h} // 11000001-11100000-01110101-00011010 +// CHECK-INST: udot za.s[w11, 2, vgx2], { z8.h, z9.h }, { z0.h, z1.h } +// CHECK-ENCODING: [0x1a,0x75,0xe0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e0751a + +udot za.s[w9, 7, vgx2], {z12.h, z13.h}, {z10.h, z11.h} // 11000001-11101010-00110101-10011111 +// CHECK-INST: udot za.s[w9, 7, vgx2], { z12.h, z13.h }, { z10.h, z11.h } +// CHECK-ENCODING: [0x9f,0x35,0xea,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1ea359f + +udot za.s[w9, 7], {z12.h, z13.h}, {z10.h, z11.h} // 11000001-11101010-00110101-10011111 +// CHECK-INST: udot za.s[w9, 7, vgx2], { z12.h, z13.h }, { z10.h, z11.h } +// CHECK-ENCODING: [0x9f,0x35,0xea,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1ea359f + + udot za.s[w8, 0, vgx2], {z0.b, z1.b}, z0.b[0] // 11000001-01010000-00010000-00110000 // CHECK-INST: udot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b[0] // CHECK-ENCODING: [0x30,0x10,0x50,0xc1] @@ -447,6 +737,151 @@ // CHECK-UNKNOWN: c1db219f +udot za.s[w8, 0, vgx4], {z0.h - z3.h}, z0.h // 11000001-01110000-00010100-00011000 +// CHECK-INST: udot za.s[w8, 0, vgx4], { z0.h - z3.h }, z0.h +// CHECK-ENCODING: [0x18,0x14,0x70,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1701418 + +udot za.s[w8, 0], {z0.h - z3.h}, z0.h // 11000001-01110000-00010100-00011000 +// CHECK-INST: udot za.s[w8, 0, vgx4], { z0.h - z3.h }, z0.h +// CHECK-ENCODING: [0x18,0x14,0x70,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1701418 + +udot za.s[w10, 5, vgx4], {z10.h - z13.h}, z5.h // 11000001-01110101-01010101-01011101 +// CHECK-INST: udot za.s[w10, 5, vgx4], { z10.h - z13.h }, z5.h +// CHECK-ENCODING: [0x5d,0x55,0x75,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c175555d + +udot za.s[w10, 5], {z10.h - z13.h}, z5.h // 11000001-01110101-01010101-01011101 +// CHECK-INST: udot za.s[w10, 5, vgx4], { z10.h - z13.h }, z5.h +// CHECK-ENCODING: [0x5d,0x55,0x75,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c175555d + +udot za.s[w11, 7, vgx4], {z13.h - z16.h}, z8.h // 11000001-01111000-01110101-10111111 +// CHECK-INST: udot za.s[w11, 7, vgx4], { z13.h - z16.h }, z8.h +// CHECK-ENCODING: [0xbf,0x75,0x78,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17875bf + +udot za.s[w11, 7], {z13.h - z16.h}, z8.h // 11000001-01111000-01110101-10111111 +// CHECK-INST: udot za.s[w11, 7, vgx4], { z13.h - z16.h }, z8.h +// CHECK-ENCODING: [0xbf,0x75,0x78,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17875bf + +udot za.s[w11, 7, vgx4], {z31.h - z2.h}, z15.h // 11000001-01111111-01110111-11111111 +// CHECK-INST: udot za.s[w11, 7, vgx4], { z31.h, z0.h, z1.h, z2.h }, z15.h +// CHECK-ENCODING: [0xff,0x77,0x7f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17f77ff + +udot za.s[w11, 7], {z31.h - z2.h}, z15.h // 11000001-01111111-01110111-11111111 +// CHECK-INST: udot za.s[w11, 7, vgx4], { z31.h, z0.h, z1.h, z2.h }, z15.h +// CHECK-ENCODING: [0xff,0x77,0x7f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17f77ff + +udot za.s[w8, 5, vgx4], {z17.h - z20.h}, z0.h // 11000001-01110000-00010110-00111101 +// CHECK-INST: udot za.s[w8, 5, vgx4], { z17.h - z20.h }, z0.h +// CHECK-ENCODING: [0x3d,0x16,0x70,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c170163d + +udot za.s[w8, 5], {z17.h - z20.h}, z0.h // 11000001-01110000-00010110-00111101 +// CHECK-INST: udot za.s[w8, 5, vgx4], { z17.h - z20.h }, z0.h +// CHECK-ENCODING: [0x3d,0x16,0x70,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c170163d + +udot za.s[w8, 1, vgx4], {z1.h - z4.h}, z14.h // 11000001-01111110-00010100-00111001 +// CHECK-INST: udot za.s[w8, 1, vgx4], { z1.h - z4.h }, z14.h +// CHECK-ENCODING: [0x39,0x14,0x7e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17e1439 + +udot za.s[w8, 1], {z1.h - z4.h}, z14.h // 11000001-01111110-00010100-00111001 +// CHECK-INST: udot za.s[w8, 1, vgx4], { z1.h - z4.h }, z14.h +// CHECK-ENCODING: [0x39,0x14,0x7e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17e1439 + +udot za.s[w10, 0, vgx4], {z19.h - z22.h}, z4.h // 11000001-01110100-01010110-01111000 +// CHECK-INST: udot za.s[w10, 0, vgx4], { z19.h - z22.h }, z4.h +// CHECK-ENCODING: [0x78,0x56,0x74,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1745678 + +udot za.s[w10, 0], {z19.h - z22.h}, z4.h // 11000001-01110100-01010110-01111000 +// CHECK-INST: udot za.s[w10, 0, vgx4], { z19.h - z22.h }, z4.h +// CHECK-ENCODING: [0x78,0x56,0x74,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1745678 + +udot za.s[w8, 0, vgx4], {z12.h - z15.h}, z2.h // 11000001-01110010-00010101-10011000 +// CHECK-INST: udot za.s[w8, 0, vgx4], { z12.h - z15.h }, z2.h +// CHECK-ENCODING: [0x98,0x15,0x72,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1721598 + +udot za.s[w8, 0], {z12.h - z15.h}, z2.h // 11000001-01110010-00010101-10011000 +// CHECK-INST: udot za.s[w8, 0, vgx4], { z12.h - z15.h }, z2.h +// CHECK-ENCODING: [0x98,0x15,0x72,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1721598 + +udot za.s[w10, 1, vgx4], {z1.h - z4.h}, z10.h // 11000001-01111010-01010100-00111001 +// CHECK-INST: udot za.s[w10, 1, vgx4], { z1.h - z4.h }, z10.h +// CHECK-ENCODING: [0x39,0x54,0x7a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17a5439 + +udot za.s[w10, 1], {z1.h - z4.h}, z10.h // 11000001-01111010-01010100-00111001 +// CHECK-INST: udot za.s[w10, 1, vgx4], { z1.h - z4.h }, z10.h +// CHECK-ENCODING: [0x39,0x54,0x7a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17a5439 + +udot za.s[w8, 5, vgx4], {z22.h - z25.h}, z14.h // 11000001-01111110-00010110-11011101 +// CHECK-INST: udot za.s[w8, 5, vgx4], { z22.h - z25.h }, z14.h +// CHECK-ENCODING: [0xdd,0x16,0x7e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17e16dd + +udot za.s[w8, 5], {z22.h - z25.h}, z14.h // 11000001-01111110-00010110-11011101 +// CHECK-INST: udot za.s[w8, 5, vgx4], { z22.h - z25.h }, z14.h +// CHECK-ENCODING: [0xdd,0x16,0x7e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17e16dd + +udot za.s[w11, 2, vgx4], {z9.h - z12.h}, z1.h // 11000001-01110001-01110101-00111010 +// CHECK-INST: udot za.s[w11, 2, vgx4], { z9.h - z12.h }, z1.h +// CHECK-ENCODING: [0x3a,0x75,0x71,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c171753a + +udot za.s[w11, 2], {z9.h - z12.h}, z1.h // 11000001-01110001-01110101-00111010 +// CHECK-INST: udot za.s[w11, 2, vgx4], { z9.h - z12.h }, z1.h +// CHECK-ENCODING: [0x3a,0x75,0x71,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c171753a + +udot za.s[w9, 7, vgx4], {z12.h - z15.h}, z11.h // 11000001-01111011-00110101-10011111 +// CHECK-INST: udot za.s[w9, 7, vgx4], { z12.h - z15.h }, z11.h +// CHECK-ENCODING: [0x9f,0x35,0x7b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17b359f + +udot za.s[w9, 7], {z12.h - z15.h}, z11.h // 11000001-01111011-00110101-10011111 +// CHECK-INST: udot za.s[w9, 7, vgx4], { z12.h - z15.h }, z11.h +// CHECK-ENCODING: [0x9f,0x35,0x7b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c17b359f + + udot za.s[w8, 0, vgx4], {z0.h - z3.h}, z0.h[0] // 11000001-01010000-10010000-00010000 // CHECK-INST: udot za.s[w8, 0, vgx4], { z0.h - z3.h }, z0.h[0] // CHECK-ENCODING: [0x10,0x90,0x50,0xc1] @@ -592,6 +1027,151 @@ // CHECK-UNKNOWN: c15bb997 +udot za.s[w8, 0, vgx4], {z0.h - z3.h}, {z0.h - z3.h} // 11000001-11100001-00010100-00011000 +// CHECK-INST: udot za.s[w8, 0, vgx4], { z0.h - z3.h }, { z0.h - z3.h } +// CHECK-ENCODING: [0x18,0x14,0xe1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e11418 + +udot za.s[w8, 0], {z0.h - z3.h}, {z0.h - z3.h} // 11000001-11100001-00010100-00011000 +// CHECK-INST: udot za.s[w8, 0, vgx4], { z0.h - z3.h }, { z0.h - z3.h } +// CHECK-ENCODING: [0x18,0x14,0xe1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e11418 + +udot za.s[w10, 5, vgx4], {z8.h - z11.h}, {z20.h - z23.h} // 11000001-11110101-01010101-00011101 +// CHECK-INST: udot za.s[w10, 5, vgx4], { z8.h - z11.h }, { z20.h - z23.h } +// CHECK-ENCODING: [0x1d,0x55,0xf5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f5551d + +udot za.s[w10, 5], {z8.h - z11.h}, {z20.h - z23.h} // 11000001-11110101-01010101-00011101 +// CHECK-INST: udot za.s[w10, 5, vgx4], { z8.h - z11.h }, { z20.h - z23.h } +// CHECK-ENCODING: [0x1d,0x55,0xf5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f5551d + +udot za.s[w11, 7, vgx4], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-01110101-10011111 +// CHECK-INST: udot za.s[w11, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h } +// CHECK-ENCODING: [0x9f,0x75,0xe9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e9759f + +udot za.s[w11, 7], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-01110101-10011111 +// CHECK-INST: udot za.s[w11, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h } +// CHECK-ENCODING: [0x9f,0x75,0xe9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e9759f + +udot za.s[w11, 7, vgx4], {z28.h - z31.h}, {z28.h - z31.h} // 11000001-11111101-01110111-10011111 +// CHECK-INST: udot za.s[w11, 7, vgx4], { z28.h - z31.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x9f,0x77,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd779f + +udot za.s[w11, 7], {z28.h - z31.h}, {z28.h - z31.h} // 11000001-11111101-01110111-10011111 +// CHECK-INST: udot za.s[w11, 7, vgx4], { z28.h - z31.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x9f,0x77,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd779f + +udot za.s[w8, 5, vgx4], {z16.h - z19.h}, {z16.h - z19.h} // 11000001-11110001-00010110-00011101 +// CHECK-INST: udot za.s[w8, 5, vgx4], { z16.h - z19.h }, { z16.h - z19.h } +// CHECK-ENCODING: [0x1d,0x16,0xf1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f1161d + +udot za.s[w8, 5], {z16.h - z19.h}, {z16.h - z19.h} // 11000001-11110001-00010110-00011101 +// CHECK-INST: udot za.s[w8, 5, vgx4], { z16.h - z19.h }, { z16.h - z19.h } +// CHECK-ENCODING: [0x1d,0x16,0xf1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f1161d + +udot za.s[w8, 1, vgx4], {z0.h - z3.h}, {z28.h - z31.h} // 11000001-11111101-00010100-00011001 +// CHECK-INST: udot za.s[w8, 1, vgx4], { z0.h - z3.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x19,0x14,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd1419 + +udot za.s[w8, 1], {z0.h - z3.h}, {z28.h - z31.h} // 11000001-11111101-00010100-00011001 +// CHECK-INST: udot za.s[w8, 1, vgx4], { z0.h - z3.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x19,0x14,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd1419 + +udot za.s[w10, 0, vgx4], {z16.h - z19.h}, {z20.h - z23.h} // 11000001-11110101-01010110-00011000 +// CHECK-INST: udot za.s[w10, 0, vgx4], { z16.h - z19.h }, { z20.h - z23.h } +// CHECK-ENCODING: [0x18,0x56,0xf5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f55618 + +udot za.s[w10, 0], {z16.h - z19.h}, {z20.h - z23.h} // 11000001-11110101-01010110-00011000 +// CHECK-INST: udot za.s[w10, 0, vgx4], { z16.h - z19.h }, { z20.h - z23.h } +// CHECK-ENCODING: [0x18,0x56,0xf5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f55618 + +udot za.s[w8, 0, vgx4], {z12.h - z15.h}, {z0.h - z3.h} // 11000001-11100001-00010101-10011000 +// CHECK-INST: udot za.s[w8, 0, vgx4], { z12.h - z15.h }, { z0.h - z3.h } +// CHECK-ENCODING: [0x98,0x15,0xe1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e11598 + +udot za.s[w8, 0], {z12.h - z15.h}, {z0.h - z3.h} // 11000001-11100001-00010101-10011000 +// CHECK-INST: udot za.s[w8, 0, vgx4], { z12.h - z15.h }, { z0.h - z3.h } +// CHECK-ENCODING: [0x98,0x15,0xe1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e11598 + +udot za.s[w10, 1, vgx4], {z0.h - z3.h}, {z24.h - z27.h} // 11000001-11111001-01010100-00011001 +// CHECK-INST: udot za.s[w10, 1, vgx4], { z0.h - z3.h }, { z24.h - z27.h } +// CHECK-ENCODING: [0x19,0x54,0xf9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f95419 + +udot za.s[w10, 1], {z0.h - z3.h}, {z24.h - z27.h} // 11000001-11111001-01010100-00011001 +// CHECK-INST: udot za.s[w10, 1, vgx4], { z0.h - z3.h }, { z24.h - z27.h } +// CHECK-ENCODING: [0x19,0x54,0xf9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1f95419 + +udot za.s[w8, 5, vgx4], {z20.h - z23.h}, {z28.h - z31.h} // 11000001-11111101-00010110-10011101 +// CHECK-INST: udot za.s[w8, 5, vgx4], { z20.h - z23.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x9d,0x16,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd169d + +udot za.s[w8, 5], {z20.h - z23.h}, {z28.h - z31.h} // 11000001-11111101-00010110-10011101 +// CHECK-INST: udot za.s[w8, 5, vgx4], { z20.h - z23.h }, { z28.h - z31.h } +// CHECK-ENCODING: [0x9d,0x16,0xfd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1fd169d + +udot za.s[w11, 2, vgx4], {z8.h - z11.h}, {z0.h - z3.h} // 11000001-11100001-01110101-00011010 +// CHECK-INST: udot za.s[w11, 2, vgx4], { z8.h - z11.h }, { z0.h - z3.h } +// CHECK-ENCODING: [0x1a,0x75,0xe1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e1751a + +udot za.s[w11, 2], {z8.h - z11.h}, {z0.h - z3.h} // 11000001-11100001-01110101-00011010 +// CHECK-INST: udot za.s[w11, 2, vgx4], { z8.h - z11.h }, { z0.h - z3.h } +// CHECK-ENCODING: [0x1a,0x75,0xe1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e1751a + +udot za.s[w9, 7, vgx4], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-00110101-10011111 +// CHECK-INST: udot za.s[w9, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h } +// CHECK-ENCODING: [0x9f,0x35,0xe9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e9359f + +udot za.s[w9, 7], {z12.h - z15.h}, {z8.h - z11.h} // 11000001-11101001-00110101-10011111 +// CHECK-INST: udot za.s[w9, 7, vgx4], { z12.h - z15.h }, { z8.h - z11.h } +// CHECK-ENCODING: [0x9f,0x35,0xe9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1e9359f + + udot za.s[w8, 0, vgx4], {z0.b - z3.b}, z0.b[0] // 11000001-01010000-10010000-00110000 // CHECK-INST: udot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b[0] // CHECK-ENCODING: [0x30,0x90,0x50,0xc1] diff --git a/llvm/test/MC/AArch64/SME2/usdot.s b/llvm/test/MC/AArch64/SME2/usdot.s --- a/llvm/test/MC/AArch64/SME2/usdot.s +++ b/llvm/test/MC/AArch64/SME2/usdot.s @@ -12,6 +12,151 @@ // RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +usdot za.s[w8, 0, vgx2], {z0.b, z1.b}, z0.b // 11000001-00100000-00010100-00001000 +// CHECK-INST: usdot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b +// CHECK-ENCODING: [0x08,0x14,0x20,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1201408 + +usdot za.s[w8, 0], {z0.b, z1.b}, z0.b // 11000001-00100000-00010100-00001000 +// CHECK-INST: usdot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b +// CHECK-ENCODING: [0x08,0x14,0x20,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1201408 + +usdot za.s[w10, 5, vgx2], {z10.b, z11.b}, z5.b // 11000001-00100101-01010101-01001101 +// CHECK-INST: usdot za.s[w10, 5, vgx2], { z10.b, z11.b }, z5.b +// CHECK-ENCODING: [0x4d,0x55,0x25,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c125554d + +usdot za.s[w10, 5], {z10.b, z11.b}, z5.b // 11000001-00100101-01010101-01001101 +// CHECK-INST: usdot za.s[w10, 5, vgx2], { z10.b, z11.b }, z5.b +// CHECK-ENCODING: [0x4d,0x55,0x25,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c125554d + +usdot za.s[w11, 7, vgx2], {z13.b, z14.b}, z8.b // 11000001-00101000-01110101-10101111 +// CHECK-INST: usdot za.s[w11, 7, vgx2], { z13.b, z14.b }, z8.b +// CHECK-ENCODING: [0xaf,0x75,0x28,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12875af + +usdot za.s[w11, 7], {z13.b, z14.b}, z8.b // 11000001-00101000-01110101-10101111 +// CHECK-INST: usdot za.s[w11, 7, vgx2], { z13.b, z14.b }, z8.b +// CHECK-ENCODING: [0xaf,0x75,0x28,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12875af + +usdot za.s[w11, 7, vgx2], {z31.b, z0.b}, z15.b // 11000001-00101111-01110111-11101111 +// CHECK-INST: usdot za.s[w11, 7, vgx2], { z31.b, z0.b }, z15.b +// CHECK-ENCODING: [0xef,0x77,0x2f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12f77ef + +usdot za.s[w11, 7], {z31.b, z0.b}, z15.b // 11000001-00101111-01110111-11101111 +// CHECK-INST: usdot za.s[w11, 7, vgx2], { z31.b, z0.b }, z15.b +// CHECK-ENCODING: [0xef,0x77,0x2f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12f77ef + +usdot za.s[w8, 5, vgx2], {z17.b, z18.b}, z0.b // 11000001-00100000-00010110-00101101 +// CHECK-INST: usdot za.s[w8, 5, vgx2], { z17.b, z18.b }, z0.b +// CHECK-ENCODING: [0x2d,0x16,0x20,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c120162d + +usdot za.s[w8, 5], {z17.b, z18.b}, z0.b // 11000001-00100000-00010110-00101101 +// CHECK-INST: usdot za.s[w8, 5, vgx2], { z17.b, z18.b }, z0.b +// CHECK-ENCODING: [0x2d,0x16,0x20,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c120162d + +usdot za.s[w8, 1, vgx2], {z1.b, z2.b}, z14.b // 11000001-00101110-00010100-00101001 +// CHECK-INST: usdot za.s[w8, 1, vgx2], { z1.b, z2.b }, z14.b +// CHECK-ENCODING: [0x29,0x14,0x2e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12e1429 + +usdot za.s[w8, 1], {z1.b, z2.b}, z14.b // 11000001-00101110-00010100-00101001 +// CHECK-INST: usdot za.s[w8, 1, vgx2], { z1.b, z2.b }, z14.b +// CHECK-ENCODING: [0x29,0x14,0x2e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12e1429 + +usdot za.s[w10, 0, vgx2], {z19.b, z20.b}, z4.b // 11000001-00100100-01010110-01101000 +// CHECK-INST: usdot za.s[w10, 0, vgx2], { z19.b, z20.b }, z4.b +// CHECK-ENCODING: [0x68,0x56,0x24,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1245668 + +usdot za.s[w10, 0], {z19.b, z20.b}, z4.b // 11000001-00100100-01010110-01101000 +// CHECK-INST: usdot za.s[w10, 0, vgx2], { z19.b, z20.b }, z4.b +// CHECK-ENCODING: [0x68,0x56,0x24,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1245668 + +usdot za.s[w8, 0, vgx2], {z12.b, z13.b}, z2.b // 11000001-00100010-00010101-10001000 +// CHECK-INST: usdot za.s[w8, 0, vgx2], { z12.b, z13.b }, z2.b +// CHECK-ENCODING: [0x88,0x15,0x22,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1221588 + +usdot za.s[w8, 0], {z12.b, z13.b}, z2.b // 11000001-00100010-00010101-10001000 +// CHECK-INST: usdot za.s[w8, 0, vgx2], { z12.b, z13.b }, z2.b +// CHECK-ENCODING: [0x88,0x15,0x22,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1221588 + +usdot za.s[w10, 1, vgx2], {z1.b, z2.b}, z10.b // 11000001-00101010-01010100-00101001 +// CHECK-INST: usdot za.s[w10, 1, vgx2], { z1.b, z2.b }, z10.b +// CHECK-ENCODING: [0x29,0x54,0x2a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12a5429 + +usdot za.s[w10, 1], {z1.b, z2.b}, z10.b // 11000001-00101010-01010100-00101001 +// CHECK-INST: usdot za.s[w10, 1, vgx2], { z1.b, z2.b }, z10.b +// CHECK-ENCODING: [0x29,0x54,0x2a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12a5429 + +usdot za.s[w8, 5, vgx2], {z22.b, z23.b}, z14.b // 11000001-00101110-00010110-11001101 +// CHECK-INST: usdot za.s[w8, 5, vgx2], { z22.b, z23.b }, z14.b +// CHECK-ENCODING: [0xcd,0x16,0x2e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12e16cd + +usdot za.s[w8, 5], {z22.b, z23.b}, z14.b // 11000001-00101110-00010110-11001101 +// CHECK-INST: usdot za.s[w8, 5, vgx2], { z22.b, z23.b }, z14.b +// CHECK-ENCODING: [0xcd,0x16,0x2e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12e16cd + +usdot za.s[w11, 2, vgx2], {z9.b, z10.b}, z1.b // 11000001-00100001-01110101-00101010 +// CHECK-INST: usdot za.s[w11, 2, vgx2], { z9.b, z10.b }, z1.b +// CHECK-ENCODING: [0x2a,0x75,0x21,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c121752a + +usdot za.s[w11, 2], {z9.b, z10.b}, z1.b // 11000001-00100001-01110101-00101010 +// CHECK-INST: usdot za.s[w11, 2, vgx2], { z9.b, z10.b }, z1.b +// CHECK-ENCODING: [0x2a,0x75,0x21,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c121752a + +usdot za.s[w9, 7, vgx2], {z12.b, z13.b}, z11.b // 11000001-00101011-00110101-10001111 +// CHECK-INST: usdot za.s[w9, 7, vgx2], { z12.b, z13.b }, z11.b +// CHECK-ENCODING: [0x8f,0x35,0x2b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12b358f + +usdot za.s[w9, 7], {z12.b, z13.b}, z11.b // 11000001-00101011-00110101-10001111 +// CHECK-INST: usdot za.s[w9, 7, vgx2], { z12.b, z13.b }, z11.b +// CHECK-ENCODING: [0x8f,0x35,0x2b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c12b358f + + usdot za.s[w8, 0, vgx2], {z0.b, z1.b}, z0.b[0] // 11000001-01010000-00010000-00101000 // CHECK-INST: usdot za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b[0] // CHECK-ENCODING: [0x28,0x10,0x50,0xc1] @@ -157,6 +302,296 @@ // CHECK-UNKNOWN: c15b39af +usdot za.s[w8, 0, vgx2], {z0.b, z1.b}, {z0.b, z1.b} // 11000001-10100000-00010100-00001000 +// CHECK-INST: usdot za.s[w8, 0, vgx2], { z0.b, z1.b }, { z0.b, z1.b } +// CHECK-ENCODING: [0x08,0x14,0xa0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a01408 + +usdot za.s[w8, 0], {z0.b, z1.b}, {z0.b, z1.b} // 11000001-10100000-00010100-00001000 +// CHECK-INST: usdot za.s[w8, 0, vgx2], { z0.b, z1.b }, { z0.b, z1.b } +// CHECK-ENCODING: [0x08,0x14,0xa0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a01408 + +usdot za.s[w10, 5, vgx2], {z10.b, z11.b}, {z20.b, z21.b} // 11000001-10110100-01010101-01001101 +// CHECK-INST: usdot za.s[w10, 5, vgx2], { z10.b, z11.b }, { z20.b, z21.b } +// CHECK-ENCODING: [0x4d,0x55,0xb4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b4554d + +usdot za.s[w10, 5], {z10.b, z11.b}, {z20.b, z21.b} // 11000001-10110100-01010101-01001101 +// CHECK-INST: usdot za.s[w10, 5, vgx2], { z10.b, z11.b }, { z20.b, z21.b } +// CHECK-ENCODING: [0x4d,0x55,0xb4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b4554d + +usdot za.s[w11, 7, vgx2], {z12.b, z13.b}, {z8.b, z9.b} // 11000001-10101000-01110101-10001111 +// CHECK-INST: usdot za.s[w11, 7, vgx2], { z12.b, z13.b }, { z8.b, z9.b } +// CHECK-ENCODING: [0x8f,0x75,0xa8,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a8758f + +usdot za.s[w11, 7], {z12.b, z13.b}, {z8.b, z9.b} // 11000001-10101000-01110101-10001111 +// CHECK-INST: usdot za.s[w11, 7, vgx2], { z12.b, z13.b }, { z8.b, z9.b } +// CHECK-ENCODING: [0x8f,0x75,0xa8,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a8758f + +usdot za.s[w11, 7, vgx2], {z30.b, z31.b}, {z30.b, z31.b} // 11000001-10111110-01110111-11001111 +// CHECK-INST: usdot za.s[w11, 7, vgx2], { z30.b, z31.b }, { z30.b, z31.b } +// CHECK-ENCODING: [0xcf,0x77,0xbe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1be77cf + +usdot za.s[w11, 7], {z30.b, z31.b}, {z30.b, z31.b} // 11000001-10111110-01110111-11001111 +// CHECK-INST: usdot za.s[w11, 7, vgx2], { z30.b, z31.b }, { z30.b, z31.b } +// CHECK-ENCODING: [0xcf,0x77,0xbe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1be77cf + +usdot za.s[w8, 5, vgx2], {z16.b, z17.b}, {z16.b, z17.b} // 11000001-10110000-00010110-00001101 +// CHECK-INST: usdot za.s[w8, 5, vgx2], { z16.b, z17.b }, { z16.b, z17.b } +// CHECK-ENCODING: [0x0d,0x16,0xb0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b0160d + +usdot za.s[w8, 5], {z16.b, z17.b}, {z16.b, z17.b} // 11000001-10110000-00010110-00001101 +// CHECK-INST: usdot za.s[w8, 5, vgx2], { z16.b, z17.b }, { z16.b, z17.b } +// CHECK-ENCODING: [0x0d,0x16,0xb0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b0160d + +usdot za.s[w8, 1, vgx2], {z0.b, z1.b}, {z30.b, z31.b} // 11000001-10111110-00010100-00001001 +// CHECK-INST: usdot za.s[w8, 1, vgx2], { z0.b, z1.b }, { z30.b, z31.b } +// CHECK-ENCODING: [0x09,0x14,0xbe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1be1409 + +usdot za.s[w8, 1], {z0.b, z1.b}, {z30.b, z31.b} // 11000001-10111110-00010100-00001001 +// CHECK-INST: usdot za.s[w8, 1, vgx2], { z0.b, z1.b }, { z30.b, z31.b } +// CHECK-ENCODING: [0x09,0x14,0xbe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1be1409 + +usdot za.s[w10, 0, vgx2], {z18.b, z19.b}, {z20.b, z21.b} // 11000001-10110100-01010110-01001000 +// CHECK-INST: usdot za.s[w10, 0, vgx2], { z18.b, z19.b }, { z20.b, z21.b } +// CHECK-ENCODING: [0x48,0x56,0xb4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b45648 + +usdot za.s[w10, 0], {z18.b, z19.b}, {z20.b, z21.b} // 11000001-10110100-01010110-01001000 +// CHECK-INST: usdot za.s[w10, 0, vgx2], { z18.b, z19.b }, { z20.b, z21.b } +// CHECK-ENCODING: [0x48,0x56,0xb4,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b45648 + +usdot za.s[w8, 0, vgx2], {z12.b, z13.b}, {z2.b, z3.b} // 11000001-10100010-00010101-10001000 +// CHECK-INST: usdot za.s[w8, 0, vgx2], { z12.b, z13.b }, { z2.b, z3.b } +// CHECK-ENCODING: [0x88,0x15,0xa2,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a21588 + +usdot za.s[w8, 0], {z12.b, z13.b}, {z2.b, z3.b} // 11000001-10100010-00010101-10001000 +// CHECK-INST: usdot za.s[w8, 0, vgx2], { z12.b, z13.b }, { z2.b, z3.b } +// CHECK-ENCODING: [0x88,0x15,0xa2,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a21588 + +usdot za.s[w10, 1, vgx2], {z0.b, z1.b}, {z26.b, z27.b} // 11000001-10111010-01010100-00001001 +// CHECK-INST: usdot za.s[w10, 1, vgx2], { z0.b, z1.b }, { z26.b, z27.b } +// CHECK-ENCODING: [0x09,0x54,0xba,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1ba5409 + +usdot za.s[w10, 1], {z0.b, z1.b}, {z26.b, z27.b} // 11000001-10111010-01010100-00001001 +// CHECK-INST: usdot za.s[w10, 1, vgx2], { z0.b, z1.b }, { z26.b, z27.b } +// CHECK-ENCODING: [0x09,0x54,0xba,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1ba5409 + +usdot za.s[w8, 5, vgx2], {z22.b, z23.b}, {z30.b, z31.b} // 11000001-10111110-00010110-11001101 +// CHECK-INST: usdot za.s[w8, 5, vgx2], { z22.b, z23.b }, { z30.b, z31.b } +// CHECK-ENCODING: [0xcd,0x16,0xbe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1be16cd + +usdot za.s[w8, 5], {z22.b, z23.b}, {z30.b, z31.b} // 11000001-10111110-00010110-11001101 +// CHECK-INST: usdot za.s[w8, 5, vgx2], { z22.b, z23.b }, { z30.b, z31.b } +// CHECK-ENCODING: [0xcd,0x16,0xbe,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1be16cd + +usdot za.s[w11, 2, vgx2], {z8.b, z9.b}, {z0.b, z1.b} // 11000001-10100000-01110101-00001010 +// CHECK-INST: usdot za.s[w11, 2, vgx2], { z8.b, z9.b }, { z0.b, z1.b } +// CHECK-ENCODING: [0x0a,0x75,0xa0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a0750a + +usdot za.s[w11, 2], {z8.b, z9.b}, {z0.b, z1.b} // 11000001-10100000-01110101-00001010 +// CHECK-INST: usdot za.s[w11, 2, vgx2], { z8.b, z9.b }, { z0.b, z1.b } +// CHECK-ENCODING: [0x0a,0x75,0xa0,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a0750a + +usdot za.s[w9, 7, vgx2], {z12.b, z13.b}, {z10.b, z11.b} // 11000001-10101010-00110101-10001111 +// CHECK-INST: usdot za.s[w9, 7, vgx2], { z12.b, z13.b }, { z10.b, z11.b } +// CHECK-ENCODING: [0x8f,0x35,0xaa,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1aa358f + +usdot za.s[w9, 7], {z12.b, z13.b}, {z10.b, z11.b} // 11000001-10101010-00110101-10001111 +// CHECK-INST: usdot za.s[w9, 7, vgx2], { z12.b, z13.b }, { z10.b, z11.b } +// CHECK-ENCODING: [0x8f,0x35,0xaa,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1aa358f + + +usdot za.s[w8, 0, vgx4], {z0.b - z3.b}, z0.b // 11000001-00110000-00010100-00001000 +// CHECK-INST: usdot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b +// CHECK-ENCODING: [0x08,0x14,0x30,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1301408 + +usdot za.s[w8, 0], {z0.b - z3.b}, z0.b // 11000001-00110000-00010100-00001000 +// CHECK-INST: usdot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b +// CHECK-ENCODING: [0x08,0x14,0x30,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1301408 + +usdot za.s[w10, 5, vgx4], {z10.b - z13.b}, z5.b // 11000001-00110101-01010101-01001101 +// CHECK-INST: usdot za.s[w10, 5, vgx4], { z10.b - z13.b }, z5.b +// CHECK-ENCODING: [0x4d,0x55,0x35,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c135554d + +usdot za.s[w10, 5], {z10.b - z13.b}, z5.b // 11000001-00110101-01010101-01001101 +// CHECK-INST: usdot za.s[w10, 5, vgx4], { z10.b - z13.b }, z5.b +// CHECK-ENCODING: [0x4d,0x55,0x35,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c135554d + +usdot za.s[w11, 7, vgx4], {z13.b - z16.b}, z8.b // 11000001-00111000-01110101-10101111 +// CHECK-INST: usdot za.s[w11, 7, vgx4], { z13.b - z16.b }, z8.b +// CHECK-ENCODING: [0xaf,0x75,0x38,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13875af + +usdot za.s[w11, 7], {z13.b - z16.b}, z8.b // 11000001-00111000-01110101-10101111 +// CHECK-INST: usdot za.s[w11, 7, vgx4], { z13.b - z16.b }, z8.b +// CHECK-ENCODING: [0xaf,0x75,0x38,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13875af + +usdot za.s[w11, 7, vgx4], {z31.b - z2.b}, z15.b // 11000001-00111111-01110111-11101111 +// CHECK-INST: usdot za.s[w11, 7, vgx4], { z31.b, z0.b, z1.b, z2.b }, z15.b +// CHECK-ENCODING: [0xef,0x77,0x3f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13f77ef + +usdot za.s[w11, 7], {z31.b - z2.b}, z15.b // 11000001-00111111-01110111-11101111 +// CHECK-INST: usdot za.s[w11, 7, vgx4], { z31.b, z0.b, z1.b, z2.b }, z15.b +// CHECK-ENCODING: [0xef,0x77,0x3f,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13f77ef + +usdot za.s[w8, 5, vgx4], {z17.b - z20.b}, z0.b // 11000001-00110000-00010110-00101101 +// CHECK-INST: usdot za.s[w8, 5, vgx4], { z17.b - z20.b }, z0.b +// CHECK-ENCODING: [0x2d,0x16,0x30,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c130162d + +usdot za.s[w8, 5], {z17.b - z20.b}, z0.b // 11000001-00110000-00010110-00101101 +// CHECK-INST: usdot za.s[w8, 5, vgx4], { z17.b - z20.b }, z0.b +// CHECK-ENCODING: [0x2d,0x16,0x30,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c130162d + +usdot za.s[w8, 1, vgx4], {z1.b - z4.b}, z14.b // 11000001-00111110-00010100-00101001 +// CHECK-INST: usdot za.s[w8, 1, vgx4], { z1.b - z4.b }, z14.b +// CHECK-ENCODING: [0x29,0x14,0x3e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13e1429 + +usdot za.s[w8, 1], {z1.b - z4.b}, z14.b // 11000001-00111110-00010100-00101001 +// CHECK-INST: usdot za.s[w8, 1, vgx4], { z1.b - z4.b }, z14.b +// CHECK-ENCODING: [0x29,0x14,0x3e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13e1429 + +usdot za.s[w10, 0, vgx4], {z19.b - z22.b}, z4.b // 11000001-00110100-01010110-01101000 +// CHECK-INST: usdot za.s[w10, 0, vgx4], { z19.b - z22.b }, z4.b +// CHECK-ENCODING: [0x68,0x56,0x34,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1345668 + +usdot za.s[w10, 0], {z19.b - z22.b}, z4.b // 11000001-00110100-01010110-01101000 +// CHECK-INST: usdot za.s[w10, 0, vgx4], { z19.b - z22.b }, z4.b +// CHECK-ENCODING: [0x68,0x56,0x34,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1345668 + +usdot za.s[w8, 0, vgx4], {z12.b - z15.b}, z2.b // 11000001-00110010-00010101-10001000 +// CHECK-INST: usdot za.s[w8, 0, vgx4], { z12.b - z15.b }, z2.b +// CHECK-ENCODING: [0x88,0x15,0x32,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1321588 + +usdot za.s[w8, 0], {z12.b - z15.b}, z2.b // 11000001-00110010-00010101-10001000 +// CHECK-INST: usdot za.s[w8, 0, vgx4], { z12.b - z15.b }, z2.b +// CHECK-ENCODING: [0x88,0x15,0x32,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1321588 + +usdot za.s[w10, 1, vgx4], {z1.b - z4.b}, z10.b // 11000001-00111010-01010100-00101001 +// CHECK-INST: usdot za.s[w10, 1, vgx4], { z1.b - z4.b }, z10.b +// CHECK-ENCODING: [0x29,0x54,0x3a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13a5429 + +usdot za.s[w10, 1], {z1.b - z4.b}, z10.b // 11000001-00111010-01010100-00101001 +// CHECK-INST: usdot za.s[w10, 1, vgx4], { z1.b - z4.b }, z10.b +// CHECK-ENCODING: [0x29,0x54,0x3a,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13a5429 + +usdot za.s[w8, 5, vgx4], {z22.b - z25.b}, z14.b // 11000001-00111110-00010110-11001101 +// CHECK-INST: usdot za.s[w8, 5, vgx4], { z22.b - z25.b }, z14.b +// CHECK-ENCODING: [0xcd,0x16,0x3e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13e16cd + +usdot za.s[w8, 5], {z22.b - z25.b}, z14.b // 11000001-00111110-00010110-11001101 +// CHECK-INST: usdot za.s[w8, 5, vgx4], { z22.b - z25.b }, z14.b +// CHECK-ENCODING: [0xcd,0x16,0x3e,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13e16cd + +usdot za.s[w11, 2, vgx4], {z9.b - z12.b}, z1.b // 11000001-00110001-01110101-00101010 +// CHECK-INST: usdot za.s[w11, 2, vgx4], { z9.b - z12.b }, z1.b +// CHECK-ENCODING: [0x2a,0x75,0x31,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c131752a + +usdot za.s[w11, 2], {z9.b - z12.b}, z1.b // 11000001-00110001-01110101-00101010 +// CHECK-INST: usdot za.s[w11, 2, vgx4], { z9.b - z12.b }, z1.b +// CHECK-ENCODING: [0x2a,0x75,0x31,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c131752a + +usdot za.s[w9, 7, vgx4], {z12.b - z15.b}, z11.b // 11000001-00111011-00110101-10001111 +// CHECK-INST: usdot za.s[w9, 7, vgx4], { z12.b - z15.b }, z11.b +// CHECK-ENCODING: [0x8f,0x35,0x3b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13b358f + +usdot za.s[w9, 7], {z12.b - z15.b}, z11.b // 11000001-00111011-00110101-10001111 +// CHECK-INST: usdot za.s[w9, 7, vgx4], { z12.b - z15.b }, z11.b +// CHECK-ENCODING: [0x8f,0x35,0x3b,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c13b358f + + usdot za.s[w8, 0, vgx4], {z0.b - z3.b}, z0.b[0] // 11000001-01010000-10010000-00101000 // CHECK-INST: usdot za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b[0] // CHECK-ENCODING: [0x28,0x90,0x50,0xc1] @@ -301,3 +736,148 @@ // CHECK-ERROR: instruction requires: sme2 // CHECK-UNKNOWN: c15bb9af + +usdot za.s[w8, 0, vgx4], {z0.b - z3.b}, {z0.b - z3.b} // 11000001-10100001-00010100-00001000 +// CHECK-INST: usdot za.s[w8, 0, vgx4], { z0.b - z3.b }, { z0.b - z3.b } +// CHECK-ENCODING: [0x08,0x14,0xa1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a11408 + +usdot za.s[w8, 0], {z0.b - z3.b}, {z0.b - z3.b} // 11000001-10100001-00010100-00001000 +// CHECK-INST: usdot za.s[w8, 0, vgx4], { z0.b - z3.b }, { z0.b - z3.b } +// CHECK-ENCODING: [0x08,0x14,0xa1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a11408 + +usdot za.s[w10, 5, vgx4], {z8.b - z11.b}, {z20.b - z23.b} // 11000001-10110101-01010101-00001101 +// CHECK-INST: usdot za.s[w10, 5, vgx4], { z8.b - z11.b }, { z20.b - z23.b } +// CHECK-ENCODING: [0x0d,0x55,0xb5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b5550d + +usdot za.s[w10, 5], {z8.b - z11.b}, {z20.b - z23.b} // 11000001-10110101-01010101-00001101 +// CHECK-INST: usdot za.s[w10, 5, vgx4], { z8.b - z11.b }, { z20.b - z23.b } +// CHECK-ENCODING: [0x0d,0x55,0xb5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b5550d + +usdot za.s[w11, 7, vgx4], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-01110101-10001111 +// CHECK-INST: usdot za.s[w11, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b } +// CHECK-ENCODING: [0x8f,0x75,0xa9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a9758f + +usdot za.s[w11, 7], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-01110101-10001111 +// CHECK-INST: usdot za.s[w11, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b } +// CHECK-ENCODING: [0x8f,0x75,0xa9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a9758f + +usdot za.s[w11, 7, vgx4], {z28.b - z31.b}, {z28.b - z31.b} // 11000001-10111101-01110111-10001111 +// CHECK-INST: usdot za.s[w11, 7, vgx4], { z28.b - z31.b }, { z28.b - z31.b } +// CHECK-ENCODING: [0x8f,0x77,0xbd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1bd778f + +usdot za.s[w11, 7], {z28.b - z31.b}, {z28.b - z31.b} // 11000001-10111101-01110111-10001111 +// CHECK-INST: usdot za.s[w11, 7, vgx4], { z28.b - z31.b }, { z28.b - z31.b } +// CHECK-ENCODING: [0x8f,0x77,0xbd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1bd778f + +usdot za.s[w8, 5, vgx4], {z16.b - z19.b}, {z16.b - z19.b} // 11000001-10110001-00010110-00001101 +// CHECK-INST: usdot za.s[w8, 5, vgx4], { z16.b - z19.b }, { z16.b - z19.b } +// CHECK-ENCODING: [0x0d,0x16,0xb1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b1160d + +usdot za.s[w8, 5], {z16.b - z19.b}, {z16.b - z19.b} // 11000001-10110001-00010110-00001101 +// CHECK-INST: usdot za.s[w8, 5, vgx4], { z16.b - z19.b }, { z16.b - z19.b } +// CHECK-ENCODING: [0x0d,0x16,0xb1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b1160d + +usdot za.s[w8, 1, vgx4], {z0.b - z3.b}, {z28.b - z31.b} // 11000001-10111101-00010100-00001001 +// CHECK-INST: usdot za.s[w8, 1, vgx4], { z0.b - z3.b }, { z28.b - z31.b } +// CHECK-ENCODING: [0x09,0x14,0xbd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1bd1409 + +usdot za.s[w8, 1], {z0.b - z3.b}, {z28.b - z31.b} // 11000001-10111101-00010100-00001001 +// CHECK-INST: usdot za.s[w8, 1, vgx4], { z0.b - z3.b }, { z28.b - z31.b } +// CHECK-ENCODING: [0x09,0x14,0xbd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1bd1409 + +usdot za.s[w10, 0, vgx4], {z16.b - z19.b}, {z20.b - z23.b} // 11000001-10110101-01010110-00001000 +// CHECK-INST: usdot za.s[w10, 0, vgx4], { z16.b - z19.b }, { z20.b - z23.b } +// CHECK-ENCODING: [0x08,0x56,0xb5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b55608 + +usdot za.s[w10, 0], {z16.b - z19.b}, {z20.b - z23.b} // 11000001-10110101-01010110-00001000 +// CHECK-INST: usdot za.s[w10, 0, vgx4], { z16.b - z19.b }, { z20.b - z23.b } +// CHECK-ENCODING: [0x08,0x56,0xb5,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b55608 + +usdot za.s[w8, 0, vgx4], {z12.b - z15.b}, {z0.b - z3.b} // 11000001-10100001-00010101-10001000 +// CHECK-INST: usdot za.s[w8, 0, vgx4], { z12.b - z15.b }, { z0.b - z3.b } +// CHECK-ENCODING: [0x88,0x15,0xa1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a11588 + +usdot za.s[w8, 0], {z12.b - z15.b}, {z0.b - z3.b} // 11000001-10100001-00010101-10001000 +// CHECK-INST: usdot za.s[w8, 0, vgx4], { z12.b - z15.b }, { z0.b - z3.b } +// CHECK-ENCODING: [0x88,0x15,0xa1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a11588 + +usdot za.s[w10, 1, vgx4], {z0.b - z3.b}, {z24.b - z27.b} // 11000001-10111001-01010100-00001001 +// CHECK-INST: usdot za.s[w10, 1, vgx4], { z0.b - z3.b }, { z24.b - z27.b } +// CHECK-ENCODING: [0x09,0x54,0xb9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b95409 + +usdot za.s[w10, 1], {z0.b - z3.b}, {z24.b - z27.b} // 11000001-10111001-01010100-00001001 +// CHECK-INST: usdot za.s[w10, 1, vgx4], { z0.b - z3.b }, { z24.b - z27.b } +// CHECK-ENCODING: [0x09,0x54,0xb9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1b95409 + +usdot za.s[w8, 5, vgx4], {z20.b - z23.b}, {z28.b - z31.b} // 11000001-10111101-00010110-10001101 +// CHECK-INST: usdot za.s[w8, 5, vgx4], { z20.b - z23.b }, { z28.b - z31.b } +// CHECK-ENCODING: [0x8d,0x16,0xbd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1bd168d + +usdot za.s[w8, 5], {z20.b - z23.b}, {z28.b - z31.b} // 11000001-10111101-00010110-10001101 +// CHECK-INST: usdot za.s[w8, 5, vgx4], { z20.b - z23.b }, { z28.b - z31.b } +// CHECK-ENCODING: [0x8d,0x16,0xbd,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1bd168d + +usdot za.s[w11, 2, vgx4], {z8.b - z11.b}, {z0.b - z3.b} // 11000001-10100001-01110101-00001010 +// CHECK-INST: usdot za.s[w11, 2, vgx4], { z8.b - z11.b }, { z0.b - z3.b } +// CHECK-ENCODING: [0x0a,0x75,0xa1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a1750a + +usdot za.s[w11, 2], {z8.b - z11.b}, {z0.b - z3.b} // 11000001-10100001-01110101-00001010 +// CHECK-INST: usdot za.s[w11, 2, vgx4], { z8.b - z11.b }, { z0.b - z3.b } +// CHECK-ENCODING: [0x0a,0x75,0xa1,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a1750a + +usdot za.s[w9, 7, vgx4], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-00110101-10001111 +// CHECK-INST: usdot za.s[w9, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b } +// CHECK-ENCODING: [0x8f,0x35,0xa9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a9358f + +usdot za.s[w9, 7], {z12.b - z15.b}, {z8.b - z11.b} // 11000001-10101001-00110101-10001111 +// CHECK-INST: usdot za.s[w9, 7, vgx4], { z12.b - z15.b }, { z8.b - z11.b } +// CHECK-ENCODING: [0x8f,0x35,0xa9,0xc1] +// CHECK-ERROR: instruction requires: sme2 +// CHECK-UNKNOWN: c1a9358f +