1 // RUN: llvm-mc -triple i386-unknown-unknown --show-encoding %s | FileCheck %s
5 // CHECK: encoding: [0xf3,0x90]
8 // CHECK: encoding: [0x0f,0xae,0xf8]
11 // CHECK: encoding: [0x0f,0xae,0xe8]
14 // CHECK: encoding: [0x0f,0xae,0xf0]
17 // CHECK: encoding: [0x0f,0x01,0xc8]
18 monitor %eax, %ecx, %edx
20 // CHECK: encoding: [0x0f,0x01,0xc8]
23 // CHECK: encoding: [0x0f,0x01,0xc9]
26 // CHECK: encoding: [0x0f,0x01,0xc9]
30 // CHECK: encoding: [0x0f,0x01,0xc1]
33 // CHECK: encoding: [0x0f,0x01,0xc2]
36 // CHECK: encoding: [0x0f,0x01,0xc3]
39 // CHECK: encoding: [0x0f,0x01,0xc4]
42 // CHECK: encoding: [0x0f,0x01,0xf8]
46 // CHECK: encoding: [0x0f,0x01,0xd8]
49 // CHECK: encoding: [0x0f,0x01,0xd9]
52 // CHECK: encoding: [0x0f,0x01,0xda]
55 // CHECK: encoding: [0x0f,0x01,0xdb]
58 // CHECK: encoding: [0x0f,0x01,0xdc]
61 // CHECK: encoding: [0x0f,0x01,0xdd]
64 // CHECK: encoding: [0x0f,0x01,0xde]
66 // CHECK: invlpga %ecx, %eax
67 // CHECK: encoding: [0x0f,0x01,0xdf]
71 // CHECK: encoding: [0x0f,0x01,0xf9]
74 // CHECK: movl %eax, 16(%ebp) # encoding: [0x89,0x45,0x10]
76 // CHECK: movl %eax, -16(%ebp) # encoding: [0x89,0x45,0xf0]
79 // CHECK: testb %bl, %cl # encoding: [0x84,0xcb]
82 // CHECK: cmpl %eax, %ebx # encoding: [0x39,0xc3]
85 // CHECK: addw %ax, %ax # encoding: [0x66,0x01,0xc0]
88 // CHECK: shrl %eax # encoding: [0xd1,0xe8]
91 // CHECK: shll %eax # encoding: [0xd1,0xe0]
93 // CHECK: shll %eax # encoding: [0xd1,0xe0]
96 // moffset forms of moves, rdar://7947184
97 movb 0, %al // CHECK: movb 0, %al # encoding: [0xa0,A,A,A,A]
98 movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0xa1,A,A,A,A]
99 movl 0, %eax // CHECK: movl 0, %eax # encoding: [0xa1,A,A,A,A]
104 // CHECK: encoding: [0xce]
107 // CHECK: encoding: [0xcc]
110 // CHECK: encoding: [0xcd,0x04]
113 // CHECK: encoding: [0xcd,0xff]
115 // CHECK: pushfl # encoding: [0x9c]
117 // CHECK: pushfl # encoding: [0x9c]
119 // CHECK: popfl # encoding: [0x9d]
121 // CHECK: popfl # encoding: [0x9d]
127 // CHECK: encoding: [0xc3]
130 // CHECK: cmoval %eax, %edx
131 // CHECK: encoding: [0x0f,0x47,0xd0]
134 // CHECK: cmovael %eax, %edx
135 // CHECK: encoding: [0x0f,0x43,0xd0]
138 // CHECK: cmovbel %eax, %edx
139 // CHECK: encoding: [0x0f,0x46,0xd0]
142 // CHECK: cmovbl %eax, %edx
143 // CHECK: encoding: [0x0f,0x42,0xd0]
146 // CHECK: cmovbw %bx, %bx
150 // CHECK: cmovbel %eax, %edx
151 // CHECK: encoding: [0x0f,0x46,0xd0]
154 // CHECK: cmovbl %eax, %edx
155 // CHECK: encoding: [0x0f,0x42,0xd0]
158 // CHECK: cmovel %eax, %edx
159 // CHECK: encoding: [0x0f,0x44,0xd0]
162 // CHECK: cmovgl %eax, %edx
163 // CHECK: encoding: [0x0f,0x4f,0xd0]
166 // CHECK: cmovgel %eax, %edx
167 // CHECK: encoding: [0x0f,0x4d,0xd0]
170 // CHECK: cmovll %eax, %edx
171 // CHECK: encoding: [0x0f,0x4c,0xd0]
174 // CHECK: cmovlel %eax, %edx
175 // CHECK: encoding: [0x0f,0x4e,0xd0]
178 // CHECK: cmovbel %eax, %edx
179 // CHECK: encoding: [0x0f,0x46,0xd0]
182 // CHECK: cmovnel %eax, %edx
183 // CHECK: encoding: [0x0f,0x45,0xd0]
186 // CHECK: cmovael %eax, %edx
187 // CHECK: encoding: [0x0f,0x43,0xd0]
190 // CHECK: cmoval %eax, %edx
191 // CHECK: encoding: [0x0f,0x47,0xd0]
194 // CHECK: cmovael %eax, %edx
195 // CHECK: encoding: [0x0f,0x43,0xd0]
198 // CHECK: cmovnel %eax, %edx
199 // CHECK: encoding: [0x0f,0x45,0xd0]
202 // CHECK: cmovlel %eax, %edx
203 // CHECK: encoding: [0x0f,0x4e,0xd0]
206 // CHECK: cmovgel %eax, %edx
207 // CHECK: encoding: [0x0f,0x4d,0xd0]
210 // CHECK: cmovnel %eax, %edx
211 // CHECK: encoding: [0x0f,0x45,0xd0]
214 // CHECK: cmovlel %eax, %edx
215 // CHECK: encoding: [0x0f,0x4e,0xd0]
218 // CHECK: cmovll %eax, %edx
219 // CHECK: encoding: [0x0f,0x4c,0xd0]
222 // CHECK: cmovgel %eax, %edx
223 // CHECK: encoding: [0x0f,0x4d,0xd0]
226 // CHECK: cmovgl %eax, %edx
227 // CHECK: encoding: [0x0f,0x4f,0xd0]
230 // CHECK: cmovnol %eax, %edx
231 // CHECK: encoding: [0x0f,0x41,0xd0]
234 // CHECK: cmovnpl %eax, %edx
235 // CHECK: encoding: [0x0f,0x4b,0xd0]
238 // CHECK: cmovnsl %eax, %edx
239 // CHECK: encoding: [0x0f,0x49,0xd0]
242 // CHECK: cmovnel %eax, %edx
243 // CHECK: encoding: [0x0f,0x45,0xd0]
246 // CHECK: cmovol %eax, %edx
247 // CHECK: encoding: [0x0f,0x40,0xd0]
250 // CHECK: cmovpl %eax, %edx
251 // CHECK: encoding: [0x0f,0x4a,0xd0]
254 // CHECK: cmovsl %eax, %edx
255 // CHECK: encoding: [0x0f,0x48,0xd0]
258 // CHECK: cmovel %eax, %edx
259 // CHECK: encoding: [0x0f,0x44,0xd0]
262 // CHECK: cmpps $0, %xmm0, %xmm1
263 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
264 cmpps $0, %xmm0, %xmm1
265 // CHECK: cmpps $0, (%eax), %xmm1
266 // CHECK: encoding: [0x0f,0xc2,0x08,0x00]
267 cmpps $0, 0(%eax), %xmm1
268 // CHECK: cmppd $0, %xmm0, %xmm1
269 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x00]
270 cmppd $0, %xmm0, %xmm1
271 // CHECK: cmppd $0, (%eax), %xmm1
272 // CHECK: encoding: [0x66,0x0f,0xc2,0x08,0x00]
273 cmppd $0, 0(%eax), %xmm1
274 // CHECK: cmpss $0, %xmm0, %xmm1
275 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x00]
276 cmpss $0, %xmm0, %xmm1
277 // CHECK: cmpss $0, (%eax), %xmm1
278 // CHECK: encoding: [0xf3,0x0f,0xc2,0x08,0x00]
279 cmpss $0, 0(%eax), %xmm1
280 // CHECK: cmpsd $0, %xmm0, %xmm1
281 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x00]
282 cmpsd $0, %xmm0, %xmm1
283 // CHECK: cmpsd $0, (%eax), %xmm1
284 // CHECK: encoding: [0xf2,0x0f,0xc2,0x08,0x00]
285 cmpsd $0, 0(%eax), %xmm1
287 // Check matching of instructions which embed the SSE comparison code.
289 // CHECK: cmpps $0, %xmm0, %xmm1
290 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
293 // CHECK: cmppd $1, %xmm0, %xmm1
294 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x01]
297 // CHECK: cmpss $2, %xmm0, %xmm1
298 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x02]
301 // CHECK: cmppd $3, %xmm0, %xmm1
302 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x03]
303 cmpunordpd %xmm0, %xmm1
305 // CHECK: cmpps $4, %xmm0, %xmm1
306 // CHECK: encoding: [0x0f,0xc2,0xc8,0x04]
307 cmpneqps %xmm0, %xmm1
309 // CHECK: cmppd $5, %xmm0, %xmm1
310 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x05]
311 cmpnltpd %xmm0, %xmm1
313 // CHECK: cmpss $6, %xmm0, %xmm1
314 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x06]
315 cmpnless %xmm0, %xmm1
317 // CHECK: cmpsd $7, %xmm0, %xmm1
318 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x07]
319 cmpordsd %xmm0, %xmm1
322 // CHECK: fmul %st(0)
323 // CHECK: encoding: [0xd8,0xc8]
326 // CHECK: fadd %st(0)
327 // CHECK: encoding: [0xd8,0xc0]
330 // CHECK: fsub %st(0)
331 // CHECK: encoding: [0xd8,0xe0]
334 // CHECK: fsubr %st(0)
335 // CHECK: encoding: [0xd8,0xe8]
338 // CHECK: fdivr %st(0)
339 // CHECK: encoding: [0xd8,0xf8]
342 // CHECK: fdiv %st(0)
343 // CHECK: encoding: [0xd8,0xf0]
347 // CHECK: movl %cs, %eax
348 // CHECK: encoding: [0x8c,0xc8]
351 // CHECK: movw %cs, %ax
352 // CHECK: encoding: [0x66,0x8c,0xc8]
355 // CHECK: movl %cs, (%eax)
356 // CHECK: encoding: [0x8c,0x08]
359 // CHECK: movw %cs, (%eax)
360 // CHECK: encoding: [0x66,0x8c,0x08]
363 // CHECK: movl %eax, %cs
364 // CHECK: encoding: [0x8e,0xc8]
367 // CHECK: movl (%eax), %cs
368 // CHECK: encoding: [0x8e,0x08]
371 // CHECK: movw (%eax), %cs
372 // CHECK: encoding: [0x66,0x8e,0x08]
376 // CHECK: movl %cr0, %eax
377 // CHECK: encoding: [0x0f,0x20,0xc0]
380 // CHECK: movl %cr1, %eax
381 // CHECK: encoding: [0x0f,0x20,0xc8]
384 // CHECK: movl %cr2, %eax
385 // CHECK: encoding: [0x0f,0x20,0xd0]
388 // CHECK: movl %cr3, %eax
389 // CHECK: encoding: [0x0f,0x20,0xd8]
392 // CHECK: movl %cr4, %eax
393 // CHECK: encoding: [0x0f,0x20,0xe0]
396 // CHECK: movl %dr0, %eax
397 // CHECK: encoding: [0x0f,0x21,0xc0]
400 // CHECK: movl %dr1, %eax
401 // CHECK: encoding: [0x0f,0x21,0xc8]
404 // CHECK: movl %dr1, %eax
405 // CHECK: encoding: [0x0f,0x21,0xc8]
408 // CHECK: movl %dr2, %eax
409 // CHECK: encoding: [0x0f,0x21,0xd0]
412 // CHECK: movl %dr3, %eax
413 // CHECK: encoding: [0x0f,0x21,0xd8]
416 // CHECK: movl %dr4, %eax
417 // CHECK: encoding: [0x0f,0x21,0xe0]
420 // CHECK: movl %dr5, %eax
421 // CHECK: encoding: [0x0f,0x21,0xe8]
424 // CHECK: movl %dr6, %eax
425 // CHECK: encoding: [0x0f,0x21,0xf0]
428 // CHECK: movl %dr7, %eax
429 // CHECK: encoding: [0x0f,0x21,0xf8]
434 // CHECK: encoding: [0x9b]
438 // CHECK: [0x65,0x8b,0x05,0x7c,0x00,0x00,0x00]
439 // FIXME: This is a correct bug poor encoding: Use 65 a1 7c 00 00 00
443 // CHECK: encoding: [0x60]
447 // CHECK: encoding: [0x61]
451 // CHECK: encoding: [0x60]
455 // CHECK: encoding: [0x61]
458 // CHECK: jmpl *8(%eax)
459 // CHECK: encoding: [0xff,0x60,0x08]
463 // CHECK: lcalll $2, $4660
464 // CHECK: encoding: [0x9a,0x34,0x12,0x00,0x00,0x02,0x00]
472 // CHECK: encoding: [0x67,0xe3,A]
475 // CHECK: encoding: [0xe3,A]
480 // CHECK: encoding: [0xcf]
483 // CHECK: encoding: [0x66,0xcf]
486 // CHECK: encoding: [0xcf]
491 // CHECK: encoding: [0x0f,0x07]
494 // CHECK: encoding: [0x0f,0x07]
497 testl %ecx, -24(%ebp)
498 // CHECK: testl -24(%ebp), %ecx
499 testl -24(%ebp), %ecx
500 // CHECK: testl -24(%ebp), %ecx
506 // CHECK: encoding: [0x0e]
509 // CHECK: encoding: [0x1e]
512 // CHECK: encoding: [0x16]
515 // CHECK: encoding: [0x06]
518 // CHECK: encoding: [0x0f,0xa0]
521 // CHECK: encoding: [0x0f,0xa8]
525 // CHECK: encoding: [0x66,0x0e]
528 // CHECK: encoding: [0x66,0x1e]
531 // CHECK: encoding: [0x66,0x16]
534 // CHECK: encoding: [0x66,0x06]
537 // CHECK: encoding: [0x66,0x0f,0xa0]
540 // CHECK: encoding: [0x66,0x0f,0xa8]
544 // CHECK: encoding: [0x17]
547 // CHECK: encoding: [0x1f]
550 // CHECK: encoding: [0x07]
578 setneb %cl // CHECK: setne %cl
579 setcb %bl // CHECK: setb %bl
580 setnaeb %bl // CHECK: setb %bl
583 // CHECK: lcalll $31438, $31438
584 // CHECK: lcalll $31438, $31438
585 // CHECK: ljmpl $31438, $31438
586 // CHECK: ljmpl $31438, $31438
588 calll $0x7ace,$0x7ace
589 lcalll $0x7ace,$0x7ace
591 ljmpl $0x7ace,$0x7ace
593 // CHECK: lcalll $31438, $31438
594 // CHECK: lcalll $31438, $31438
595 // CHECK: ljmpl $31438, $31438
596 // CHECK: ljmpl $31438, $31438
599 lcall $0x7ace,$0x7ace
607 // CHECK: incb %al # encoding: [0xfe,0xc0]
610 // CHECK: incw %ax # encoding: [0x66,0x40]
613 // CHECK: incl %eax # encoding: [0x40]
616 // CHECK: decb %al # encoding: [0xfe,0xc8]
619 // CHECK: decw %ax # encoding: [0x66,0x48]
622 // CHECK: decl %eax # encoding: [0x48]
625 // CHECK: pshufw $14, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x0e]
626 pshufw $14, %mm4, %mm0
628 // CHECK: pshufw $90, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x5a]
630 pshufw $90, %mm4, %mm0
634 // CHECK: encoding: [0x37]
638 // CHECK: encoding: [0xd5,0x01]
642 // CHECK: encoding: [0xd5,0x0a]
646 // CHECK: encoding: [0xd5,0x0a]
650 // CHECK: encoding: [0xd4,0x02]
654 // CHECK: encoding: [0xd4,0x0a]
658 // CHECK: encoding: [0xd4,0x0a]
662 // CHECK: encoding: [0x3f]
666 // CHECK: encoding: [0x27]
670 // CHECK: encoding: [0x2f]
673 // CHECK: retw $31438
674 // CHECK: encoding: [0x66,0xc2,0xce,0x7a]
677 // CHECK: lretw $31438
678 // CHECK: encoding: [0x66,0xca,0xce,0x7a]
681 // CHECK: bound 2(%eax), %bx
682 // CHECK: encoding: [0x66,0x62,0x58,0x02]
685 // CHECK: bound 4(%ebx), %ecx
686 // CHECK: encoding: [0x62,0x4b,0x04]
689 // CHECK: arpl %bx, %bx
690 // CHECK: encoding: [0x63,0xdb]
693 // CHECK: arpl %bx, 6(%ecx)
694 // CHECK: encoding: [0x63,0x59,0x06]
697 // CHECK: lgdtw 4(%eax)
698 // CHECK: encoding: [0x66,0x0f,0x01,0x50,0x04]
701 // CHECK: lgdt 4(%eax)
702 // CHECK: encoding: [0x0f,0x01,0x50,0x04]
705 // CHECK: lgdt 4(%eax)
706 // CHECK: encoding: [0x0f,0x01,0x50,0x04]
709 // CHECK: lidtw 4(%eax)
710 // CHECK: encoding: [0x66,0x0f,0x01,0x58,0x04]
713 // CHECK: lidt 4(%eax)
714 // CHECK: encoding: [0x0f,0x01,0x58,0x04]
717 // CHECK: lidt 4(%eax)
718 // CHECK: encoding: [0x0f,0x01,0x58,0x04]
721 // CHECK: sgdtw 4(%eax)
722 // CHECK: encoding: [0x66,0x0f,0x01,0x40,0x04]
725 // CHECK: sgdt 4(%eax)
726 // CHECK: encoding: [0x0f,0x01,0x40,0x04]
729 // CHECK: sgdt 4(%eax)
730 // CHECK: encoding: [0x0f,0x01,0x40,0x04]
733 // CHECK: sidtw 4(%eax)
734 // CHECK: encoding: [0x66,0x0f,0x01,0x48,0x04]
737 // CHECK: sidt 4(%eax)
738 // CHECK: encoding: [0x0f,0x01,0x48,0x04]
741 // CHECK: sidt 4(%eax)
742 // CHECK: encoding: [0x0f,0x01,0x48,0x04]
745 // CHECK: fcompi %st(2)
746 // CHECK: encoding: [0xdf,0xf2]
749 // CHECK: fcompi %st(2)
750 // CHECK: encoding: [0xdf,0xf2]
754 // CHECK: encoding: [0xdf,0xf1]
757 // CHECK: fucompi %st(2)
758 // CHECK: encoding: [0xdf,0xea]
761 // CHECK: fucompi %st(2)
762 // CHECK: encoding: [0xdf,0xea]
766 // CHECK: encoding: [0xdf,0xe9]
769 // CHECK: fldcw 32493
770 // CHECK: encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00]
773 // CHECK: fldcw 32493
774 // CHECK: encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00]
777 // CHECK: fnstcw 32493
778 // CHECK: encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00]
781 // CHECK: fnstcw 32493
782 // CHECK: encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00]
786 // CHECK: encoding: [0x9b]
790 // CHECK: encoding: [0x9b]
793 // CHECK: fnstsw 32493
794 // CHECK: encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00]
797 // CHECK: fnstsw 32493
798 // CHECK: encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00]
802 // CHECK: encoding: [0x9b]
806 // CHECK: encoding: [0x9b]
810 // CHECK: encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00]
814 // CHECK: encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00]
818 // CHECK: encoding: [0x9b]
822 // CHECK: encoding: [0xdb,0xe2]
826 // CHECK: encoding: [0x0f,0x0b]
830 // CHECK: encoding: [0x0f,0x0b]
834 // CHECK: encoding: [0x0f,0xb9]
838 // CHECK: encoding: [0xe1,A]
842 // CHECK: encoding: [0xe0,A]
845 // CHECK: outsb # encoding: [0x6e]
849 outsb %ds:(%esi), %dx
852 // CHECK: outsw # encoding: [0x66,0x6f]
856 outsw %ds:(%esi), %dx
859 // CHECK: outsl # encoding: [0x6f]
862 outsl %ds:(%esi), %dx
865 // CHECK: insb # encoding: [0x6c]
870 // CHECK: insw # encoding: [0x66,0x6d]
875 // CHECK: insl # encoding: [0x6d]
880 // CHECK: movsb # encoding: [0xa4]
884 movsb %ds:(%esi), %es:(%edi)
885 movsb (%esi), %es:(%edi)
887 // CHECK: movsw # encoding: [0x66,0xa5]
891 movsw %ds:(%esi), %es:(%edi)
892 movsw (%esi), %es:(%edi)
894 // CHECK: movsd # encoding: [0xa5]
898 movsl %ds:(%esi), %es:(%edi)
899 movsl (%esi), %es:(%edi)
901 // CHECK: lodsb # encoding: [0xac]
907 lodsb %ds:(%esi), %al
912 // CHECK: lodsw # encoding: [0x66,0xad]
918 lodsw %ds:(%esi), %ax
923 // CHECK: lodsl # encoding: [0xad]
929 lodsl %ds:(%esi), %eax
931 lods %ds:(%esi), %eax
934 // CHECK: stosb # encoding: [0xaa]
938 stosb %al, %es:(%edi)
941 // CHECK: stosw # encoding: [0x66,0xab]
945 stosw %ax, %es:(%edi)
948 // CHECK: stosl # encoding: [0xab]
952 stosl %eax, %es:(%edi)
953 stos %eax, %es:(%edi)
956 // CHECK: encoding: [0x66,0x0f,0x00,0xc8]
960 // CHECK: encoding: [0x0f,0x00,0xc8]
966 // CHECK: encoding: [0xde,0xe1]
970 // CHECK: fsubp %st(2)
971 // CHECK: encoding: [0xde,0xe2]
975 // CHECK: xchgl %eax, %eax
976 // CHECK: encoding: [0x90]
979 // CHECK: xchgw %ax, %ax
980 // CHECK: encoding: [0x66,0x90]
983 // CHECK: xchgl %ecx, %eax
984 // CHECK: encoding: [0x91]
987 // CHECK: xchgl %ecx, %eax
988 // CHECK: encoding: [0x91]