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,0xd4]
36 // CHECK: encoding: [0x0f,0x01,0xc2]
39 // CHECK: encoding: [0x0f,0x01,0xc3]
42 // CHECK: encoding: [0x0f,0x01,0xc4]
45 // CHECK: encoding: [0x0f,0x01,0xf8]
49 // CHECK: encoding: [0x0f,0x01,0xd8]
52 // CHECK: encoding: [0x0f,0x01,0xd9]
55 // CHECK: encoding: [0x0f,0x01,0xda]
58 // CHECK: encoding: [0x0f,0x01,0xdb]
61 // CHECK: encoding: [0x0f,0x01,0xdc]
64 // CHECK: encoding: [0x0f,0x01,0xdd]
67 // CHECK: encoding: [0x0f,0x01,0xde]
69 // CHECK: invlpga %ecx, %eax
70 // CHECK: encoding: [0x0f,0x01,0xdf]
74 // CHECK: encoding: [0x0f,0x01,0xf9]
77 // CHECK: movl %eax, 16(%ebp) # encoding: [0x89,0x45,0x10]
79 // CHECK: movl %eax, -16(%ebp) # encoding: [0x89,0x45,0xf0]
82 // CHECK: testb %bl, %cl # encoding: [0x84,0xcb]
85 // CHECK: cmpl %eax, %ebx # encoding: [0x39,0xc3]
88 // CHECK: addw %ax, %ax # encoding: [0x66,0x01,0xc0]
91 // CHECK: shrl %eax # encoding: [0xd1,0xe8]
94 // CHECK: shll %eax # encoding: [0xd1,0xe0]
96 // CHECK: shll %eax # encoding: [0xd1,0xe0]
99 // moffset forms of moves, rdar://7947184
100 movb 0, %al // CHECK: movb 0, %al # encoding: [0xa0,0x00,0x00,0x00,0x00]
101 movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0xa1,0x00,0x00,0x00,0x00]
102 movl 0, %eax // CHECK: movl 0, %eax # encoding: [0xa1,0x00,0x00,0x00,0x00]
107 // CHECK: encoding: [0xce]
110 // CHECK: encoding: [0xcc]
113 // CHECK: encoding: [0xcd,0x04]
116 // CHECK: encoding: [0xcd,0xff]
118 // CHECK: pushfl # encoding: [0x9c]
120 // CHECK: pushfl # encoding: [0x9c]
122 // CHECK: popfl # encoding: [0x9d]
124 // CHECK: popfl # encoding: [0x9d]
130 // CHECK: encoding: [0xc3]
133 // CHECK: cmoval %eax, %edx
134 // CHECK: encoding: [0x0f,0x47,0xd0]
137 // CHECK: cmovael %eax, %edx
138 // CHECK: encoding: [0x0f,0x43,0xd0]
141 // CHECK: cmovbel %eax, %edx
142 // CHECK: encoding: [0x0f,0x46,0xd0]
145 // CHECK: cmovbl %eax, %edx
146 // CHECK: encoding: [0x0f,0x42,0xd0]
149 // CHECK: cmovbw %bx, %bx
153 // CHECK: cmovbel %eax, %edx
154 // CHECK: encoding: [0x0f,0x46,0xd0]
157 // CHECK: cmovbl %eax, %edx
158 // CHECK: encoding: [0x0f,0x42,0xd0]
161 // CHECK: cmovel %eax, %edx
162 // CHECK: encoding: [0x0f,0x44,0xd0]
165 // CHECK: cmovgl %eax, %edx
166 // CHECK: encoding: [0x0f,0x4f,0xd0]
169 // CHECK: cmovgel %eax, %edx
170 // CHECK: encoding: [0x0f,0x4d,0xd0]
173 // CHECK: cmovll %eax, %edx
174 // CHECK: encoding: [0x0f,0x4c,0xd0]
177 // CHECK: cmovlel %eax, %edx
178 // CHECK: encoding: [0x0f,0x4e,0xd0]
181 // CHECK: cmovbel %eax, %edx
182 // CHECK: encoding: [0x0f,0x46,0xd0]
185 // CHECK: cmovnel %eax, %edx
186 // CHECK: encoding: [0x0f,0x45,0xd0]
189 // CHECK: cmovael %eax, %edx
190 // CHECK: encoding: [0x0f,0x43,0xd0]
193 // CHECK: cmoval %eax, %edx
194 // CHECK: encoding: [0x0f,0x47,0xd0]
197 // CHECK: cmovael %eax, %edx
198 // CHECK: encoding: [0x0f,0x43,0xd0]
201 // CHECK: cmovnel %eax, %edx
202 // CHECK: encoding: [0x0f,0x45,0xd0]
205 // CHECK: cmovlel %eax, %edx
206 // CHECK: encoding: [0x0f,0x4e,0xd0]
209 // CHECK: cmovgel %eax, %edx
210 // CHECK: encoding: [0x0f,0x4d,0xd0]
213 // CHECK: cmovnel %eax, %edx
214 // CHECK: encoding: [0x0f,0x45,0xd0]
217 // CHECK: cmovlel %eax, %edx
218 // CHECK: encoding: [0x0f,0x4e,0xd0]
221 // CHECK: cmovll %eax, %edx
222 // CHECK: encoding: [0x0f,0x4c,0xd0]
225 // CHECK: cmovgel %eax, %edx
226 // CHECK: encoding: [0x0f,0x4d,0xd0]
229 // CHECK: cmovgl %eax, %edx
230 // CHECK: encoding: [0x0f,0x4f,0xd0]
233 // CHECK: cmovnol %eax, %edx
234 // CHECK: encoding: [0x0f,0x41,0xd0]
237 // CHECK: cmovnpl %eax, %edx
238 // CHECK: encoding: [0x0f,0x4b,0xd0]
241 // CHECK: cmovnsl %eax, %edx
242 // CHECK: encoding: [0x0f,0x49,0xd0]
245 // CHECK: cmovnel %eax, %edx
246 // CHECK: encoding: [0x0f,0x45,0xd0]
249 // CHECK: cmovol %eax, %edx
250 // CHECK: encoding: [0x0f,0x40,0xd0]
253 // CHECK: cmovpl %eax, %edx
254 // CHECK: encoding: [0x0f,0x4a,0xd0]
257 // CHECK: cmovsl %eax, %edx
258 // CHECK: encoding: [0x0f,0x48,0xd0]
261 // CHECK: cmovel %eax, %edx
262 // CHECK: encoding: [0x0f,0x44,0xd0]
265 // CHECK: cmpps $0, %xmm0, %xmm1
266 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
267 cmpps $0, %xmm0, %xmm1
268 // CHECK: cmpps $0, (%eax), %xmm1
269 // CHECK: encoding: [0x0f,0xc2,0x08,0x00]
270 cmpps $0, 0(%eax), %xmm1
271 // CHECK: cmppd $0, %xmm0, %xmm1
272 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x00]
273 cmppd $0, %xmm0, %xmm1
274 // CHECK: cmppd $0, (%eax), %xmm1
275 // CHECK: encoding: [0x66,0x0f,0xc2,0x08,0x00]
276 cmppd $0, 0(%eax), %xmm1
277 // CHECK: cmpss $0, %xmm0, %xmm1
278 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x00]
279 cmpss $0, %xmm0, %xmm1
280 // CHECK: cmpss $0, (%eax), %xmm1
281 // CHECK: encoding: [0xf3,0x0f,0xc2,0x08,0x00]
282 cmpss $0, 0(%eax), %xmm1
283 // CHECK: cmpsd $0, %xmm0, %xmm1
284 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x00]
285 cmpsd $0, %xmm0, %xmm1
286 // CHECK: cmpsd $0, (%eax), %xmm1
287 // CHECK: encoding: [0xf2,0x0f,0xc2,0x08,0x00]
288 cmpsd $0, 0(%eax), %xmm1
290 // Check matching of instructions which embed the SSE comparison code.
292 // CHECK: cmpps $0, %xmm0, %xmm1
293 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
296 // CHECK: cmppd $1, %xmm0, %xmm1
297 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x01]
300 // CHECK: cmpss $2, %xmm0, %xmm1
301 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x02]
304 // CHECK: cmppd $3, %xmm0, %xmm1
305 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x03]
306 cmpunordpd %xmm0, %xmm1
308 // CHECK: cmpps $4, %xmm0, %xmm1
309 // CHECK: encoding: [0x0f,0xc2,0xc8,0x04]
310 cmpneqps %xmm0, %xmm1
312 // CHECK: cmppd $5, %xmm0, %xmm1
313 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x05]
314 cmpnltpd %xmm0, %xmm1
316 // CHECK: cmpss $6, %xmm0, %xmm1
317 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x06]
318 cmpnless %xmm0, %xmm1
320 // CHECK: cmpsd $7, %xmm0, %xmm1
321 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x07]
322 cmpordsd %xmm0, %xmm1
325 // CHECK: fmul %st(0)
326 // CHECK: encoding: [0xd8,0xc8]
329 // CHECK: fadd %st(0)
330 // CHECK: encoding: [0xd8,0xc0]
333 // CHECK: fsub %st(0)
334 // CHECK: encoding: [0xd8,0xe0]
337 // CHECK: fsubr %st(0)
338 // CHECK: encoding: [0xd8,0xe8]
341 // CHECK: fdivr %st(0)
342 // CHECK: encoding: [0xd8,0xf8]
345 // CHECK: fdiv %st(0)
346 // CHECK: encoding: [0xd8,0xf0]
350 // CHECK: movl %cs, %eax
351 // CHECK: encoding: [0x8c,0xc8]
354 // CHECK: movw %cs, %ax
355 // CHECK: encoding: [0x66,0x8c,0xc8]
358 // CHECK: movl %cs, (%eax)
359 // CHECK: encoding: [0x8c,0x08]
362 // CHECK: movw %cs, (%eax)
363 // CHECK: encoding: [0x66,0x8c,0x08]
366 // CHECK: movl %eax, %cs
367 // CHECK: encoding: [0x8e,0xc8]
370 // CHECK: movl (%eax), %cs
371 // CHECK: encoding: [0x8e,0x08]
374 // CHECK: movw (%eax), %cs
375 // CHECK: encoding: [0x66,0x8e,0x08]
379 // CHECK: movl %cr0, %eax
380 // CHECK: encoding: [0x0f,0x20,0xc0]
383 // CHECK: movl %cr1, %eax
384 // CHECK: encoding: [0x0f,0x20,0xc8]
387 // CHECK: movl %cr2, %eax
388 // CHECK: encoding: [0x0f,0x20,0xd0]
391 // CHECK: movl %cr3, %eax
392 // CHECK: encoding: [0x0f,0x20,0xd8]
395 // CHECK: movl %cr4, %eax
396 // CHECK: encoding: [0x0f,0x20,0xe0]
399 // CHECK: movl %dr0, %eax
400 // CHECK: encoding: [0x0f,0x21,0xc0]
403 // CHECK: movl %dr1, %eax
404 // CHECK: encoding: [0x0f,0x21,0xc8]
407 // CHECK: movl %dr1, %eax
408 // CHECK: encoding: [0x0f,0x21,0xc8]
411 // CHECK: movl %dr2, %eax
412 // CHECK: encoding: [0x0f,0x21,0xd0]
415 // CHECK: movl %dr3, %eax
416 // CHECK: encoding: [0x0f,0x21,0xd8]
419 // CHECK: movl %dr4, %eax
420 // CHECK: encoding: [0x0f,0x21,0xe0]
423 // CHECK: movl %dr5, %eax
424 // CHECK: encoding: [0x0f,0x21,0xe8]
427 // CHECK: movl %dr6, %eax
428 // CHECK: encoding: [0x0f,0x21,0xf0]
431 // CHECK: movl %dr7, %eax
432 // CHECK: encoding: [0x0f,0x21,0xf8]
437 // CHECK: encoding: [0x9b]
441 // CHECK: [0x65,0x8b,0x05,0x7c,0x00,0x00,0x00]
442 // FIXME: This is a correct bug poor encoding: Use 65 a1 7c 00 00 00
446 // CHECK: encoding: [0x60]
450 // CHECK: encoding: [0x61]
454 // CHECK: encoding: [0x66,0x60]
458 // CHECK: encoding: [0x66,0x61]
462 // CHECK: encoding: [0x60]
466 // CHECK: encoding: [0x61]
469 // CHECK: jmpl *8(%eax)
470 // CHECK: encoding: [0xff,0x60,0x08]
474 // CHECK: lcalll $2, $4660
475 // CHECK: encoding: [0x9a,0x34,0x12,0x00,0x00,0x02,0x00]
483 // CHECK: encoding: [0x67,0xe3,A]
486 // CHECK: encoding: [0xe3,A]
491 // CHECK: encoding: [0xcf]
494 // CHECK: encoding: [0x66,0xcf]
497 // CHECK: encoding: [0xcf]
502 // CHECK: encoding: [0x0f,0x07]
505 // CHECK: encoding: [0x0f,0x07]
508 testl %ecx, -24(%ebp)
509 // CHECK: testl -24(%ebp), %ecx
510 testl -24(%ebp), %ecx
511 // CHECK: testl -24(%ebp), %ecx
517 // CHECK: encoding: [0x0e]
520 // CHECK: encoding: [0x1e]
523 // CHECK: encoding: [0x16]
526 // CHECK: encoding: [0x06]
529 // CHECK: encoding: [0x0f,0xa0]
532 // CHECK: encoding: [0x0f,0xa8]
536 // CHECK: encoding: [0x66,0x0e]
539 // CHECK: encoding: [0x66,0x1e]
542 // CHECK: encoding: [0x66,0x16]
545 // CHECK: encoding: [0x66,0x06]
548 // CHECK: encoding: [0x66,0x0f,0xa0]
551 // CHECK: encoding: [0x66,0x0f,0xa8]
555 // CHECK: encoding: [0x17]
558 // CHECK: encoding: [0x1f]
561 // CHECK: encoding: [0x07]
589 setneb %cl // CHECK: setne %cl
590 setcb %bl // CHECK: setb %bl
591 setnaeb %bl // CHECK: setb %bl
594 // CHECK: lcalll $31438, $31438
595 // CHECK: lcalll $31438, $31438
596 // CHECK: ljmpl $31438, $31438
597 // CHECK: ljmpl $31438, $31438
599 calll $0x7ace,$0x7ace
600 lcalll $0x7ace,$0x7ace
602 ljmpl $0x7ace,$0x7ace
604 // CHECK: lcallw $31438, $31438
605 // CHECK: lcallw $31438, $31438
606 // CHECK: ljmpw $31438, $31438
607 // CHECK: ljmpw $31438, $31438
609 callw $0x7ace,$0x7ace
610 lcallw $0x7ace,$0x7ace
612 ljmpw $0x7ace,$0x7ace
614 // CHECK: lcalll $31438, $31438
615 // CHECK: lcalll $31438, $31438
616 // CHECK: ljmpl $31438, $31438
617 // CHECK: ljmpl $31438, $31438
620 lcall $0x7ace,$0x7ace
628 // CHECK: incb %al # encoding: [0xfe,0xc0]
631 // CHECK: incw %ax # encoding: [0x66,0x40]
634 // CHECK: incl %eax # encoding: [0x40]
637 // CHECK: decb %al # encoding: [0xfe,0xc8]
640 // CHECK: decw %ax # encoding: [0x66,0x48]
643 // CHECK: decl %eax # encoding: [0x48]
646 // CHECK: pshufw $14, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x0e]
647 pshufw $14, %mm4, %mm0
649 // CHECK: pshufw $90, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x5a]
651 pshufw $90, %mm4, %mm0
655 // CHECK: encoding: [0x37]
659 // CHECK: encoding: [0xd5,0x01]
663 // CHECK: encoding: [0xd5,0x0a]
667 // CHECK: encoding: [0xd5,0x0a]
671 // CHECK: encoding: [0xd4,0x02]
675 // CHECK: encoding: [0xd4,0x0a]
679 // CHECK: encoding: [0xd4,0x0a]
683 // CHECK: encoding: [0x3f]
687 // CHECK: encoding: [0x27]
691 // CHECK: encoding: [0x2f]
694 // CHECK: retw $31438
695 // CHECK: encoding: [0x66,0xc2,0xce,0x7a]
698 // CHECK: lretw $31438
699 // CHECK: encoding: [0x66,0xca,0xce,0x7a]
702 // CHECK: bound 2(%eax), %bx
703 // CHECK: encoding: [0x66,0x62,0x58,0x02]
706 // CHECK: bound 4(%ebx), %ecx
707 // CHECK: encoding: [0x62,0x4b,0x04]
710 // CHECK: arpl %bx, %bx
711 // CHECK: encoding: [0x63,0xdb]
714 // CHECK: arpl %bx, 6(%ecx)
715 // CHECK: encoding: [0x63,0x59,0x06]
718 // CHECK: lgdtw 4(%eax)
719 // CHECK: encoding: [0x66,0x0f,0x01,0x50,0x04]
722 // CHECK: lgdtl 4(%eax)
723 // CHECK: encoding: [0x0f,0x01,0x50,0x04]
726 // CHECK: lgdtl 4(%eax)
727 // CHECK: encoding: [0x0f,0x01,0x50,0x04]
730 // CHECK: lidtw 4(%eax)
731 // CHECK: encoding: [0x66,0x0f,0x01,0x58,0x04]
734 // CHECK: lidtl 4(%eax)
735 // CHECK: encoding: [0x0f,0x01,0x58,0x04]
738 // CHECK: lidtl 4(%eax)
739 // CHECK: encoding: [0x0f,0x01,0x58,0x04]
742 // CHECK: sgdtw 4(%eax)
743 // CHECK: encoding: [0x66,0x0f,0x01,0x40,0x04]
746 // CHECK: sgdtl 4(%eax)
747 // CHECK: encoding: [0x0f,0x01,0x40,0x04]
750 // CHECK: sgdtl 4(%eax)
751 // CHECK: encoding: [0x0f,0x01,0x40,0x04]
754 // CHECK: sidtw 4(%eax)
755 // CHECK: encoding: [0x66,0x0f,0x01,0x48,0x04]
758 // CHECK: sidtl 4(%eax)
759 // CHECK: encoding: [0x0f,0x01,0x48,0x04]
762 // CHECK: sidtl 4(%eax)
763 // CHECK: encoding: [0x0f,0x01,0x48,0x04]
766 // CHECK: fcompi %st(2)
767 // CHECK: encoding: [0xdf,0xf2]
770 // CHECK: fcompi %st(2)
771 // CHECK: encoding: [0xdf,0xf2]
775 // CHECK: encoding: [0xdf,0xf1]
778 // CHECK: fucompi %st(2)
779 // CHECK: encoding: [0xdf,0xea]
782 // CHECK: fucompi %st(2)
783 // CHECK: encoding: [0xdf,0xea]
787 // CHECK: encoding: [0xdf,0xe9]
790 // CHECK: fldcw 32493
791 // CHECK: encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00]
794 // CHECK: fldcw 32493
795 // CHECK: encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00]
798 // CHECK: fnstcw 32493
799 // CHECK: encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00]
802 // CHECK: fnstcw 32493
803 // CHECK: encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00]
807 // CHECK: encoding: [0x9b]
811 // CHECK: encoding: [0x9b]
814 // CHECK: fnstsw 32493
815 // CHECK: encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00]
818 // CHECK: fnstsw 32493
819 // CHECK: encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00]
823 // CHECK: encoding: [0x9b]
827 // CHECK: encoding: [0x9b]
831 // CHECK: encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00]
835 // CHECK: encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00]
839 // CHECK: encoding: [0x9b]
843 // CHECK: encoding: [0xdb,0xe2]
847 // CHECK: encoding: [0x0f,0x0b]
851 // CHECK: encoding: [0x0f,0x0b]
855 // CHECK: encoding: [0x0f,0xb9]
859 // CHECK: encoding: [0xe1,A]
863 // CHECK: encoding: [0xe0,A]
866 // CHECK: outsb # encoding: [0x6e]
870 outsb %ds:(%esi), %dx
873 // CHECK: outsw # encoding: [0x66,0x6f]
877 outsw %ds:(%esi), %dx
880 // CHECK: outsl # encoding: [0x6f]
883 outsl %ds:(%esi), %dx
886 // CHECK: insb # encoding: [0x6c]
891 // CHECK: insw # encoding: [0x66,0x6d]
896 // CHECK: insl # encoding: [0x6d]
901 // CHECK: movsb # encoding: [0xa4]
905 movsb %ds:(%esi), %es:(%edi)
906 movsb (%esi), %es:(%edi)
908 // CHECK: movsw # encoding: [0x66,0xa5]
912 movsw %ds:(%esi), %es:(%edi)
913 movsw (%esi), %es:(%edi)
915 // CHECK: movsl # encoding: [0xa5]
919 movsl %ds:(%esi), %es:(%edi)
920 movsl (%esi), %es:(%edi)
922 // CHECK: lodsb # encoding: [0xac]
928 lodsb %ds:(%esi), %al
933 // CHECK: lodsw # encoding: [0x66,0xad]
939 lodsw %ds:(%esi), %ax
944 // CHECK: lodsl # encoding: [0xad]
950 lodsl %ds:(%esi), %eax
952 lods %ds:(%esi), %eax
955 // CHECK: stosb # encoding: [0xaa]
959 stosb %al, %es:(%edi)
962 // CHECK: stosw # encoding: [0x66,0xab]
966 stosw %ax, %es:(%edi)
969 // CHECK: stosl # encoding: [0xab]
973 stosl %eax, %es:(%edi)
974 stos %eax, %es:(%edi)
977 // CHECK: encoding: [0x66,0x0f,0x00,0xc8]
981 // CHECK: encoding: [0x0f,0x00,0xc8]
987 // CHECK: encoding: [0xde,0xe1]
991 // CHECK: fsubp %st(2)
992 // CHECK: encoding: [0xde,0xe2]
996 // CHECK: xchgl %eax, %eax
997 // CHECK: encoding: [0x90]
1000 // CHECK: xchgw %ax, %ax
1001 // CHECK: encoding: [0x66,0x90]
1004 // CHECK: xchgl %ecx, %eax
1005 // CHECK: encoding: [0x91]
1008 // CHECK: xchgl %ecx, %eax
1009 // CHECK: encoding: [0x91]
1013 // CHECK: encoding: [0x66,0xc3]
1017 // CHECK: encoding: [0x66,0xcb]