xref: /llvm-project/llvm/test/MC/AArch64/FP8_SME2/dot.s (revision f6ca0ed0385f57adf814439dfa7585a00284a144)
1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme-f8f16,+sme-f8f32 < %s \
2// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
4// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR
5// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme-f8f16,+sme-f8f32 < %s \
6// RUN:        | llvm-objdump -d --mattr=+sme-f8f16,+sme-f8f32 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-INST
7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme-f8f16,+sme-f8f32 < %s \
8// RUN:        | llvm-objdump -d --mattr=-sme-f8f16,-sme-f8f32 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-UNKNOWN
9// Disassemble encoding and check the re-encoding (-show-encoding) matches.
10// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme-f8f16,+sme-f8f32 < %s \
11// RUN:        | sed '/.text/d' | sed 's/.*encoding: //g' \
12// RUN:        | llvm-mc -triple=aarch64 -mattr=+sme-f8f16,+sme-f8f32 -disassemble -show-encoding \
13// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
14
15
16// FDOT
17// x2
18
19fdot    za.h[w8, 0, vgx2], {z0.b-z1.b}, z0.b  // 11000001-00100000-00010000-00001000
20// CHECK-INST: fdot    za.h[w8, 0, vgx2], { z0.b, z1.b }, z0.b
21// CHECK-ENCODING: [0x08,0x10,0x20,0xc1]
22// CHECK-ERROR: instruction requires: sme-f8f16
23// CHECK-UNKNOWN: c1201008 <unknown>
24
25fdot    za.h[w8, 0], {z0.b-z1.b}, z0.b  // 11000001-00100000-00010000-00001000
26// CHECK-INST: fdot    za.h[w8, 0, vgx2], { z0.b, z1.b }, z0.b
27// CHECK-ENCODING: [0x08,0x10,0x20,0xc1]
28// CHECK-ERROR: instruction requires: sme-f8f16
29// CHECK-UNKNOWN: c1201008 <unknown>
30
31fdot    za.h[w11, 7], {z13.b-z14.b}, z8.b  // 11000001-00101000-01110001-10101111
32// CHECK-INST: fdot    za.h[w11, 7, vgx2], { z13.b, z14.b }, z8.b
33// CHECK-ENCODING: [0xaf,0x71,0x28,0xc1]
34// CHECK-ERROR: instruction requires: sme-f8f16
35// CHECK-UNKNOWN: c12871af <unknown>
36
37fdot    za.h[w11, 7, vgx2], {z31.b-z0.b}, z15.b  // 11000001-00101111-01110011-11101111
38// CHECK-INST: fdot    za.h[w11, 7, vgx2], { z31.b, z0.b }, z15.b
39// CHECK-ENCODING: [0xef,0x73,0x2f,0xc1]
40// CHECK-ERROR: instruction requires: sme-f8f16
41// CHECK-UNKNOWN: c12f73ef <unknown>
42
43fdot    za.s[w8, 0, vgx2], {z0.b-z1.b}, z0.b  // 11000001-00100000-00010000-00011000
44// CHECK-INST: fdot    za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b
45// CHECK-ENCODING: [0x18,0x10,0x20,0xc1]
46// CHECK-ERROR: instruction requires: sme-f8f32
47// CHECK-UNKNOWN: c1201018 <unknown>
48
49fdot    za.s[w8, 0], {z0.b-z1.b}, z0.b  // 11000001-00100000-00010000-00011000
50// CHECK-INST: fdot    za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b
51// CHECK-ENCODING: [0x18,0x10,0x20,0xc1]
52// CHECK-ERROR: instruction requires: sme-f8f32
53// CHECK-UNKNOWN: c1201018 <unknown>
54
55fdot    za.s[w11, 7, vgx2], {z31.b-z0.b}, z15.b  // 11000001-00101111-01110011-11111111
56// CHECK-INST: fdot    za.s[w11, 7, vgx2], { z31.b, z0.b }, z15.b
57// CHECK-ENCODING: [0xff,0x73,0x2f,0xc1]
58// CHECK-ERROR: instruction requires: sme-f8f32
59// CHECK-UNKNOWN: c12f73ff <unknown>
60
61fdot    za.s[w11, 7], {z31.b-z0.b}, z15.b  // 11000001-00101111-01110011-11111111
62// CHECK-INST: fdot    za.s[w11, 7, vgx2], { z31.b, z0.b }, z15.b
63// CHECK-ENCODING: [0xff,0x73,0x2f,0xc1]
64// CHECK-ERROR: instruction requires: sme-f8f32
65// CHECK-UNKNOWN: c12f73ff <unknown>
66
67fdot    za.h[w8, 0, vgx2], {z0.b-z1.b}, {z0.b-z1.b}  // 11000001-10100000-00010000-00100000
68// CHECK-INST: fdot    za.h[w8, 0, vgx2], { z0.b, z1.b }, { z0.b, z1.b }
69// CHECK-ENCODING: [0x20,0x10,0xa0,0xc1]
70// CHECK-ERROR: instruction requires: sme-f8f16
71// CHECK-UNKNOWN: c1a01020 <unknown>
72
73fdot    za.h[w8, 0], {z0.b-z1.b}, {z0.b-z1.b}  // 11000001-10100000-00010000-00100000
74// CHECK-INST: fdot    za.h[w8, 0, vgx2], { z0.b, z1.b }, { z0.b, z1.b }
75// CHECK-ENCODING: [0x20,0x10,0xa0,0xc1]
76// CHECK-ERROR: instruction requires: sme-f8f16
77// CHECK-UNKNOWN: c1a01020 <unknown>
78
79fdot    za.h[w11, 7, vgx2], {z30.b-z31.b}, {z30.b-z31.b}  // 11000001-10111110-01110011-11100111
80// CHECK-INST: fdot    za.h[w11, 7, vgx2], { z30.b, z31.b }, { z30.b, z31.b }
81// CHECK-ENCODING: [0xe7,0x73,0xbe,0xc1]
82// CHECK-ERROR: instruction requires: sme-f8f16
83// CHECK-UNKNOWN: c1be73e7 <unknown>
84
85fdot    za.h[w11, 7], {z30.b-z31.b}, {z30.b-z31.b}  // 11000001-10111110-01110011-11100111
86// CHECK-INST: fdot    za.h[w11, 7, vgx2], { z30.b, z31.b }, { z30.b, z31.b }
87// CHECK-ENCODING: [0xe7,0x73,0xbe,0xc1]
88// CHECK-ERROR: instruction requires: sme-f8f16
89// CHECK-UNKNOWN: c1be73e7 <unknown>
90
91fdot    za.s[w8, 0, vgx2], {z0.b-z1.b}, {z0.b-z1.b}  // 11000001-10100000-00010000-00110000
92// CHECK-INST: fdot    za.s[w8, 0, vgx2], { z0.b, z1.b }, { z0.b, z1.b }
93// CHECK-ENCODING: [0x30,0x10,0xa0,0xc1]
94// CHECK-ERROR: instruction requires: sme-f8f32
95// CHECK-UNKNOWN: c1a01030 <unknown>
96
97fdot    za.s[w8, 0], {z0.b-z1.b}, {z0.b-z1.b}  // 11000001-10100000-00010000-00110000
98// CHECK-INST: fdot    za.s[w8, 0, vgx2], { z0.b, z1.b }, { z0.b, z1.b }
99// CHECK-ENCODING: [0x30,0x10,0xa0,0xc1]
100// CHECK-ERROR: instruction requires: sme-f8f32
101// CHECK-UNKNOWN: c1a01030 <unknown>
102
103fdot    za.s[w11, 7, vgx2], {z30.b-z31.b}, {z30.b-z31.b}  // 11000001-10111110-01110011-11110111
104// CHECK-INST: fdot    za.s[w11, 7, vgx2], { z30.b, z31.b }, { z30.b, z31.b }
105// CHECK-ENCODING: [0xf7,0x73,0xbe,0xc1]
106// CHECK-ERROR: instruction requires: sme-f8f32
107// CHECK-UNKNOWN: c1be73f7 <unknown>
108
109fdot    za.s[w11, 7], {z30.b-z31.b}, {z30.b-z31.b}  // 11000001-10111110-01110011-11110111
110// CHECK-INST: fdot    za.s[w11, 7, vgx2], { z30.b, z31.b }, { z30.b, z31.b }
111// CHECK-ENCODING: [0xf7,0x73,0xbe,0xc1]
112// CHECK-ERROR: instruction requires: sme-f8f32
113// CHECK-UNKNOWN: c1be73f7 <unknown>
114
115fdot    za.h[w8, 0, vgx2], {z0.b-z1.b}, z0.b[0]  // 11000001-11010000-00000000-00100000
116// CHECK-INST: fdot    za.h[w8, 0, vgx2], { z0.b, z1.b }, z0.b[0]
117// CHECK-ENCODING: [0x20,0x00,0xd0,0xc1]
118// CHECK-ERROR:  instruction requires: sme-f8f16
119// CHECK-UNKNOWN: c1d00020 <unknown>
120
121fdot    za.h[w8, 0], {z0.b-z1.b}, z0.b[0]  // 11000001-11010000-00000000-00100000
122// CHECK-INST: fdot    za.h[w8, 0, vgx2], { z0.b, z1.b }, z0.b[0]
123// CHECK-ENCODING: [0x20,0x00,0xd0,0xc1]
124// CHECK-ERROR: instruction requires: sme-f8f16
125// CHECK-UNKNOWN: c1d00020 <unknown>
126
127fdot    za.h[w11, 7, vgx2], {z30.b-z31.b}, z15.b[7]  // 11000001-11011111-01101111-11101111
128// CHECK-INST: fdot    za.h[w11, 7, vgx2], { z30.b, z31.b }, z15.b[7]
129// CHECK-ENCODING: [0xef,0x6f,0xdf,0xc1]
130// CHECK-ERROR: instruction requires: sme-f8f16
131// CHECK-UNKNOWN: c1df6fef <unknown>
132
133fdot    za.h[w11, 7], {z30.b-z31.b}, z15.b[7]  // 11000001-11011111-01101111-11101111
134// CHECK-INST: fdot    za.h[w11, 7, vgx2], { z30.b, z31.b }, z15.b[7]
135// CHECK-ENCODING: [0xef,0x6f,0xdf,0xc1]
136// CHECK-ERROR: instruction requires: sme-f8f16
137// CHECK-UNKNOWN: c1df6fef <unknown>
138
139fdot    za.s[w8, 0, vgx2], {z0.b-z1.b}, z0.b[0]  // 11000001-01010000-00000000-00111000
140// CHECK-INST: fdot    za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b[0]
141// CHECK-ENCODING: [0x38,0x00,0x50,0xc1]
142// CHECK-ERROR: instruction requires: sme-f8f32
143// CHECK-UNKNOWN: c1500038 <unknown>
144
145fdot    za.s[w8, 0], {z0.b-z1.b}, z0.b[0]  // 11000001-01010000-00000000-00111000
146// CHECK-INST: fdot    za.s[w8, 0, vgx2], { z0.b, z1.b }, z0.b[0]
147// CHECK-ENCODING: [0x38,0x00,0x50,0xc1]
148// CHECK-ERROR: instruction requires: sme-f8f32
149// CHECK-UNKNOWN: c1500038 <unknown>
150
151fdot    za.s[w11, 7, vgx2], {z30.b-z31.b}, z15.b[3]  // 11000001-01011111-01101111-11111111
152// CHECK-INST: fdot    za.s[w11, 7, vgx2], { z30.b, z31.b }, z15.b[3]
153// CHECK-ENCODING: [0xff,0x6f,0x5f,0xc1]
154// CHECK-ERROR: instruction requires: sme-f8f32
155// CHECK-UNKNOWN: c15f6fff <unknown>
156
157fdot    za.s[w11, 7], {z30.b-z31.b}, z15.b[3]  // 11000001-01011111-01101111-11111111
158// CHECK-INST: fdot    za.s[w11, 7, vgx2], { z30.b, z31.b }, z15.b[3]
159// CHECK-ENCODING: [0xff,0x6f,0x5f,0xc1]
160// CHECK-ERROR: instruction requires: sme-f8f32
161// CHECK-UNKNOWN: c15f6fff <unknown>
162
163// x4
164
165
166fdot    za.h[w8, 0, vgx4], {z0.b-z3.b}, z0.b  // 11000001-00110000-00010000-00001000
167// CHECK-INST: fdot    za.h[w8, 0, vgx4], { z0.b - z3.b }, z0.b
168// CHECK-ENCODING: [0x08,0x10,0x30,0xc1]
169// CHECK-ERROR: instruction requires: sme-f8f16
170// CHECK-UNKNOWN: c1301008 <unknown>
171
172fdot    za.h[w8, 0], {z0.b-z3.b}, z0.b  // 11000001-00110000-00010000-00001000
173// CHECK-INST: fdot    za.h[w8, 0, vgx4], { z0.b - z3.b }, z0.b
174// CHECK-ENCODING: [0x08,0x10,0x30,0xc1]
175// CHECK-ERROR: instruction requires: sme-f8f16
176// CHECK-UNKNOWN: c1301008 <unknown>
177
178fdot    za.h[w11, 7, vgx4], {z31.b-z2.b}, z15.b  // 11000001-00111111-01110011-11101111
179// CHECK-INST: fdot    za.h[w11, 7, vgx4], {  z31.b, z0.b, z1.b, z2.b  }, z15.b
180// CHECK-ENCODING: [0xef,0x73,0x3f,0xc1]
181// CHECK-ERROR: instruction requires: sme-f8f16
182// CHECK-UNKNOWN: c13f73ef <unknown>
183
184fdot    za.h[w11, 7], {z31.b-z2.b}, z15.b  // 11000001-00111111-01110011-11101111
185// CHECK-INST: fdot    za.h[w11, 7, vgx4], {  z31.b, z0.b, z1.b, z2.b  }, z15.b
186// CHECK-ENCODING: [0xef,0x73,0x3f,0xc1]
187// CHECK-ERROR: instruction requires: sme-f8f16
188// CHECK-UNKNOWN: c13f73ef <unknown>
189
190fdot    za.s[w8, 0, vgx4], {z0.b-z3.b}, z0.b  // 11000001-00110000-00010000-00011000
191// CHECK-INST: fdot    za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b
192// CHECK-ENCODING: [0x18,0x10,0x30,0xc1]
193// CHECK-ERROR: instruction requires: sme-f8f32
194// CHECK-UNKNOWN: c1301018 <unknown>
195
196fdot    za.s[w8, 0], {z0.b-z3.b}, z0.b  // 11000001-00110000-00010000-00011000
197// CHECK-INST: fdot    za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b
198// CHECK-ENCODING: [0x18,0x10,0x30,0xc1]
199// CHECK-ERROR: instruction requires: sme-f8f32
200// CHECK-UNKNOWN: c1301018 <unknown>
201
202fdot    za.s[w11, 7, vgx4], {z31.b-z2.b}, z15.b  // 11000001-00111111-01110011-11111111
203// CHECK-INST: fdot    za.s[w11, 7, vgx4], {  z31.b, z0.b, z1.b, z2.b  }, z15.b
204// CHECK-ENCODING: [0xff,0x73,0x3f,0xc1]
205// CHECK-ERROR: instruction requires: sme-f8f32
206// CHECK-UNKNOWN: c13f73ff <unknown>
207
208fdot    za.s[w11, 7], {z31.b-z2.b}, z15.b  // 11000001-00111111-01110011-11111111
209// CHECK-INST: fdot    za.s[w11, 7, vgx4], {  z31.b, z0.b, z1.b, z2.b  }, z15.b
210// CHECK-ENCODING: [0xff,0x73,0x3f,0xc1]
211// CHECK-ERROR: instruction requires: sme-f8f32
212// CHECK-UNKNOWN: c13f73ff <unknown>
213
214fdot    za.h[w8, 0, vgx4], {z0.b-z3.b}, {z0.b-z3.b}  // 11000001-10100001-00010000-00100000
215// CHECK-INST: fdot    za.h[w8, 0, vgx4], { z0.b - z3.b }, { z0.b - z3.b }
216// CHECK-ENCODING: [0x20,0x10,0xa1,0xc1]
217// CHECK-ERROR: instruction requires: sme-f8f16
218// CHECK-UNKNOWN: c1a11020 <unknown>
219
220fdot    za.h[w8, 0], {z0.b-z3.b}, {z0.b-z3.b}  // 11000001-10100001-00010000-00100000
221// CHECK-INST: fdot    za.h[w8, 0, vgx4], { z0.b - z3.b }, { z0.b - z3.b }
222// CHECK-ENCODING: [0x20,0x10,0xa1,0xc1]
223// CHECK-ERROR: instruction requires: sme-f8f16
224// CHECK-UNKNOWN: c1a11020 <unknown>
225
226fdot    za.h[w11, 7, vgx4], {z28.b-z31.b}, {z28.b-z31.b}  // 11000001-10111101-01110011-10100111
227// CHECK-INST: fdot    za.h[w11, 7, vgx4], { z28.b - z31.b }, { z28.b - z31.b }
228// CHECK-ENCODING: [0xa7,0x73,0xbd,0xc1]
229// CHECK-ERROR: instruction requires: sme-f8f16
230// CHECK-UNKNOWN: c1bd73a7 <unknown>
231
232fdot    za.h[w11, 7], {z28.b-z31.b}, {z28.b-z31.b}  // 11000001-10111101-01110011-10100111
233// CHECK-INST: fdot    za.h[w11, 7, vgx4], { z28.b - z31.b }, { z28.b - z31.b }
234// CHECK-ENCODING: [0xa7,0x73,0xbd,0xc1]
235// CHECK-ERROR: instruction requires: sme-f8f16
236// CHECK-UNKNOWN: c1bd73a7 <unknown>
237fdot    za.h[w8, 0, vgx4], {z0.b-z3.b}, z0.b[0]  // 11000001-00010000-10010000-01000000
238// CHECK-INST: fdot    za.h[w8, 0, vgx4], { z0.b - z3.b }, z0.b[0]
239// CHECK-ENCODING: [0x40,0x90,0x10,0xc1]
240// CHECK-ERROR: instruction requires: sme-f8f16
241// CHECK-UNKNOWN: c1109040 <unknown>
242
243fdot    za.s[w8, 0, vgx4], {z0.b-z3.b}, {z0.b-z3.b}  // 11000001-10100001-00010000-00110000
244// CHECK-INST: fdot    za.s[w8, 0, vgx4], { z0.b - z3.b }, { z0.b - z3.b }
245// CHECK-ENCODING: [0x30,0x10,0xa1,0xc1]
246// CHECK-ERROR: instruction requires: sme-f8f32
247// CHECK-UNKNOWN: c1a11030 <unknown>
248
249fdot    za.s[w8, 0], {z0.b-z3.b}, {z0.b-z3.b}  // 11000001-10100001-00010000-00110000
250// CHECK-INST: fdot    za.s[w8, 0, vgx4], { z0.b - z3.b }, { z0.b - z3.b }
251// CHECK-ENCODING: [0x30,0x10,0xa1,0xc1]
252// CHECK-ERROR: instruction requires: sme-f8f32
253// CHECK-UNKNOWN: c1a11030 <unknown>
254
255fdot    za.s[w11, 7, vgx4], {z28.b-z31.b}, {z28.b-z31.b}  // 11000001-10111101-01110011-10110111
256// CHECK-INST: fdot    za.s[w11, 7, vgx4], { z28.b - z31.b }, { z28.b - z31.b }
257// CHECK-ENCODING: [0xb7,0x73,0xbd,0xc1]
258// CHECK-ERROR: instruction requires: sme-f8f32
259// CHECK-UNKNOWN: c1bd73b7 <unknown>
260
261fdot    za.s[w11, 7], {z28.b-z31.b}, {z28.b-z31.b}  // 11000001-10111101-01110011-10110111
262// CHECK-INST: fdot    za.s[w11, 7, vgx4], { z28.b - z31.b }, { z28.b - z31.b }
263// CHECK-ENCODING: [0xb7,0x73,0xbd,0xc1]
264// CHECK-ERROR: instruction requires: sme-f8f32
265// CHECK-UNKNOWN: c1bd73b7 <unknown>
266
267fdot    za.h[w8, 0], {z0.b-z3.b}, z0.b[0]  // 11000001-00010000-10010000-01000000
268// CHECK-INST: fdot    za.h[w8, 0, vgx4], { z0.b - z3.b }, z0.b[0]
269// CHECK-ENCODING: [0x40,0x90,0x10,0xc1]
270// CHECK-ERROR: instruction requires: sme-f8f16
271// CHECK-UNKNOWN: c1109040 <unknown>
272
273fdot    za.h[w11, 7, vgx4], {z28.b-z31.b}, z15.b[7]  // 11000001-00011111-11111111-11001111
274// CHECK-INST: fdot    za.h[w11, 7, vgx4], { z28.b - z31.b }, z15.b[7]
275// CHECK-ENCODING: [0xcf,0xff,0x1f,0xc1]
276// CHECK-ERROR: instruction requires: sme-f8f16
277// CHECK-UNKNOWN: c11fffcf <unknown>
278
279fdot    za.h[w11, 7], {z28.b-z31.b}, z15.b[7]  // 11000001-00011111-11111111-11001111
280// CHECK-INST: fdot    za.h[w11, 7, vgx4], { z28.b - z31.b }, z15.b[7]
281// CHECK-ENCODING: [0xcf,0xff,0x1f,0xc1]
282// CHECK-ERROR: instruction requires: sme-f8f16
283// CHECK-UNKNOWN: c11fffcf <unknown>
284
285fdot    za.s[w8, 0, vgx4], {z0.b-z3.b}, z0.b[0]  // 11000001-01010000-10000000-00001000
286// CHECK-INST: fdot    za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b[0]
287// CHECK-ENCODING: [0x08,0x80,0x50,0xc1]
288// CHECK-ERROR: instruction requires: sme-f8f32
289// CHECK-UNKNOWN: c1508008 <unknown>
290
291fdot    za.s[w8, 0], {z0.b-z3.b}, z0.b[0]  // 11000001-01010000-10000000-00001000
292// CHECK-INST: fdot    za.s[w8, 0, vgx4], { z0.b - z3.b }, z0.b[0]
293// CHECK-ENCODING: [0x08,0x80,0x50,0xc1]
294// CHECK-ERROR: instruction requires: sme-f8f32
295// CHECK-UNKNOWN: c1508008 <unknown>
296
297fdot    za.s[w11, 7, vgx4], {z28.b-z31.b}, z15.b[3]  // 11000001-01011111-11101111-10001111
298// CHECK-INST: fdot    za.s[w11, 7, vgx4], { z28.b - z31.b }, z15.b[3]
299// CHECK-ENCODING: [0x8f,0xef,0x5f,0xc1]
300// CHECK-ERROR: instruction requires: sme-f8f32
301// CHECK-UNKNOWN: c15fef8f <unknown>
302
303fdot    za.s[w11, 7], {z28.b-z31.b}, z15.b[3]  // 11000001-01011111-11101111-10001111
304// CHECK-INST: fdot    za.s[w11, 7, vgx4], { z28.b - z31.b }, z15.b[3]
305// CHECK-ENCODING: [0x8f,0xef,0x5f,0xc1]
306// CHECK-ERROR: instruction requires: sme-f8f32
307// CHECK-UNKNOWN: c15fef8f <unknown>
308
309
310// FVDOT
311
312fvdot   za.h[w8, 0, vgx2], {z0.b-z1.b}, z0.b[0]  // 11000001-11010000-00010000-00100000
313// CHECK-INST: fvdot   za.h[w8, 0, vgx2], { z0.b, z1.b }, z0.b[0]
314// CHECK-ENCODING: [0x20,0x10,0xd0,0xc1]
315// CHECK-ERROR: instruction requires: sme-f8f16
316// CHECK-UNKNOWN: c1d01020 <unknown>
317
318fvdot   za.h[w8, 0], {z0.b-z1.b}, z0.b[0]  // 11000001-11010000-00010000-00100000
319// CHECK-INST: fvdot   za.h[w8, 0, vgx2], { z0.b, z1.b }, z0.b[0]
320// CHECK-ENCODING: [0x20,0x10,0xd0,0xc1]
321// CHECK-ERROR: instruction requires: sme-f8f16
322// CHECK-UNKNOWN: c1d01020 <unknown>
323
324fvdot   za.h[w11, 7, vgx2], {z30.b-z31.b}, z15.b[7]  // 11000001-11011111-01111111-11101111
325// CHECK-INST: fvdot   za.h[w11, 7, vgx2], { z30.b, z31.b }, z15.b[7]
326// CHECK-ENCODING: [0xef,0x7f,0xdf,0xc1]
327// CHECK-ERROR: instruction requires: sme-f8f16
328// CHECK-UNKNOWN: c1df7fef <unknown>
329
330fvdot   za.h[w11, 7], {z30.b-z31.b}, z15.b[7]  // 11000001-11011111-01111111-11101111
331// CHECK-INST: fvdot   za.h[w11, 7, vgx2], { z30.b, z31.b }, z15.b[7]
332// CHECK-ENCODING: [0xef,0x7f,0xdf,0xc1]
333// CHECK-ERROR: instruction requires: sme-f8f16
334// CHECK-UNKNOWN: c1df7fef <unknown>
335
336// FVDOTB
337
338fvdotb  za.s[w8, 0, vgx4], {z0.b-z1.b}, z0.b[0]  // 11000001-11010000-00001000-00000000
339// CHECK-INST: fvdotb  za.s[w8, 0, vgx4], { z0.b, z1.b }, z0.b[0]
340// CHECK-ENCODING: [0x00,0x08,0xd0,0xc1]
341// CHECK-ERROR: instruction requires: sme-f8f32
342// CHECK-UNKNOWN: c1d00800 <unknown>
343
344fvdotb  za.s[w11, 7, vgx4], {z30.b-z31.b}, z15.b[3]  // 11000001-11011111-01101111-11001111
345// CHECK-INST: fvdotb  za.s[w11, 7, vgx4], { z30.b, z31.b }, z15.b[3]
346// CHECK-ENCODING: [0xcf,0x6f,0xdf,0xc1]
347// CHECK-ERROR: instruction requires: sme-f8f32
348// CHECK-UNKNOWN: c1df6fcf <unknown>
349
350// FVDOTT
351fvdott  za.s[w8, 0, vgx4], {z0.b-z1.b}, z0.b[0]  // 11000001-11010000-00001000-00010000
352// CHECK-INST: fvdott  za.s[w8, 0, vgx4], { z0.b, z1.b }, z0.b[0]
353// CHECK-ENCODING: [0x10,0x08,0xd0,0xc1]
354// CHECK-ERROR: instruction requires: sme-f8f32
355// CHECK-UNKNOWN: c1d00810 <unknown>
356
357fvdott  za.s[w11, 7, vgx4], {z30.b-z31.b}, z15.b[3]  // 11000001-11011111-01101111-11011111
358// CHECK-INST: fvdott  za.s[w11, 7, vgx4], { z30.b, z31.b }, z15.b[3]
359// CHECK-ENCODING: [0xdf,0x6f,0xdf,0xc1]
360// CHECK-ERROR: instruction requires: sme-f8f32
361// CHECK-UNKNOWN: c1df6fdf <unknown>
362