[SKX] avx512_icmp_packed multiclass extension
[oota-llvm.git] / test / MC / X86 / x86-64-avx512bw.s
1 // RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=skx  --show-encoding %s | FileCheck %s
2
3 // CHECK: vpcmpeqb %zmm26, %zmm26, %k4
4 // CHECK:  encoding: [0x62,0x91,0x2d,0x40,0x74,0xe2]
5           vpcmpeqb %zmm26, %zmm26, %k4
6
7 // CHECK: vpcmpeqb %zmm26, %zmm26, %k4 {%k6}
8 // CHECK:  encoding: [0x62,0x91,0x2d,0x46,0x74,0xe2]
9           vpcmpeqb %zmm26, %zmm26, %k4 {%k6}
10
11 // CHECK: vpcmpeqb (%rcx), %zmm26, %k4
12 // CHECK:  encoding: [0x62,0xf1,0x2d,0x40,0x74,0x21]
13           vpcmpeqb (%rcx), %zmm26, %k4
14
15 // CHECK: vpcmpeqb 291(%rax,%r14,8), %zmm26, %k4
16 // CHECK:  encoding: [0x62,0xb1,0x2d,0x40,0x74,0xa4,0xf0,0x23,0x01,0x00,0x00]
17           vpcmpeqb 291(%rax,%r14,8), %zmm26, %k4
18
19 // CHECK: vpcmpeqb 8128(%rdx), %zmm26, %k4
20 // CHECK:  encoding: [0x62,0xf1,0x2d,0x40,0x74,0x62,0x7f]
21           vpcmpeqb 8128(%rdx), %zmm26, %k4
22
23 // CHECK: vpcmpeqb 8192(%rdx), %zmm26, %k4
24 // CHECK:  encoding: [0x62,0xf1,0x2d,0x40,0x74,0xa2,0x00,0x20,0x00,0x00]
25           vpcmpeqb 8192(%rdx), %zmm26, %k4
26
27 // CHECK: vpcmpeqb -8192(%rdx), %zmm26, %k4
28 // CHECK:  encoding: [0x62,0xf1,0x2d,0x40,0x74,0x62,0x80]
29           vpcmpeqb -8192(%rdx), %zmm26, %k4
30
31 // CHECK: vpcmpeqb -8256(%rdx), %zmm26, %k4
32 // CHECK:  encoding: [0x62,0xf1,0x2d,0x40,0x74,0xa2,0xc0,0xdf,0xff,0xff]
33           vpcmpeqb -8256(%rdx), %zmm26, %k4
34
35 // CHECK: vpcmpeqw %zmm19, %zmm23, %k5
36 // CHECK:  encoding: [0x62,0xb1,0x45,0x40,0x75,0xeb]
37           vpcmpeqw %zmm19, %zmm23, %k5
38
39 // CHECK: vpcmpeqw %zmm19, %zmm23, %k5 {%k7}
40 // CHECK:  encoding: [0x62,0xb1,0x45,0x47,0x75,0xeb]
41           vpcmpeqw %zmm19, %zmm23, %k5 {%k7}
42
43 // CHECK: vpcmpeqw (%rcx), %zmm23, %k5
44 // CHECK:  encoding: [0x62,0xf1,0x45,0x40,0x75,0x29]
45           vpcmpeqw (%rcx), %zmm23, %k5
46
47 // CHECK: vpcmpeqw 291(%rax,%r14,8), %zmm23, %k5
48 // CHECK:  encoding: [0x62,0xb1,0x45,0x40,0x75,0xac,0xf0,0x23,0x01,0x00,0x00]
49           vpcmpeqw 291(%rax,%r14,8), %zmm23, %k5
50
51 // CHECK: vpcmpeqw 8128(%rdx), %zmm23, %k5
52 // CHECK:  encoding: [0x62,0xf1,0x45,0x40,0x75,0x6a,0x7f]
53           vpcmpeqw 8128(%rdx), %zmm23, %k5
54
55 // CHECK: vpcmpeqw 8192(%rdx), %zmm23, %k5
56 // CHECK:  encoding: [0x62,0xf1,0x45,0x40,0x75,0xaa,0x00,0x20,0x00,0x00]
57           vpcmpeqw 8192(%rdx), %zmm23, %k5
58
59 // CHECK: vpcmpeqw -8192(%rdx), %zmm23, %k5
60 // CHECK:  encoding: [0x62,0xf1,0x45,0x40,0x75,0x6a,0x80]
61           vpcmpeqw -8192(%rdx), %zmm23, %k5
62
63 // CHECK: vpcmpeqw -8256(%rdx), %zmm23, %k5
64 // CHECK:  encoding: [0x62,0xf1,0x45,0x40,0x75,0xaa,0xc0,0xdf,0xff,0xff]
65           vpcmpeqw -8256(%rdx), %zmm23, %k5
66
67 // CHECK: vpcmpgtb %zmm20, %zmm30, %k4
68 // CHECK:  encoding: [0x62,0xb1,0x0d,0x40,0x64,0xe4]
69           vpcmpgtb %zmm20, %zmm30, %k4
70
71 // CHECK: vpcmpgtb %zmm20, %zmm30, %k4 {%k1}
72 // CHECK:  encoding: [0x62,0xb1,0x0d,0x41,0x64,0xe4]
73           vpcmpgtb %zmm20, %zmm30, %k4 {%k1}
74
75 // CHECK: vpcmpgtb (%rcx), %zmm30, %k4
76 // CHECK:  encoding: [0x62,0xf1,0x0d,0x40,0x64,0x21]
77           vpcmpgtb (%rcx), %zmm30, %k4
78
79 // CHECK: vpcmpgtb 291(%rax,%r14,8), %zmm30, %k4
80 // CHECK:  encoding: [0x62,0xb1,0x0d,0x40,0x64,0xa4,0xf0,0x23,0x01,0x00,0x00]
81           vpcmpgtb 291(%rax,%r14,8), %zmm30, %k4
82
83 // CHECK: vpcmpgtb 8128(%rdx), %zmm30, %k4
84 // CHECK:  encoding: [0x62,0xf1,0x0d,0x40,0x64,0x62,0x7f]
85           vpcmpgtb 8128(%rdx), %zmm30, %k4
86
87 // CHECK: vpcmpgtb 8192(%rdx), %zmm30, %k4
88 // CHECK:  encoding: [0x62,0xf1,0x0d,0x40,0x64,0xa2,0x00,0x20,0x00,0x00]
89           vpcmpgtb 8192(%rdx), %zmm30, %k4
90
91 // CHECK: vpcmpgtb -8192(%rdx), %zmm30, %k4
92 // CHECK:  encoding: [0x62,0xf1,0x0d,0x40,0x64,0x62,0x80]
93           vpcmpgtb -8192(%rdx), %zmm30, %k4
94
95 // CHECK: vpcmpgtb -8256(%rdx), %zmm30, %k4
96 // CHECK:  encoding: [0x62,0xf1,0x0d,0x40,0x64,0xa2,0xc0,0xdf,0xff,0xff]
97           vpcmpgtb -8256(%rdx), %zmm30, %k4
98
99 // CHECK: vpcmpgtw %zmm21, %zmm23, %k5
100 // CHECK:  encoding: [0x62,0xb1,0x45,0x40,0x65,0xed]
101           vpcmpgtw %zmm21, %zmm23, %k5
102
103 // CHECK: vpcmpgtw %zmm21, %zmm23, %k5 {%k7}
104 // CHECK:  encoding: [0x62,0xb1,0x45,0x47,0x65,0xed]
105           vpcmpgtw %zmm21, %zmm23, %k5 {%k7}
106
107 // CHECK: vpcmpgtw (%rcx), %zmm23, %k5
108 // CHECK:  encoding: [0x62,0xf1,0x45,0x40,0x65,0x29]
109           vpcmpgtw (%rcx), %zmm23, %k5
110
111 // CHECK: vpcmpgtw 291(%rax,%r14,8), %zmm23, %k5
112 // CHECK:  encoding: [0x62,0xb1,0x45,0x40,0x65,0xac,0xf0,0x23,0x01,0x00,0x00]
113           vpcmpgtw 291(%rax,%r14,8), %zmm23, %k5
114
115 // CHECK: vpcmpgtw 8128(%rdx), %zmm23, %k5
116 // CHECK:  encoding: [0x62,0xf1,0x45,0x40,0x65,0x6a,0x7f]
117           vpcmpgtw 8128(%rdx), %zmm23, %k5
118
119 // CHECK: vpcmpgtw 8192(%rdx), %zmm23, %k5
120 // CHECK:  encoding: [0x62,0xf1,0x45,0x40,0x65,0xaa,0x00,0x20,0x00,0x00]
121           vpcmpgtw 8192(%rdx), %zmm23, %k5
122
123 // CHECK: vpcmpgtw -8192(%rdx), %zmm23, %k5
124 // CHECK:  encoding: [0x62,0xf1,0x45,0x40,0x65,0x6a,0x80]
125           vpcmpgtw -8192(%rdx), %zmm23, %k5
126
127 // CHECK: vpcmpgtw -8256(%rdx), %zmm23, %k5
128 // CHECK:  encoding: [0x62,0xf1,0x45,0x40,0x65,0xaa,0xc0,0xdf,0xff,0xff]
129           vpcmpgtw -8256(%rdx), %zmm23, %k5
130
131 // CHECK: vmovdqu8 %zmm19, %zmm29
132 // CHECK:  encoding: [0x62,0x21,0x7f,0x48,0x6f,0xeb]
133           vmovdqu8 %zmm19, %zmm29
134
135 // CHECK: vmovdqu8 %zmm19, %zmm29 {%k7}
136 // CHECK:  encoding: [0x62,0x21,0x7f,0x4f,0x6f,0xeb]
137           vmovdqu8 %zmm19, %zmm29 {%k7}
138
139 // CHECK: vmovdqu8 %zmm19, %zmm29 {%k7} {z}
140 // CHECK:  encoding: [0x62,0x21,0x7f,0xcf,0x6f,0xeb]
141           vmovdqu8 %zmm19, %zmm29 {%k7} {z}
142
143 // CHECK: vmovdqu8 (%rcx), %zmm29
144 // CHECK:  encoding: [0x62,0x61,0x7f,0x48,0x6f,0x29]
145           vmovdqu8 (%rcx), %zmm29
146
147 // CHECK: vmovdqu8 291(%rax,%r14,8), %zmm29
148 // CHECK:  encoding: [0x62,0x21,0x7f,0x48,0x6f,0xac,0xf0,0x23,0x01,0x00,0x00]
149           vmovdqu8 291(%rax,%r14,8), %zmm29
150
151 // CHECK: vmovdqu8 8128(%rdx), %zmm29
152 // CHECK:  encoding: [0x62,0x61,0x7f,0x48,0x6f,0x6a,0x7f]
153           vmovdqu8 8128(%rdx), %zmm29
154
155 // CHECK: vmovdqu8 8192(%rdx), %zmm29
156 // CHECK:  encoding: [0x62,0x61,0x7f,0x48,0x6f,0xaa,0x00,0x20,0x00,0x00]
157           vmovdqu8 8192(%rdx), %zmm29
158
159 // CHECK: vmovdqu8 -8192(%rdx), %zmm29
160 // CHECK:  encoding: [0x62,0x61,0x7f,0x48,0x6f,0x6a,0x80]
161           vmovdqu8 -8192(%rdx), %zmm29
162
163 // CHECK: vmovdqu8 -8256(%rdx), %zmm29
164 // CHECK:  encoding: [0x62,0x61,0x7f,0x48,0x6f,0xaa,0xc0,0xdf,0xff,0xff]
165           vmovdqu8 -8256(%rdx), %zmm29
166
167 // CHECK: vmovdqu16 %zmm18, %zmm17
168 // CHECK:  encoding: [0x62,0xa1,0xff,0x48,0x6f,0xca]
169           vmovdqu16 %zmm18, %zmm17
170
171 // CHECK: vmovdqu16 %zmm18, %zmm17 {%k3}
172 // CHECK:  encoding: [0x62,0xa1,0xff,0x4b,0x6f,0xca]
173           vmovdqu16 %zmm18, %zmm17 {%k3}
174
175 // CHECK: vmovdqu16 %zmm18, %zmm17 {%k3} {z}
176 // CHECK:  encoding: [0x62,0xa1,0xff,0xcb,0x6f,0xca]
177           vmovdqu16 %zmm18, %zmm17 {%k3} {z}
178
179 // CHECK: vmovdqu16 (%rcx), %zmm17
180 // CHECK:  encoding: [0x62,0xe1,0xff,0x48,0x6f,0x09]
181           vmovdqu16 (%rcx), %zmm17
182
183 // CHECK: vmovdqu16 291(%rax,%r14,8), %zmm17
184 // CHECK:  encoding: [0x62,0xa1,0xff,0x48,0x6f,0x8c,0xf0,0x23,0x01,0x00,0x00]
185           vmovdqu16 291(%rax,%r14,8), %zmm17
186
187 // CHECK: vmovdqu16 8128(%rdx), %zmm17
188 // CHECK:  encoding: [0x62,0xe1,0xff,0x48,0x6f,0x4a,0x7f]
189           vmovdqu16 8128(%rdx), %zmm17
190
191 // CHECK: vmovdqu16 8192(%rdx), %zmm17
192 // CHECK:  encoding: [0x62,0xe1,0xff,0x48,0x6f,0x8a,0x00,0x20,0x00,0x00]
193           vmovdqu16 8192(%rdx), %zmm17
194
195 // CHECK: vmovdqu16 -8192(%rdx), %zmm17
196 // CHECK:  encoding: [0x62,0xe1,0xff,0x48,0x6f,0x4a,0x80]
197           vmovdqu16 -8192(%rdx), %zmm17
198
199 // CHECK: vmovdqu16 -8256(%rdx), %zmm17
200 // CHECK:  encoding: [0x62,0xe1,0xff,0x48,0x6f,0x8a,0xc0,0xdf,0xff,0xff]
201           vmovdqu16 -8256(%rdx), %zmm17
202
203 // CHECK: kandq  %k7, %k5, %k5
204 // CHECK:  encoding: [0xc4,0xe1,0xd4,0x41,0xef]
205           kandq  %k7, %k5, %k5
206
207 // CHECK: kandd  %k4, %k5, %k5
208 // CHECK:  encoding: [0xc4,0xe1,0xd5,0x41,0xec]
209           kandd  %k4, %k5, %k5
210
211 // CHECK: kandnq %k4, %k5, %k2
212 // CHECK:  encoding: [0xc4,0xe1,0xd4,0x42,0xd4]
213           kandnq %k4, %k5, %k2
214
215 // CHECK: kandnd %k6, %k6, %k3
216 // CHECK:  encoding: [0xc4,0xe1,0xcd,0x42,0xde]
217           kandnd %k6, %k6, %k3
218
219 // CHECK: korq   %k4, %k5, %k4
220 // CHECK:  encoding: [0xc4,0xe1,0xd4,0x45,0xe4]
221           korq   %k4, %k5, %k4
222
223 // CHECK: kord   %k6, %k6, %k5
224 // CHECK:  encoding: [0xc4,0xe1,0xcd,0x45,0xee]
225           kord   %k6, %k6, %k5
226
227 // CHECK: kxnorq %k6, %k5, %k2
228 // CHECK:  encoding: [0xc4,0xe1,0xd4,0x46,0xd6]
229           kxnorq %k6, %k5, %k2
230
231 // CHECK: kxnord %k5, %k3, %k5
232 // CHECK:  encoding: [0xc4,0xe1,0xe5,0x46,0xed]
233           kxnord %k5, %k3, %k5
234
235 // CHECK: kxorq  %k4, %k3, %k2
236 // CHECK:  encoding: [0xc4,0xe1,0xe4,0x47,0xd4]
237           kxorq  %k4, %k3, %k2
238
239 // CHECK: kxord  %k6, %k5, %k2
240 // CHECK:  encoding: [0xc4,0xe1,0xd5,0x47,0xd6]
241           kxord  %k6, %k5, %k2
242
243 // CHECK: knotq  %k6, %k3
244 // CHECK:  encoding: [0xc4,0xe1,0xf8,0x44,0xde]
245           knotq  %k6, %k3
246
247 // CHECK: knotd  %k4, %k3
248 // CHECK:  encoding: [0xc4,0xe1,0xf9,0x44,0xdc]
249           knotd  %k4, %k3
250
251 // CHECK: kmovq  %k5, %k2
252 // CHECK:  encoding: [0xc4,0xe1,0xf8,0x90,0xd5]
253           kmovq  %k5, %k2
254
255 // CHECK: kmovq  (%rcx), %k2
256 // CHECK:  encoding: [0xc4,0xe1,0xf8,0x90,0x11]
257           kmovq  (%rcx), %k2
258
259 // CHECK: kmovq  291(%rax,%r14,8), %k2
260 // CHECK:  encoding: [0xc4,0xa1,0xf8,0x90,0x94,0xf0,0x23,0x01,0x00,0x00]
261           kmovq  291(%rax,%r14,8), %k2
262
263 // CHECK: kmovd  %k4, %k5
264 // CHECK:  encoding: [0xc4,0xe1,0xf9,0x90,0xec]
265           kmovd  %k4, %k5
266
267 // CHECK: kmovd  (%rcx), %k5
268 // CHECK:  encoding: [0xc4,0xe1,0xf9,0x90,0x29]
269           kmovd  (%rcx), %k5
270
271 // CHECK: kmovd  291(%rax,%r14,8), %k5
272 // CHECK:  encoding: [0xc4,0xa1,0xf9,0x90,0xac,0xf0,0x23,0x01,0x00,0x00]
273           kmovd  291(%rax,%r14,8), %k5
274
275 // CHECK: kmovq  %k3, (%rcx)
276 // CHECK:  encoding: [0xc4,0xe1,0xf8,0x91,0x19]
277           kmovq  %k3, (%rcx)
278
279 // CHECK: kmovq  %k3, 291(%rax,%r14,8)
280 // CHECK:  encoding: [0xc4,0xa1,0xf8,0x91,0x9c,0xf0,0x23,0x01,0x00,0x00]
281           kmovq  %k3, 291(%rax,%r14,8)
282
283 // CHECK: kmovd  %k3, (%rcx)
284 // CHECK:  encoding: [0xc4,0xe1,0xf9,0x91,0x19]
285           kmovd  %k3, (%rcx)
286
287 // CHECK: kmovd  %k3, 291(%rax,%r14,8)
288 // CHECK:  encoding: [0xc4,0xa1,0xf9,0x91,0x9c,0xf0,0x23,0x01,0x00,0x00]
289           kmovd  %k3, 291(%rax,%r14,8)
290
291 // CHECK: kmovq  %rax, %k2
292 // CHECK:  encoding: [0xc4,0xe1,0xfb,0x92,0xd0]
293           kmovq  %rax, %k2
294
295 // CHECK: kmovq  %r8, %k2
296 // CHECK:  encoding: [0xc4,0xc1,0xfb,0x92,0xd0]
297           kmovq  %r8, %k2
298
299 // CHECK: kmovd  %eax, %k4
300 // CHECK:  encoding: [0xc5,0xfb,0x92,0xe0]
301           kmovd  %eax, %k4
302
303 // CHECK: kmovd  %ebp, %k4
304 // CHECK:  encoding: [0xc5,0xfb,0x92,0xe5]
305           kmovd  %ebp, %k4
306
307 // CHECK: kmovd  %r13d, %k4
308 // CHECK:  encoding: [0xc4,0xc1,0x7b,0x92,0xe5]
309           kmovd  %r13d, %k4
310
311 // CHECK: kmovq  %k3, %rax
312 // CHECK:  encoding: [0xc4,0xe1,0xfb,0x93,0xc3]
313           kmovq  %k3, %rax
314
315 // CHECK: kmovq  %k3, %r8
316 // CHECK:  encoding: [0xc4,0x61,0xfb,0x93,0xc3]
317           kmovq  %k3, %r8
318
319 // CHECK: kmovd  %k5, %eax
320 // CHECK:  encoding: [0xc5,0xfb,0x93,0xc5]
321           kmovd  %k5, %eax
322
323 // CHECK: kmovd  %k5, %ebp
324 // CHECK:  encoding: [0xc5,0xfb,0x93,0xed]
325           kmovd  %k5, %ebp
326
327 // CHECK: kmovd  %k5, %r13d
328 // CHECK:  encoding: [0xc5,0x7b,0x93,0xed]
329           kmovd  %k5, %r13d
330
331 // CHECK: vmovdqu8 %zmm18, (%rcx)
332 // CHECK:  encoding: [0x62,0xe1,0x7f,0x48,0x7f,0x11]
333           vmovdqu8 %zmm18, (%rcx)
334
335 // CHECK: vmovdqu8 %zmm18, (%rcx) {%k3}
336 // CHECK:  encoding: [0x62,0xe1,0x7f,0x4b,0x7f,0x11]
337           vmovdqu8 %zmm18, (%rcx) {%k3}
338
339 // CHECK: vmovdqu8 %zmm18, 291(%rax,%r14,8)
340 // CHECK:  encoding: [0x62,0xa1,0x7f,0x48,0x7f,0x94,0xf0,0x23,0x01,0x00,0x00]
341           vmovdqu8 %zmm18, 291(%rax,%r14,8)
342
343 // CHECK: vmovdqu8 %zmm18, 8128(%rdx)
344 // CHECK:  encoding: [0x62,0xe1,0x7f,0x48,0x7f,0x52,0x7f]
345           vmovdqu8 %zmm18, 8128(%rdx)
346
347 // CHECK: vmovdqu8 %zmm18, 8192(%rdx)
348 // CHECK:  encoding: [0x62,0xe1,0x7f,0x48,0x7f,0x92,0x00,0x20,0x00,0x00]
349           vmovdqu8 %zmm18, 8192(%rdx)
350
351 // CHECK: vmovdqu8 %zmm18, -8192(%rdx)
352 // CHECK:  encoding: [0x62,0xe1,0x7f,0x48,0x7f,0x52,0x80]
353           vmovdqu8 %zmm18, -8192(%rdx)
354
355 // CHECK: vmovdqu8 %zmm18, -8256(%rdx)
356 // CHECK:  encoding: [0x62,0xe1,0x7f,0x48,0x7f,0x92,0xc0,0xdf,0xff,0xff]
357           vmovdqu8 %zmm18, -8256(%rdx)
358
359 // CHECK: vmovdqu16 %zmm28, (%rcx)
360 // CHECK:  encoding: [0x62,0x61,0xff,0x48,0x7f,0x21]
361           vmovdqu16 %zmm28, (%rcx)
362
363 // CHECK: vmovdqu16 %zmm28, (%rcx) {%k6}
364 // CHECK:  encoding: [0x62,0x61,0xff,0x4e,0x7f,0x21]
365           vmovdqu16 %zmm28, (%rcx) {%k6}
366
367 // CHECK: vmovdqu16 %zmm28, 291(%rax,%r14,8)
368 // CHECK:  encoding: [0x62,0x21,0xff,0x48,0x7f,0xa4,0xf0,0x23,0x01,0x00,0x00]
369           vmovdqu16 %zmm28, 291(%rax,%r14,8)
370
371 // CHECK: vmovdqu16 %zmm28, 8128(%rdx)
372 // CHECK:  encoding: [0x62,0x61,0xff,0x48,0x7f,0x62,0x7f]
373           vmovdqu16 %zmm28, 8128(%rdx)
374
375 // CHECK: vmovdqu16 %zmm28, 8192(%rdx)
376 // CHECK:  encoding: [0x62,0x61,0xff,0x48,0x7f,0xa2,0x00,0x20,0x00,0x00]
377           vmovdqu16 %zmm28, 8192(%rdx)
378
379 // CHECK: vmovdqu16 %zmm28, -8192(%rdx)
380 // CHECK:  encoding: [0x62,0x61,0xff,0x48,0x7f,0x62,0x80]
381           vmovdqu16 %zmm28, -8192(%rdx)
382
383 // CHECK: vmovdqu16 %zmm28, -8256(%rdx)
384 // CHECK:  encoding: [0x62,0x61,0xff,0x48,0x7f,0xa2,0xc0,0xdf,0xff,0xff]
385           vmovdqu16 %zmm28, -8256(%rdx)