1 # RUN: llvm-mc --disassemble %s -triple=i686-apple-darwin9 | FileCheck %s
26 # PR8873: some instructions not recognized in 32-bit mode
34 # CHECK: crc32b %al, %eax
35 0xf2 0x0f 0x38 0xf0 0xc0
37 # CHECK: crc32w %ax, %eax
38 0x66 0xf2 0x0f 0x38 0xf1 0xc0
40 # CHECK: crc32l %eax, %eax
41 0xf2 0x0f 0x38 0xf1 0xc0
51 # CHECK: addb %al, (%eax)
55 0xe8 0x2e 0xfb 0xff 0xff
126 # CHECK: movl $0, -4(%ebp)
127 0xc7 0x45 0xfc 0x00 0x00 0x00 0x00
129 # CHECK: movl %cr0, %ecx
132 # CHECK: leal 4(%esp), %ecx
135 # CHECK: enter $1, $2
138 # CHECK: movw $47416, -66(%ebp)
139 0x66 0xc7 0x45 0xbe 0x38 0xb9
141 # CHECK: vaddpd %ymm5, %ymm1, %ymm0
142 0xc4 0xc1 0x75 0x58 0xc5
144 # CHECK: vaddps %ymm3, %ymm1, %ymm0
147 # CHECK: vandpd %ymm5, %ymm1, %ymm0
148 0xc4 0xc1 0x75 0x54 0xc5
150 # CHECK: vandps %ymm3, %ymm1, %ymm0
156 # CHECK: vcvtps2pd %xmm0, %ymm0
159 # CHECK: vandps (%edx), %xmm1, %xmm7
162 # CHECK: vcvtss2si %xmm0, %eax
165 # CHECK: vcvtsd2si %xmm0, %eax
168 # CHECK: vcvtsd2si %xmm0, %eax
169 0xc4 0xe1 0x7b 0x2d 0xc0
171 # CHECK: vmaskmovpd %xmm0, %xmm1, (%eax)
172 0xc4 0xe2 0x71 0x2f 0x00
174 # CHECK: vmovapd %xmm0, %xmm2
177 # Check these special case instructions that the immediate is not sign-extend.
178 # CHECK: blendps $129, %xmm2, %xmm1
179 0x66 0x0f 0x3a 0x0c 0xca 0x81
181 # CHECK: blendpd $129, %xmm2, %xmm1
182 0x66 0x0f 0x3a 0x0d 0xca 0x81
184 # CHECK: pblendw $129, %xmm2, %xmm1
185 0x66 0x0f 0x3a 0x0e 0xca 0x81
187 # CHECK: mpsadbw $129, %xmm2, %xmm1
188 0x66 0x0f 0x3a 0x42 0xca 0x81
190 # CHECK: dpps $129, %xmm2, %xmm1
191 0x66 0x0f 0x3a 0x40 0xca 0x81
193 # CHECK: dppd $129, %xmm2, %xmm1
194 0x66 0x0f 0x3a 0x41 0xca 0x81
196 # CHECK: insertps $129, %xmm2, %xmm1
197 0x66 0x0f 0x3a 0x21 0xca 0x81
199 # CHECK: vblendps $129, %ymm2, %ymm5, %ymm1
200 0xc4 0xe3 0x55 0x0c 0xca 0x81
202 # CHECK: vblendps $129, (%eax), %ymm5, %ymm1
203 0xc4 0xe3 0x55 0x0c 0x08 0x81
205 # CHECK: vblendpd $129, %ymm2, %ymm5, %ymm1
206 0xc4 0xe3 0x55 0x0d 0xca 0x81
208 # CHECK: vblendpd $129, (%eax), %ymm5, %ymm1
209 0xc4 0xe3 0x55 0x0d 0x08 0x81
211 # CHECK: vpblendw $129, %xmm2, %xmm5, %xmm1
212 0xc4 0xe3 0x51 0x0e 0xca 0x81
214 # CHECK: vmpsadbw $129, %xmm2, %xmm5, %xmm1
215 0xc4 0xe3 0x51 0x42 0xca 0x81
217 # CHECK: vdpps $129, %ymm2, %ymm5, %ymm1
218 0xc4 0xe3 0x55 0x40 0xca 0x81
220 # CHECK: vdpps $129, (%eax), %ymm5, %ymm1
221 0xc4 0xe3 0x55 0x40 0x08 0x81
223 # CHECK: vdppd $129, %xmm2, %xmm5, %xmm1
224 0xc4 0xe3 0x51 0x41 0xca 0x81
226 # CHECK: vinsertps $129, %xmm3, %xmm2, %xmm1
227 0xc4 0xe3 0x69 0x21 0xcb 0x81
232 # CHECK: addl %eax, %edi
235 # CHECK: addl %edi, %eax
238 # CHECK: movl %eax, %edi
241 # CHECK: movl %edi, %eax
244 # CHECK: movups %xmm1, %xmm0
247 # CHECK: movups %xmm0, %xmm1
250 # CHECK: movaps %xmm1, %xmm0
253 # CHECK: movaps %xmm0, %xmm1
256 # CHECK: movupd %xmm1, %xmm0
259 # CHECK: movupd %xmm0, %xmm1
262 # CHECK: movapd %xmm1, %xmm0
265 # CHECK: movapd %xmm0, %xmm1
268 # CHECK: vmovups %xmm1, %xmm0
271 # CHECK: vmovups %xmm0, %xmm1
274 # CHECK: vmovaps %xmm1, %xmm0
277 # CHECK: vmovaps %xmm0, %xmm1
280 # CHECK: vmovupd %xmm1, %xmm0
283 # CHECK: vmovupd %xmm0, %xmm1
286 # CHECK: vmovapd %xmm1, %xmm0
289 # CHECK: vmovapd %xmm0, %xmm1
292 # CHECK: vmovups %ymm1, %ymm0
295 # CHECK: vmovups %ymm0, %ymm1
298 # CHECK: vmovaps %ymm1, %ymm0
301 # CHECK: vmovaps %ymm0, %ymm1
304 # CHECK: movdqa %xmm1, %xmm0
307 # CHECK: movdqa %xmm0, %xmm1
310 # CHECK: movdqu %xmm1, %xmm0
313 # CHECK: movdqu %xmm0, %xmm1
316 # CHECK: vmovdqa %xmm1, %xmm0
319 # CHECK: vmovdqa %xmm0, %xmm1
322 # CHECK: vmovdqa %ymm1, %ymm0
325 # CHECK: vmovdqa %ymm0, %ymm1
328 # CHECK: vmovdqu %xmm1, %xmm0
331 # CHECK: vmovdqu %xmm0, %xmm1
334 # CHECK: vmovdqu %ymm1, %ymm0
337 # CHECK: vmovdqu %ymm0, %ymm1
340 # CHECK: vblendvps %xmm4, %xmm1, %xmm2, %xmm3
341 0xc4 0xe3 0x69 0x4a 0xd9 0x41
343 # CHECK: vroundpd $0, %xmm0, %xmm0
344 0xc4 0xe3 0x79 0x09 0xc0 0x00
346 # CHECK: vroundps $0, %xmm0, %xmm0
347 0xc4 0xe3 0x79 0x08 0xc0 0x00
349 # CHECK: vroundpd $0, %ymm0, %ymm0
350 0xc4 0xe3 0x7d 0x09 0xc0 0x00
352 # CHECK: vroundps $0, %ymm0, %ymm0
353 0xc4 0xe3 0x7d 0x08 0xc0 0x00
355 # CHECK: vroundss $0, %xmm0, %xmm0, %xmm0
356 0xc4 0xe3 0x79 0x0a 0xc0 0x00
358 # CHECK: vroundsd $0, %xmm0, %xmm0, %xmm0
359 0xc4 0xe3 0x79 0x0b 0xc0 0x00
361 # CHECK: invept (%eax), %eax
362 0x66 0x0f 0x38 0x80 0x00
364 # CHECK: invvpid (%eax), %eax
365 0x66 0x0f 0x38 0x81 0x00
367 # CHECK: invpcid (%eax), %eax
368 0x66 0x0f 0x38 0x82 0x00
373 # CHECK: addb $0, %al
376 # CHECK: addw $0, %ax
379 # CHECK: addl $0, %eax
380 0x05 0x00 0x00 0x00 0x00
382 # CHECK: adcb $0, %al
385 # CHECK: adcw $0, %ax
388 # CHECK: adcl $0, %eax
389 0x15 0x00 0x00 0x00 0x00
391 # CHECK: cmpb $0, %al
394 # CHECK: cmpw $0, %ax
397 # CHECK: cmpl $0, %eax
398 0x3d 0x00 0x00 0x00 0x00
400 # CHECK: testb $0, %al
403 # CHECK: testw $0, %ax
406 # CHECK: testl $0, %eax
407 0xa9 0x00 0x00 0x00 0x00
410 0xa0 0x00 0x00 0x00 0x00
413 0x66 0xa1 0x00 0x00 0x00 0x00
415 # CHECK: movl 0, %eax
416 0xa1 0x00 0x00 0x00 0x00
419 0xa2 0x00 0x00 0x00 0x00
422 0x66 0xa3 0x00 0x00 0x00 0x00
424 # CHECK: movl %eax, 0
425 0xa3 0x00 0x00 0x00 0x00
427 # CHECK: cmpordpd %xmm7, %xmm0
428 0x66 0x0f 0xc2 0xc7 0x07
430 # CHECK: cmpordps %xmm7, %xmm0
433 # CHECK: cmpordsd %xmm7, %xmm0
434 0xf2 0x0f 0xc2 0xc7 0x07
436 # CHECK: cmpordss %xmm7, %xmm0
437 0xf3 0x0f 0xc2 0xc7 0x07
439 # CHECK: vaddps %xmm3, %xmm7, %xmm0
440 0xc4 0xe1 0x00 0x58 0xc3
442 # CHECK: movbel (%eax), %eax
445 # CHECK: movbel %eax, (%eax)
448 # CHECK: movbew (%eax), %ax
449 0x66 0x0f 0x38 0xf0 0x00
451 # CHECK: movbew %ax, (%eax)
452 0x66 0x0f 0x38 0xf1 0x00
457 # CHECK: rdrandl %eax
460 # CHECK: vroundss $0, %xmm0, %xmm0, %xmm0
461 0xc4 0xe3 0x7d 0x0a 0xc0 0x00
463 # CHECK: vroundsd $0, %xmm0, %xmm0, %xmm0
464 0xc4 0xe3 0x7d 0x0b 0xc0 0x00
466 # CHECK: vcvtsd2si %xmm0, %eax
467 0xc4 0xe1 0x7f 0x2d 0xc0
469 # CHECK: vcvtsd2si %xmm0, %eax
470 0xc4 0xe1 0xff 0x2d 0xc0
472 # CHECK: vucomisd %xmm1, %xmm0
475 # CHECK: vucomiss %xmm1, %xmm0
478 # CHECK: vcomisd %xmm1, %xmm0
481 # CHECK: vcomiss %xmm1, %xmm0
484 # CHECK: vaddss %xmm1, %xmm0, %xmm0
487 # CHECK: xsave (%eax)
490 # CHECK: xrstor (%eax)
493 # CHECK: xsaveopt (%eax)
496 # CHECK: xsaves (%eax)
499 # CHECK: xrstors (%eax)
502 # CHECK: xsavec (%eax)
505 # CHECK: clflush (%eax)
508 # CHECK: clflushopt (%eax)
517 # CHECK: vcvtph2ps %xmm0, %xmm0
518 0xc4 0xe2 0x79 0x13 0xc0
520 # CHECK: vcvtph2ps (%eax), %xmm0
521 0xc4 0xe2 0x79 0x13 0x00
523 # CHECK: vcvtph2ps %xmm0, %ymm0
524 0xc4 0xe2 0x7d 0x13 0xc0
526 # CHECK: vcvtph2ps (%eax), %ymm0
527 0xc4 0xe2 0x7d 0x13 0x00
529 # CHECK: vcvtps2ph $0, %xmm0, %xmm0
530 0xc4 0xe3 0x79 0x1d 0xc0 0x00
532 # CHECK: vcvtps2ph $0, %xmm0, (%eax)
533 0xc4 0xe3 0x79 0x1d 0x00 0x00
535 # CHECK: vcvtps2ph $0, %ymm0, %xmm0
536 0xc4 0xe3 0x7d 0x1d 0xc0 0x00
538 # CHECK: vcvtps2ph $0, %ymm0, (%eax)
539 0xc4 0xe3 0x7d 0x1d 0x00 0x00
541 # CHECK: popcntl %eax, %eax
544 # CHECK: popcntw %ax, %ax
545 0x66 0xf3 0x0f 0xb8 0xc0
547 # CHECK: lzcntl %eax, %eax
550 # CHECK: lzcntw %ax, %ax
551 0x66 0xf3 0x0f 0xbd 0xc0
553 # CHECK: tzcntl %eax, %eax
556 # CHECK: tzcntw %ax, %ax
557 0x66 0xf3 0x0f 0xbc 0xc0
559 # CHECK: andnl %ecx, %edi, %eax
560 0xc4 0xe2 0x00 0xf2 0xc1
562 # CHECK: andnl (%eax), %edi, %eax
563 0xc4 0xe2 0x00 0xf2 0x00
565 # CHECK: andnl %ecx, %edi, %eax
566 0xc4 0xe2 0x80 0xf2 0xc1
568 # CHECK: andnl (%eax), %edi, %eax
569 0xc4 0xe2 0x80 0xf2 0x00
571 # CHECK: blsrl (%eax), %edi
572 0xc4 0xe2 0x40 0xf3 0x08
574 # CHECK: blsmskl (%eax), %edi
575 0xc4 0xe2 0x40 0xf3 0x10
577 # CHECK: blsil (%eax), %edi
578 0xc4 0xe2 0x40 0xf3 0x18
580 # CHECK: bextrl %esi, (%eax), %edx
581 0xc4 0xe2 0x08 0xf7 0x10
583 # CHECK: bextrl %esi, %ebx, %edx
584 0xc4 0xe2 0x08 0xf7 0xd3
586 # CHECK: bzhil %esi, (%eax), %edx
587 0xc4 0xe2 0x08 0xf5 0x10
589 # CHECK: bzhil %esi, %ebx, %edx
590 0xc4 0xe2 0x08 0xf5 0xd3
592 # CHECK: pextl %esp, %ecx, %edx
593 0xc4 0xe2 0x72 0xf5 0xd4
595 # CHECK: pextl (%eax), %ecx, %edx
596 0xc4 0xe2 0x72 0xf5 0x10
598 # CHECK: pdepl %esp, %ecx, %edx
599 0xc4 0xe2 0x73 0xf5 0xd4
601 # CHECK: pdepl (%eax), %ecx, %edx
602 0xc4 0xe2 0x73 0xf5 0x10
604 # CHECK: mulxl %esp, %ecx, %edx
605 0xc4 0xe2 0x73 0xf6 0xd4
607 # CHECK: mulxl (%eax), %ecx, %edx
608 0xc4 0xe2 0x73 0xf6 0x10
610 # CHECK: mulxl %esp, %ecx, %edx
611 0xc4 0xe2 0xf3 0xf6 0xd4
613 # CHECK: mulxl (%eax), %ecx, %edx
614 0xc4 0xe2 0xf3 0xf6 0x10
616 # CHECK: rorxl $1, %esp, %edx
617 0xc4 0xe3 0x7b 0xf0 0xd4 0x01
619 # CHECK: rorxl $31, (%eax), %edx
620 0xc4 0xe3 0x7b 0xf0 0x10 0x1f
622 # CHECK: shlxl %esi, (%eax), %edx
623 0xc4 0xe2 0x09 0xf7 0x10
625 # CHECK: shlxl %esi, %ebx, %edx
626 0xc4 0xe2 0x09 0xf7 0xd3
628 # CHECK: sarxl %esi, (%eax), %edx
629 0xc4 0xe2 0x0a 0xf7 0x10
631 # CHECK: sarxl %esi, %ebx, %edx
632 0xc4 0xe2 0x0a 0xf7 0xd3
634 # CHECK: shrxl %esi, (%eax), %edx
635 0xc4 0xe2 0x0b 0xf7 0x10
637 # CHECK: shrxl %esi, %ebx, %edx
638 0xc4 0xe2 0x0b 0xf7 0xd3
640 # CHECK: extrq $2, $3, %xmm0
641 0x66 0x0f 0x78 0xc0 0x03 0x02
643 # CHECK: extrq %xmm1, %xmm0
646 # CHECK: insertq $6, $5, %xmm1, %xmm0
647 0xf2 0x0f 0x78 0xc1 0x05 0x06
649 # CHECK: insertq %xmm1, %xmm0
652 # CHECK: movntsd %xmm0, (%edi)
655 # CHECK: movntss %xmm0, (%edi)
658 # CHECK: prefetch (%eax)
661 # CHECK: prefetchw (%eax)
664 # CHECK: adcxl %eax, %eax
665 0x66 0x0f 0x38 0xf6 0xc0
667 # CHECK: adcxl (%eax), %eax
668 0x66 0x0f 0x38 0xf6 0x00
670 # CHECK: adoxl %eax, %eax
671 0xf3 0x0f 0x38 0xf6 0xc0
673 # CHECK: adoxl (%eax), %eax
674 0xf3 0x0f 0x38 0xf6 0x00
676 # CHECK: movb 878082192, %al
677 0xa0 0x90 0x78 0x56 0x34
679 # CHECK: movw 878082192, %ax
680 0x66 0xa1 0x90 0x78 0x56 0x34
682 # CHECK: movl 878082192, %eax
683 0xa1 0x90 0x78 0x56 0x34
685 # CHECK: movb %al, 878082192
686 0xa2 0x90 0x78 0x56 0x34
688 # CHECK: movw %ax, 878082192
689 0x66 0xa3 0x90 0x78 0x56 0x34
691 # CHECK: movl %eax, 878082192
692 0xa3 0x90 0x78 0x56 0x34
718 # CHECK: movq %xmm0, %xmm0
721 # CHECK: vmovq %xmm0, %xmm0
724 # CHECK: movl %fs:0, %eax
725 0x64 0xa1 0x00 0x00 0x00 0x00
727 # CHECK: movb $-1, %al
730 # CHECK: movw $65535, %ax
731 0x66 0xc7 0xc0 0xff 0xff
733 # CHECK: movl $4294967295, %eax
734 0xc7 0xc0 0xff 0xff 0xff 0xff
736 # CHECK: movq %mm0, %mm1
739 # CHECK: vpermq $238, %ymm2, %ymm2
740 0xc4 0xe3 0xfd 0x00 0xd2 0xee
742 # CHECK: cmpps $8, %xmm7, %xmm0
744 # CHECK: cmppd $8, %xmm7, %xmm0
745 0x66 0x0f 0xc2 0xc7 0x08
746 # CHECK: cmpss $8, %xmm7, %xmm0
747 0xf3 0x0f 0xc2 0xc7 0x08
748 # CHECK: cmpsd $8, %xmm7, %xmm0
749 0xf2 0x0f 0xc2 0xc7 0x08
751 # CHECK: addb $38, 5277496
752 0x82 0x05 0x38 0x87 0x50 0x00 0x26
753 # CHECK: orb $38, 5277496
754 0x82 0x0d 0x38 0x87 0x50 0x00 0x26
755 # CHECK: adcb $38, 5277496
756 0x82 0x15 0x38 0x87 0x50 0x00 0x26
757 # CHECK: sbbb $38, 5277496
758 0x82 0x1d 0x38 0x87 0x50 0x00 0x26
759 # CHECK: andb $38, 5277496
760 0x82 0x25 0x38 0x87 0x50 0x00 0x26
761 # CHECK: subb $38, 5277496
762 0x82 0x2D 0x38 0x87 0x50 0x00 0x26
763 # CHECK: xorb $38, 5277496
764 0x82 0x35 0x38 0x87 0x50 0x00 0x26
765 # CHECK: cmpb $38, 5277496
766 0x82 0x3d 0x38 0x87 0x50 0x00 0x26