xref: /llvm-project/llvm/test/MC/Disassembler/X86/avx-512.txt (revision 49bef60b99de3cf4df94c7c4e8d9681a866ade89)
1# RUN: llvm-mc --disassemble %s -triple=x86_64-apple-darwin9 -mcpu=knl | FileCheck %s
2# RUN: llvm-mc --disassemble %s -triple=x86_64-apple-darwin9 -mcpu=skx | FileCheck --check-prefix=CHECK-SKX %s
3
4# CHECK: vpbroadcastd    %xmm18, %zmm28 {%k7} {z}
50x62 0x22 0x7d 0xcf 0x58 0xe2
6
7# CHECK: vbroadcastss    (%rsp), %zmm28
80x62 0x62 0x7d 0x48 0x18 0x24 0x24
9
10# CHECK: vblendmpd       (%rsi), %zmm2, %zmm8 {%k7}
110x62 0x72 0xed 0x4f 0x65 0x06
12
13# CHECK: vpermpd (%rsi,%r10,4), %zmm2, %zmm8
140x62 0x32 0xed 0x48 0x16 0x04 0x96
15
16# CHECK: vpbroadcastmw2d %k2, %zmm8
170x62 0x72 0x7e 0x48 0x3a 0xc2
18
19# CHECK-SKX: vpbroadcastmw2d %k2, %xmm8
200x62 0x72 0x7e 0x08 0x3a 0xc2
21
22# CHECK-SKX: vpbroadcastmw2d %k2, %ymm8
230x62 0x72 0x7e 0x28 0x3a 0xc2
24
25# CHECK: vpbroadcastq    (%r9,%rax), %zmm28
260x62 0x42 0xfd 0x48 0x59 0x24 0x01
27
28# CHECK: vbroadcastss    %xmm0, %zmm1
290x62 0xf2 0x7d 0x48 0x18 0xc8
30
31# CHECK: vextracti32x4   $4, %zmm0, (%r10)
320x62 0xd3 0x7d 0x48 0x39 0x02 0x04
33
34# CHECK: vextracti32x4   $4, %zmm0, %xmm1
350x62 0xf3 0x7d 0x48 0x39 0xc1 0x04
36
37# CHECK: vinserti32x4    $1, %xmm21, %zmm5, %zmm17
380x62 0xa3 0x55 0x48 0x38 0xcd 0x01
39
40# CHECK: vmovaps %zmm21, %zmm5 {%k3}
410x62 0xb1 0x7c 0x4b 0x28 0xed
42
43# CHECK: vgatherdps      (%rsi,%zmm0,4), %zmm1 {%k2}
440x62 0xf2 0x7d 0x4a 0x92 0x0c 0x86
45
46# CHECK: vgatherdpd      (%rsi,%ymm0,4), %zmm1 {%k2}
470x62 0xf2 0xfd 0x4a 0x92 0x0c 0x86
48
49# CHECK: vgatherqps (%r13,%zmm4), %ymm5 {%k2}
500x62 0xd2 0x7d 0x4a 0x93 0x6c 0x25 0x00
51
52# CHECK: vpslld $16, %zmm21, %zmm22
530x62 0xb1 0x4d 0x40 0x72 0xf5 0x10
54
55# CHECK: vpord %zmm22, %zmm21, %zmm23
560x62 0xa1 0x55 0x40 0xeb 0xfe
57
58# CHECK: vmovq   %xmm19, 1016(%rdx)
590x62 0xe1 0xfd 0x08 0x7e 0x5a 0x7f
60
61#####################################################
62#                MASK INSTRUCTIONS                  #
63#####################################################
64
65# CHECK: kshiftlw        $3, %k1, %k2
660xc4 0xe3 0xf9 0x32 0xd1 0x03
67
68# CHECK: kmovw   (%rdi), %k1
690xc5 0xf8 0x90 0x0f
70
71# CHECK: kmovw   %k1, %eax
720xc5 0xf8 0x93 0xc1
73
74# CHECK: kandw   %k1, %k2, %k3
750xc5 0xec 0x41 0xd9
76
77# CHECK: kmovw   %k5, %k1
780xc5 0xf8 0x90 0xcd
79
80#####################################################
81#             COMPRESSED DISPLACEMENT               #
82#####################################################
83
84# TupleType = FVM
85# CHECK: vmovdqu32 %zmm0, -448(%rcx)
860x62 0xf1 0x7e 0x48 0x7f 0x41 0xf9
87
88# TupleType = T1S, 64-bit eltsize
89# CHECK: vaddsd 256(%rdx), %xmm0, %xmm16
900x62 0xe1 0xff 0x08 0x58 0x42 0x20
91
92# TupleType = T1S, 32-bit eltsize
93# CHECK: vaddss 256(%rdx), %xmm0, %xmm16
940x62 0xe1 0x7e 0x08 0x58 0x42 0x40
95
96# TupleType = FV
97# CHECK: vaddpd 256(%rdx), %zmm0, %zmm16
980x62 0xe1 0xfd 0x48 0x58 0x42 0x04
99
100# TupleType = FV, broadcast, 64-bit eltsize
101# CHECK: vaddpd 256(%rdx){1to8}, %zmm0, %zmm16
1020x62 0xe1 0xfd 0x58 0x58 0x42 0x20
103
104# TupleType = FV, broadcast, 32-bit eltsize
105# CHECK: vaddps 256(%rdx){1to16}, %zmm0, %zmm16
1060x62 0xe1 0x7c 0x58 0x58 0x42 0x40
107
108# TupleType = T4
109# CHECK: vbroadcasti32x4 256(%rdx), %zmm16
1100x62 0xe2 0x7d 0x48 0x5a 0x42 0x10
111
112# Cases where we can't use cdisp8
113# CHECK: vaddss 255(%rdx), %xmm0, %xmm16
1140x62 0xe1 0x7e 0x08 0x58 0x82 0xff 0x00 0x00 0x00
115
116# CHECK: vaddss 1024(%rdx), %xmm0, %xmm16
1170x62 0xe1 0x7e 0x08 0x58 0x82 0x00 0x04 0x00 0x00
118
119# CHECK: vpcmpeqd %zmm10, %zmm25, %k5
1200x62 0xd3 0x35 0x40 0x1f 0xea 0x0
121
122# CHECK: vpcmpltd %zmm10, %zmm25, %k5
1230x62 0xd3 0x35 0x40 0x1f 0xea 0x1
124
125# CHECK: vpcmpled %zmm10, %zmm25, %k5
1260x62 0xd3 0x35 0x40 0x1f 0xea 0x2
127
128# CHECK: vpcmpd $3, %zmm10, %zmm25, %k5
1290x62 0xd3 0x35 0x40 0x1f 0xea 0x3
130
131# CHECK: vpcmpneqd %zmm10, %zmm25, %k5
1320x62 0xd3 0x35 0x40 0x1f 0xea 0x4
133
134# CHECK: vpcmpnltd %zmm10, %zmm25, %k5
1350x62 0xd3 0x35 0x40 0x1f 0xea 0x5
136
137# CHECK: vpcmpnled %zmm10, %zmm25, %k5
1380x62 0xd3 0x35 0x40 0x1f 0xea 0x6
139
140# CHECK: vpcmpd $7, %zmm10, %zmm25, %k5
1410x62 0xd3 0x35 0x40 0x1f 0xea 0x7
142
143# CHECK: vpcmpd $8, %zmm10, %zmm25, %k5
1440x62 0xd3 0x35 0x40 0x1f 0xea 0x8
145
146# CHECK: vcmppd	$127, {sae}, %zmm27, %zmm11, %k4
1470x62 0x91 0xa5 0x58 0xc2 0xe3 0x7f
148
149# CHECK: vcmpsd	$204, (%rax), %xmm4, %k5
1500x62 0xf1 0xdf 0x8 0xc2 0x28 0xcc
151
152# CHECK: vcmpss	$204, (%rax), %xmm4, %k5
1530x62 0xf1 0x5e 0x08 0xc2 0x28 0xcc
154
155# CHECK: vcmpsd	$204, %xmm3, %xmm4, %k5
1560x62 0xf1 0xdf 0x08 0xc2 0xeb 0xcc
157
158# CHECK: vcmpss	$204, %xmm3, %xmm4, %k5
1590x62 0xf1 0x5e 0x08 0xc2 0xeb 0xcc
160
161# CHECK: vcmpsd	$204, {sae}, %xmm3, %xmm4, %k5
1620x62 0xf1 0xdf 0x18 0xc2 0xeb 0xcc
163
164# CHECK: vcmpss	$204, {sae}, %xmm3, %xmm4, %k5
1650x62 0xf1 0x5e 0x18 0xc2 0xeb 0xcc
166
167# CHECK: vcmppd	$127, %ymm27, %ymm11, %k4
1680x62 0x91 0xa5 0x28 0xc2 0xe3 0x7f
169
170# CHECK: vcmpps	$127, %ymm27, %ymm11, %k4
1710x62 0x91 0x24 0x28 0xc2 0xe3 0x7f
172
173# CHECK: vcmppd	$127, %xmm27, %xmm11, %k4
1740x62 0x91 0xa5 0x08 0xc2 0xe3 0x7f
175
176# CHECK: vcmpps	$127, %xmm27, %xmm11, %k4
1770x62 0x91 0x24 0x08 0xc2 0xe3 0x7f
178
179# CHECK: vcmpps	$37, %xmm1, %xmm0, %k1 {%k7}
1800x62 0xf1 0x7c 0x0f 0xc2 0xc9 0x25
181
182# CHECK: vcmpps	$37, %ymm1, %ymm0, %k1 {%k7}
1830x62 0xf1 0x7c 0x2f 0xc2 0xc9 0x25
184
185# CHECK: vpgatherdd 256(%r9,%xmm31), %xmm17 {%k1}
1860x62 0x82 0x7d 0x01 0x90 0x4c 0x39 0x40
187
188# CHECK: vpgatherdd 256(%r9,%ymm31), %ymm19 {%k1}
1890x62 0x82 0x7d 0x21 0x90 0x5c 0x39 0x40
190
191# CHECK: vpgatherdq 256(%r9,%xmm31), %xmm17 {%k1}
1920x62 0x82 0xfd 0x01 0x90 0x4c 0x39 0x20
193
194# CHECK: vpgatherdq 256(%r9,%xmm31), %ymm26 {%k1}
1950x62 0x02 0xfd 0x21 0x90 0x54 0x39 0x20
196
197# CHECK: vpgatherqd 256(%r9,%xmm31), %xmm21 {%k1}
1980x62 0x82 0x7d 0x01 0x91 0x6c 0x39 0x40
199
200# CHECK: vpgatherqd 256(%r9,%ymm31), %xmm25 {%k1}
2010x62 0x02 0x7d 0x21 0x91 0x4c 0x39 0x40
202
203# CHECK: vpgatherqq 256(%r9,%xmm31), %xmm18 {%k1}
2040x62 0x82 0xfd 0x01 0x91 0x54 0x39 0x20
205
206# CHECK: vpgatherqq 256(%r9,%ymm31), %ymm19 {%k1}
2070x62 0x82 0xfd 0x21 0x91 0x5c 0x39 0x20
208
209# CHECK: vgatherdpd 256(%r9,%xmm31), %xmm17 {%k1}
2100x62 0x82 0xfd 0x01 0x92 0x4c 0x39 0x20
211
212# CHECK: vgatherdpd 256(%r9,%xmm31), %ymm23 {%k1}
2130x62 0x82 0xfd 0x21 0x92 0x7c 0x39 0x20
214
215# CHECK: vgatherdps 256(%r9,%xmm31), %xmm18 {%k1}
2160x62 0x82 0x7d 0x01 0x92 0x54 0x39 0x40
217
218# CHECK: vgatherdps 256(%r9,%ymm31), %ymm27 {%k1}
2190x62 0x02 0x7d 0x21 0x92 0x5c 0x39 0x40
220
221# CHECK: vgatherqpd 256(%r9,%xmm31), %xmm17 {%k1}
2220x62 0x82 0xfd 0x01 0x93 0x4c 0x39 0x20
223
224# CHECK: vgatherqpd 256(%r9,%ymm31), %ymm29 {%k1}
2250x62 0x02 0xfd 0x21 0x93 0x6c 0x39 0x20
226
227# CHECK: vgatherqps 256(%r9,%xmm31), %xmm21 {%k1}
2280x62 0x82 0x7d 0x01 0x93 0x6c 0x39 0x40
229
230# CHECK: vgatherqps 256(%r9,%ymm31), %xmm19 {%k1}
2310x62 0x82 0x7d 0x21 0x93 0x5c 0x39 0x40
232
233# CHECK: vpscatterdd %xmm20, 256(%r9,%xmm31) {%k1}
2340x62 0x82 0x7d 0x01 0xa0 0x64 0x39 0x40
235
236# CHECK: vpscatterdd %ymm28, 256(%r9,%ymm31) {%k1}
2370x62 0x02 0x7d 0x21 0xa0 0x64 0x39 0x40
238
239# CHECK: vpscatterdq %xmm21, 256(%r9,%xmm31) {%k1}
2400x62 0x82 0xfd 0x01 0xa0 0x6c 0x39 0x20
241
242# CHECK: vpscatterdq %ymm28, 256(%r9,%xmm31) {%k1}
2430x62 0x02 0xfd 0x21 0xa0 0x64 0x39 0x20
244
245# CHECK: vpscatterqd %xmm22, 256(%r9,%xmm31) {%k1}
2460x62 0x82 0x7d 0x01 0xa1 0x74 0x39 0x40
247
248# CHECK: vpscatterqd %xmm24, 256(%r9,%ymm31) {%k1}
2490x62 0x02 0x7d 0x21 0xa1 0x44 0x39 0x40
250
251# CHECK: vpscatterqq %xmm28, 256(%r9,%xmm31) {%k1}
2520x62 0x02 0xfd 0x01 0xa1 0x64 0x39 0x20
253
254# CHECK: vpscatterqq %ymm19, 256(%r9,%ymm31) {%k1}
2550x62 0x82 0xfd 0x21 0xa1 0x5c 0x39 0x20
256
257# CHECK: vscatterdps %xmm20, 256(%r9,%xmm31) {%k1}
2580x62 0x82 0x7d 0x01 0xa2 0x64 0x39 0x40
259
260# CHECK: vscatterdps %ymm28, 256(%r9,%ymm31) {%k1}
2610x62 0x02 0x7d 0x21 0xa2 0x64 0x39 0x40
262
263# CHECK: vscatterdpd %xmm21, 256(%r9,%xmm31) {%k1}
2640x62 0x82 0xfd 0x01 0xa2 0x6c 0x39 0x20
265
266# CHECK: vscatterdpd %ymm28, 256(%r9,%xmm31) {%k1}
2670x62 0x02 0xfd 0x21 0xa2 0x64 0x39 0x20
268
269# CHECK: vscatterqps %xmm22, 256(%r9,%xmm31) {%k1}
2700x62 0x82 0x7d 0x01 0xa3 0x74 0x39 0x40
271
272# CHECK: vscatterqps %xmm24, 256(%r9,%ymm31) {%k1}
2730x62 0x02 0x7d 0x21 0xa3 0x44 0x39 0x40
274
275# CHECK: vscatterqpd %xmm28, 256(%r9,%xmm31) {%k1}
2760x62 0x02 0xfd 0x01 0xa3 0x64 0x39 0x20
277
278# CHECK: vscatterqpd %ymm19, 256(%r9,%ymm31) {%k1}
2790x62 0x82 0xfd 0x21 0xa3 0x5c 0x39 0x20
280
281#####################################################
282#                  SAE ATTRIBUTE                    #
283#####################################################
284
285# CHECK: vcomisd {sae}, %xmm2, %xmm1
2860x62 0xf1 0xfd 0x18 0x2f 0xca
287
288# Same as above but ignore EVEX L'L bits.
289# CHECK: vcomisd {sae}, %xmm2, %xmm1
2900x62 0xf1 0xfd 0x78 0x2f 0xca
291
292# CHECK: vminpd  {sae}, %zmm2, %zmm17, %zmm19
2930x62 0xe1 0xf5 0x10 0x5d 0xda
294
295# Ignore EVEX L'L bits.
296# CHECK: vminpd  {sae}, %zmm2, %zmm17, %zmm19
2970x62 0xe1 0xf5 0x30 0x5d 0xda
298
299# Ignore EVEX L'L bits.
300# CHECK: vminpd  {sae}, %zmm2, %zmm17, %zmm19
3010x62 0xe1 0xf5 0x50 0x5d 0xda
302
303# Ignore EVEX L'L bits.
304# CHECK: vminpd  {sae}, %zmm2, %zmm17, %zmm19
3050x62 0xe1 0xf5 0x70 0x5d 0xda
306
307# CHECK: vcmppd  $127, {sae}, %zmm27, %zmm11, %k4
3080x62 0x91 0xa5 0x18 0xc2 0xe3 0x7f
309
310# CHECK: vrsqrt28pd {sae}, %zmm2, %zmm17
3110x62 0xe2 0xfd 0x18 0xcc 0xca
312
313#####################################################
314#                 ROUNDING CONTROL                  #
315#####################################################
316
317# Verify all rounding modes work.
318
319# CHECK: vaddps {rn-sae}, %zmm2, %zmm17, %zmm19
3200x62 0xe1 0x74 0x10 0x58 0xda
321
322# CHECK: vaddps {rd-sae}, %zmm2, %zmm17, %zmm19
3230x62 0xe1 0x74 0x30 0x58 0xda
324
325# CHECK: vaddps {ru-sae}, %zmm2, %zmm17, %zmm19
3260x62 0xe1 0x74 0x50 0x58 0xda
327
328# CHECK: vaddps {rz-sae}, %zmm2, %zmm17, %zmm19
3290x62 0xe1 0x74 0x70 0x58 0xda
330
331# CHECK: vmulss {rn-sae}, %xmm2, %xmm17, %xmm19
3320x62 0xe1 0x76 0x10 0x59 0xda
333
334# CHECK: vmulss {rd-sae}, %xmm2, %xmm17, %xmm19
3350x62 0xe1 0x76 0x30 0x59 0xda
336
337# CHECK: vmulss {ru-sae}, %xmm2, %xmm17, %xmm19
3380x62 0xe1 0x76 0x50 0x59 0xda
339
340# CHECK: vmulss {rz-sae}, %xmm2, %xmm17, %xmm19
3410x62 0xe1 0x76 0x70 0x59 0xda
342
343# CHECK: vscalefpd {rn-sae}, %zmm2, %zmm17, %zmm19
3440x62 0xe2 0xf5 0x10 0x2c 0xda
345
346# CHECK: vscalefpd {rd-sae}, %zmm2, %zmm17, %zmm19
3470x62 0xe2 0xf5 0x30 0x2c 0xda
348
349# CHECK: vscalefpd {ru-sae}, %zmm2, %zmm17, %zmm19
3500x62 0xe2 0xf5 0x50 0x2c 0xda
351
352# CHECK: vscalefpd {rz-sae}, %zmm2, %zmm17, %zmm19
3530x62 0xe2 0xf5 0x70 0x2c 0xda
354
355# CHECK: vcvtqq2ps {rd-sae}, %zmm2, %ymm17
3560x62 0xe1 0xfc 0x38 0x5b 0xca
357
358# CHECK: vsqrtpd {rd-sae}, %zmm2, %zmm17
3590x62 0xe1 0xfd 0x38 0x51 0xca
360