1 # RUN: llvm-mc --disassemble %s -triple=x86_64 | FileCheck %s
6 0xc5 0x04 0xc2 0xc7 0x1f
9 0xc5 0x05 0xc2 0xc7 0x1f
11 # CHECK: vcmptrue_usss
12 0xc5 0x06 0xc2 0xc7 0x1f
14 # CHECK: vcmptrue_ussd
15 0xc5 0x07 0xc2 0xc7 0x1f
18 0xc5 0x04 0xc2 0xc7 0x08
21 0xc5 0x05 0xc2 0xc7 0x08
24 0xc5 0x06 0xc2 0xc7 0x08
27 0xc5 0x07 0xc2 0xc7 0x08
30 0xc5 0x04 0xc2 0xc7 0x00
33 0xc5 0x05 0xc2 0xc7 0x00
36 0xc5 0x06 0xc2 0xc7 0x00
39 0xc5 0x07 0xc2 0xc7 0x00
45 0x66 0x0f 0xc2 0xc7 0x00
48 0xf3 0x0f 0xc2 0xc7 0x00
51 0xf2 0x0f 0xc2 0xc7 0x00
57 0x66 0x0f 0xc2 0xc7 0x07
60 0xf3 0x0f 0xc2 0xc7 0x07
63 0xf2 0x0f 0xc2 0xc7 0x07
65 # CHECK: extrq $2, $3, %xmm0
66 0x66 0x0f 0x78 0xc0 0x03 0x02
68 # CHECK: extrq %xmm1, %xmm0
71 # CHECK: insertq $6, $5, %xmm1, %xmm0
72 0xf2 0x0f 0x78 0xc1 0x05 0x06
74 # CHECK: insertq %xmm1, %xmm0
77 # CHECK: movntsd %xmm0, (%rdi)
80 # CHECK: movntss %xmm0, (%rdi)
83 # CHECK: adcxl %eax, %eax
84 0x66 0x0f 0x38 0xf6 0xc0
86 # CHECK: adcxl (%rax), %eax
87 0x66 0x0f 0x38 0xf6 0x00
89 # CHECK: adcxq %rax, %rax
90 0x66 0x48 0x0f 0x38 0xf6 0xc0
92 # CHECK: adcxq (%rax), %rax
93 0x66 0x48 0x0f 0x38 0xf6 0x00
95 # CHECK: adoxl %eax, %eax
96 0xf3 0x0f 0x38 0xf6 0xc0
98 # CHECK: adoxl (%rax), %eax
99 0xf3 0x0f 0x38 0xf6 0x00
101 # CHECK: adoxq %rax, %rax
102 0xf3 0x48 0x0f 0x38 0xf6 0xc0
104 # CHECK: adoxq (%rax), %rax
105 0xf3 0x48 0x0f 0x38 0xf6 0x00
108 0xc7 0xf8 0x35 0x00 0x00 0x00
111 0x66 0xc7 0xf8 0x35 0x00
119 # CHECK: xsave64 (%rax)
122 # CHECK: xrstor64 (%rax)
125 # CHECK: xsaveopt64 (%rax)
134 # CHECK: movabsb -6066930261531658096, %al
135 0xa0 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab
137 # CHECK: movabsb -6066930261531658096, %al
138 0x48 0xa0 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab
140 # CHECK: movabsw -6066930261531658096, %ax
141 0x66 0xa1 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab
143 # CHECK: movabsl -6066930261531658096, %eax
144 0xa1 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab
146 # CHECK: movabsq -6066930261531658096, %rax
147 0x48 0xa1 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab
149 # CHECK: movabsb %al, -6066930261531658096
150 0xa2 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab
152 # CHECK: movabsb %al, -6066930261531658096
153 0x48 0xa2 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab
155 # CHECK: movabsw %ax, -6066930261531658096
156 0x66 0xa3 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab
158 # CHECK: movabsl %eax, -6066930261531658096
159 0xa3 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab
161 # CHECK: movabsq %rax, -6066930261531658096
162 0x48 0xa3 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab
164 # CHECK: sha1rnds4 $1, %xmm1, %xmm2
165 0x0f 0x3a 0xcc 0xd1 0x01
167 # CHECK: sha1rnds4 $1, (%rax), %xmm2
168 0x0f 0x3a 0xcc 0x10 0x01
170 # CHECK: sha1nexte %xmm1, %xmm2
173 # CHECK: sha1nexte (%rax), %xmm2
176 # CHECK: sha1msg1 %xmm1, %xmm2
179 # CHECK: sha1msg1 (%rax), %xmm2
182 # CHECK: sha1msg2 %xmm1, %xmm2
185 # CHECK: sha1msg2 (%rax), %xmm2
188 # CHECK: sha256rnds2 (%rax), %xmm2
191 # CHECK: sha256rnds2 %xmm1, %xmm2
194 # CHECK: sha256msg1 %xmm1, %xmm2
197 # CHECK: sha256msg1 (%rax), %xmm2
200 # CHECK: sha256msg2 %xmm1, %xmm2
203 # CHECK: sha256msg2 (%rax), %xmm2
230 # CHECK: movq %xmm0, %xmm0
233 # CHECK: vmovq %xmm0, %xmm0
236 # CHECK: vmovq %xmm0, %rax
237 0xc4 0xe1 0xf9 0x7e 0xc0
239 # CHECK: movd (%rax), %mm0
242 # CHECK: movd %rax, %mm0
245 # CHECK: movd %mm0, (%rax)
248 # CHECK: movd %mm0, %rax
251 # CHECK: movd (%rax), %xmm0
252 0x66 0x48 0x0f 0x6e 0x00
254 # CHECK: movd %rax, %xmm0
255 0x66 0x48 0x0f 0x6e 0xc0
257 # CHECK: movd %xmm0, (%rax)
258 0x66 0x48 0x0f 0x7e 0x00
260 # CHECK: movd %xmm0, %rax
261 0x66 0x48 0x0f 0x7e 0xc0
263 # CHECK: pextrw $3, %xmm3, %ecx
264 0x66 0x0f 0x3a 0x15 0xd9 0x03
266 # CHECK: pextrw $3, %xmm3, (%rax)
267 0x66 0x0f 0x3a 0x15 0x18 0x03
269 # CHECK: $0, 305419896(,%r8)
270 0x43 0x80 0x04 0x05 0x78 0x56 0x34 0x12 0x00
272 # CHECK: $0, 305419896(%r13,%r8)
273 0x43 0x80 0x84 0x05 0x78 0x56 0x34 0x12 0x00
275 # CHECK: $0, 305419896(,%r8)
276 0x42 0x80 0x04 0x05 0x78 0x56 0x34 0x12 0x00
278 # CHECK: $0, 305419896(%rbp,%r8)
279 0x42 0x80 0x84 0x05 0x78 0x56 0x34 0x12 0x00
281 # CHECK: $0, 305419896(,%r12)
282 0x42 0x80 0x04 0x25 0x78 0x56 0x34 0x12 0x00
284 # CHECK: $0, 305419896(%rbp,%r12)
285 0x42 0x80 0x84 0x25 0x78 0x56 0x34 0x12 0x00
287 # CHECK: $0, 305419896
288 0x80 0x04 0x25 0x78 0x56 0x34 0x12 0x00
290 # CHECK: $0, 305419896(%rbp)
291 0x80 0x84 0x25 0x78 0x56 0x34 0x12 0x00
293 # CHECK: movabsq 6510615555426900570, %rax
294 0x48 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a
296 # CHECK: movq 1515870810, %rax
297 0x67, 0x48 0xa1 0x5a 0x5a 0x5a 0x5a
299 # CHECK: movabsq %rax, 6510615555426900570
300 0x48 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a
302 # CHECK: movq %rax, 1515870810
303 0x67, 0x48 0xa3 0x5a 0x5a 0x5a 0x5a
305 # CHECK: callq -32769
306 0x66 0xe8 0xff 0x7f 0xff 0xff
308 # CHECK: callq -32769
309 0x66 0x66 0x48 0xe8 0xff 0x7f 0xff 0xff
312 0xe9 0xff 0x7f 0xff 0xff
315 0x66 0xe9 0xff 0x7f 0xff 0xff
318 0x66 0x66 0x48 0xe9 0xff 0x7f 0xff 0xff
321 0x0f 0x82 0xff 0x7f 0xff 0xff
324 0x66 0x0f 0x82 0xff 0x7f 0xff 0xff
327 0x0f 0x83 0xff 0x7f 0xff 0xff
330 0x66 0x0f 0x83 0xff 0x7f 0xff 0xff
333 0x0f 0x84 0xff 0x7f 0xff 0xff
336 0x66 0x0f 0x84 0xff 0x7f 0xff 0xff
339 0x0f 0x85 0xff 0x7f 0xff 0xff
342 0x66 0x0f 0x85 0xff 0x7f 0xff 0xff
345 0x0f 0x86 0xff 0x7f 0xff 0xff
348 0x66 0x0f 0x86 0xff 0x7f 0xff 0xff
351 0x0f 0x87 0xff 0x7f 0xff 0xff
354 0x66 0x0f 0x87 0xff 0x7f 0xff 0xff
357 0x0f 0x88 0xff 0x7f 0xff 0xff
360 0x66 0x0f 0x88 0xff 0x7f 0xff 0xff
363 0x0f 0x89 0xff 0x7f 0xff 0xff
366 0x66 0x0f 0x89 0xff 0x7f 0xff 0xff
369 0x0f 0x8a 0xff 0x7f 0xff 0xff
372 0x66 0x0f 0x8a 0xff 0x7f 0xff 0xff
375 0x0f 0x8b 0xff 0x7f 0xff 0xff
378 0x66 0x0f 0x8b 0xff 0x7f 0xff 0xff
381 0x0f 0x8c 0xff 0x7f 0xff 0xff
384 0x66 0x0f 0x8c 0xff 0x7f 0xff 0xff
387 0x0f 0x8d 0xff 0x7f 0xff 0xff
390 0x66 0x0f 0x8d 0xff 0x7f 0xff 0xff
393 0x0f 0x8e 0xff 0x7f 0xff 0xff
396 0x66 0x0f 0x8e 0xff 0x7f 0xff 0xff
399 0x0f 0x8f 0xff 0x7f 0xff 0xff
402 0x66 0x0f 0x8f 0xff 0x7f 0xff 0xff
404 # CHECK: lcallw *-32769(%rip)
405 0x66 0xff 0x1d 0xff 0x7f 0xff 0xff
407 # CHECK: ljmpw *-32769(%rip)
408 0x66 0xff 0x2d 0xff 0x7f 0xff 0xff
410 # CHECK: psubsb (%rdx), %mm3
413 # CHECK: psubsb (%rdx), %xmm3
416 # CHECK: addq 255(%rip), %rbx
417 0x49, 0x03, 0x1d, 0xff, 0x00, 0x00, 0x00
419 # The following 4 encodings are equivalent, as confirmed by the 'xed64'
420 # decoder tool provided by Intel, which we assume to be canonical even
421 # if the real silicon does something different. If that should happen,
422 # then we'll all have disassembler bugs to repair.
424 # Try all combinations of EVEX.x and REX.b:
425 # CHECK: vaddps 287453952(%rip), %zmm20, %zmm15
426 0x62 0x11 0x5c 0x40 0x58 0x3d 0x00 0x33 0x22 0x11
427 # CHECK: vaddps 287453952(%rip), %zmm20, %zmm15
428 0x62 0x31 0x5c 0x40 0x58 0x3d 0x00 0x33 0x22 0x11
429 # CHECK: vaddps 287453952(%rip), %zmm20, %zmm15
430 0x62 0x51 0x5c 0x40 0x58 0x3d 0x00 0x33 0x22 0x11
431 # CHECK: vaddps 287453952(%rip), %zmm20, %zmm15
432 0x62 0x71 0x5c 0x40 0x58 0x3d 0x00 0x33 0x22 0x11
434 # Known bugs: these use a SIB byte. The index register is incorrectly
435 # printed as an xmm register. Indeed there are "gather" load instructions
436 # taking a vector of indices, but ONLY those instructions can do that.
437 # The CHECK lines test the current incorrect output; FIXME is desired.
438 # CHECK: vaddps (%r10,%xmm9), %zmm20, %zmm15
439 # FIXME: vaddps (%r10,%r9), %zmm20, %zmm15
440 0x62 0x11 0x5c 0x40 0x58 0x3c 0x0a
442 # CHECK: vaddps (%rdx,%xmm9), %zmm20, %zmm15
443 # FIXME: vaddps (%rdx,%r9), %zmm20, %zmm15
444 0x62 0x31 0x5c 0x40 0x58 0x3c 0x0a
446 # CHECK: vaddps (%r10,%xmm1), %zmm20, %zmm15
447 # FIXME: vaddps (%r10,%rcx), %zmm20, %zmm15
448 0x62 0x51 0x5c 0x40 0x58 0x3c 0x0a
450 # CHECK: vaddps (%rdx,%xmm1), %zmm20, %zmm15
451 # FIXME: vaddps (%rdx,%rcx), %zmm20, %zmm15
452 0x62 0x71 0x5c 0x40 0x58 0x3c 0x0a
455 0xe8 0xff 0x7f 0x00 0x00
457 # CHECK: callq -32769
458 0xe8 0xff 0x7f 0xff 0xff