1 // RUN: llvm-mc -triple i386-unknown-unknown --show-encoding %s | FileCheck %s
7 // CHECK: encoding: [0x66,0xbb,0x78,0x56,0x34,0x12]
10 // CHECK: encoding: [0xf3,0x90]
13 // CHECK: encoding: [0x0f,0xae,0xf8]
16 // CHECK: encoding: [0x0f,0xae,0xe8]
20 // CHECK: encoding: [0x0f,0x01,0xdc]
23 // CHECK: encoding: [0x0f,0x01,0xdd]
27 // CHECK: encoding: [0x0f,0x01,0xf9]
30 // CHECK: movl %eax, 16(%ebp) # encoding: [0x67,0x66,0x89,0x45,0x10]
32 // CHECK: movl %eax, -16(%ebp) # encoding: [0x67,0x66,0x89,0x45,0xf0]
35 // CHECK: testb %bl, %cl # encoding: [0x84,0xcb]
38 // CHECK: cmpl %eax, %ebx # encoding: [0x66,0x39,0xc3]
41 // CHECK: addw %ax, %ax # encoding: [0x01,0xc0]
44 // CHECK: shrl %eax # encoding: [0x66,0xd1,0xe8]
47 // CHECK: shll %eax # encoding: [0x66,0xd1,0xe0]
49 // CHECK: shll %eax # encoding: [0x66,0xd1,0xe0]
52 // moffset forms of moves
54 // CHECK: movb 0, %al # encoding: [0xa0,0x00,0x00]
57 // CHECK: movw 0, %ax # encoding: [0xa1,0x00,0x00]
60 // CHECK: movl 0, %eax # encoding: [0x66,0xa1,0x00,0x00]
65 // CHECK: encoding: [0xce]
68 // CHECK: encoding: [0xcc]
71 // CHECK: encoding: [0xcd,0x04]
74 // CHECK: encoding: [0xcd,0xff]
76 // CHECK: pushfw # encoding: [0x9c]
78 // CHECK: pushfl # encoding: [0x66,0x9c]
80 // CHECK: popfw # encoding: [0x9d]
82 // CHECK: popfl # encoding: [0x66,0x9d]
87 // CHECK: encoding: [0x66,0xc3]
89 // CHECK: cmoval %eax, %edx
90 // CHECK: encoding: [0x66,0x0f,0x47,0xd0]
93 // CHECK: cmovael %eax, %edx
94 // CHECK: encoding: [0x66,0x0f,0x43,0xd0]
97 // CHECK: cmovbel %eax, %edx
98 // CHECK: encoding: [0x66,0x0f,0x46,0xd0]
101 // CHECK: cmovbl %eax, %edx
102 // CHECK: encoding: [0x66,0x0f,0x42,0xd0]
105 // CHECK: cmovbw %bx, %bx
109 // CHECK: cmovbel %eax, %edx
110 // CHECK: encoding: [0x66,0x0f,0x46,0xd0]
113 // CHECK: cmovbl %eax, %edx
114 // CHECK: encoding: [0x66,0x0f,0x42,0xd0]
117 // CHECK: cmovel %eax, %edx
118 // CHECK: encoding: [0x66,0x0f,0x44,0xd0]
121 // CHECK: cmovgl %eax, %edx
122 // CHECK: encoding: [0x66,0x0f,0x4f,0xd0]
125 // CHECK: cmovgel %eax, %edx
126 // CHECK: encoding: [0x66,0x0f,0x4d,0xd0]
129 // CHECK: cmovll %eax, %edx
130 // CHECK: encoding: [0x66,0x0f,0x4c,0xd0]
133 // CHECK: cmovlel %eax, %edx
134 // CHECK: encoding: [0x66,0x0f,0x4e,0xd0]
137 // CHECK: cmovbel %eax, %edx
138 // CHECK: encoding: [0x66,0x0f,0x46,0xd0]
141 // CHECK: cmovnel %eax, %edx
142 // CHECK: encoding: [0x66,0x0f,0x45,0xd0]
145 // CHECK: cmovael %eax, %edx
146 // CHECK: encoding: [0x66,0x0f,0x43,0xd0]
149 // CHECK: cmoval %eax, %edx
150 // CHECK: encoding: [0x66,0x0f,0x47,0xd0]
153 // CHECK: cmovael %eax, %edx
154 // CHECK: encoding: [0x66,0x0f,0x43,0xd0]
157 // CHECK: cmovnel %eax, %edx
158 // CHECK: encoding: [0x66,0x0f,0x45,0xd0]
161 // CHECK: cmovlel %eax, %edx
162 // CHECK: encoding: [0x66,0x0f,0x4e,0xd0]
165 // CHECK: cmovgel %eax, %edx
166 // CHECK: encoding: [0x66,0x0f,0x4d,0xd0]
169 // CHECK: cmovnel %eax, %edx
170 // CHECK: encoding: [0x66,0x0f,0x45,0xd0]
173 // CHECK: cmovlel %eax, %edx
174 // CHECK: encoding: [0x66,0x0f,0x4e,0xd0]
177 // CHECK: cmovll %eax, %edx
178 // CHECK: encoding: [0x66,0x0f,0x4c,0xd0]
181 // CHECK: cmovgel %eax, %edx
182 // CHECK: encoding: [0x66,0x0f,0x4d,0xd0]
185 // CHECK: cmovgl %eax, %edx
186 // CHECK: encoding: [0x66,0x0f,0x4f,0xd0]
189 // CHECK: cmovnol %eax, %edx
190 // CHECK: encoding: [0x66,0x0f,0x41,0xd0]
193 // CHECK: cmovnpl %eax, %edx
194 // CHECK: encoding: [0x66,0x0f,0x4b,0xd0]
197 // CHECK: cmovnsl %eax, %edx
198 // CHECK: encoding: [0x66,0x0f,0x49,0xd0]
201 // CHECK: cmovnel %eax, %edx
202 // CHECK: encoding: [0x66,0x0f,0x45,0xd0]
205 // CHECK: cmovol %eax, %edx
206 // CHECK: encoding: [0x66,0x0f,0x40,0xd0]
209 // CHECK: cmovpl %eax, %edx
210 // CHECK: encoding: [0x66,0x0f,0x4a,0xd0]
213 // CHECK: cmovsl %eax, %edx
214 // CHECK: encoding: [0x66,0x0f,0x48,0xd0]
217 // CHECK: cmovel %eax, %edx
218 // CHECK: encoding: [0x66,0x0f,0x44,0xd0]
221 // CHECK: fmul %st(0)
222 // CHECK: encoding: [0xd8,0xc8]
225 // CHECK: fadd %st(0)
226 // CHECK: encoding: [0xd8,0xc0]
229 // CHECK: fsub %st(0)
230 // CHECK: encoding: [0xd8,0xe0]
233 // CHECK: fsubr %st(0)
234 // CHECK: encoding: [0xd8,0xe8]
237 // CHECK: fdivr %st(0)
238 // CHECK: encoding: [0xd8,0xf8]
241 // CHECK: fdiv %st(0)
242 // CHECK: encoding: [0xd8,0xf0]
245 // CHECK: movl %cs, %eax
246 // CHECK: encoding: [0x66,0x8c,0xc8]
249 // CHECK: movw %cs, %ax
250 // CHECK: encoding: [0x8c,0xc8]
253 // CHECK: movl %cs, (%eax)
254 // CHECK: encoding: [0x67,0x66,0x8c,0x08]
257 // CHECK: movw %cs, (%eax)
258 // CHECK: encoding: [0x67,0x8c,0x08]
261 // CHECK: movl %eax, %cs
262 // CHECK: encoding: [0x66,0x8e,0xc8]
265 // CHECK: movl (%eax), %cs
266 // CHECK: encoding: [0x67,0x66,0x8e,0x08]
269 // CHECK: movw (%eax), %cs
270 // CHECK: encoding: [0x67,0x8e,0x08]
273 // CHECK: movl %cr0, %eax
274 // CHECK: encoding: [0x0f,0x20,0xc0]
277 // CHECK: movl %cr1, %eax
278 // CHECK: encoding: [0x0f,0x20,0xc8]
281 // CHECK: movl %cr2, %eax
282 // CHECK: encoding: [0x0f,0x20,0xd0]
285 // CHECK: movl %cr3, %eax
286 // CHECK: encoding: [0x0f,0x20,0xd8]
289 // CHECK: movl %cr4, %eax
290 // CHECK: encoding: [0x0f,0x20,0xe0]
293 // CHECK: movl %dr0, %eax
294 // CHECK: encoding: [0x0f,0x21,0xc0]
297 // CHECK: movl %dr1, %eax
298 // CHECK: encoding: [0x0f,0x21,0xc8]
301 // CHECK: movl %dr1, %eax
302 // CHECK: encoding: [0x0f,0x21,0xc8]
305 // CHECK: movl %dr2, %eax
306 // CHECK: encoding: [0x0f,0x21,0xd0]
309 // CHECK: movl %dr3, %eax
310 // CHECK: encoding: [0x0f,0x21,0xd8]
313 // CHECK: movl %dr4, %eax
314 // CHECK: encoding: [0x0f,0x21,0xe0]
317 // CHECK: movl %dr5, %eax
318 // CHECK: encoding: [0x0f,0x21,0xe8]
321 // CHECK: movl %dr6, %eax
322 // CHECK: encoding: [0x0f,0x21,0xf0]
325 // CHECK: movl %dr7, %eax
326 // CHECK: encoding: [0x0f,0x21,0xf8]
330 // CHECK: encoding: [0x9b]
333 // CHECK: [0x65,0x66,0x8b,0x06,0x7c,0x00]
334 // FIXME: This is a correct bug poor encoding: Use 65 66 a1 7c 00
338 // CHECK: encoding: [0x60]
342 // CHECK: encoding: [0x61]
346 // CHECK: encoding: [0x60]
350 // CHECK: encoding: [0x61]
354 // CHECK: encoding: [0x66,0x60]
358 // CHECK: encoding: [0x66,0x61]
361 // CHECK: jmpw *8(%eax)
362 // CHECK: encoding: [0x67,0xff,0x60,0x08]
365 // CHECK: jmpl *8(%eax)
366 // CHECK: encoding: [0x67,0x66,0xff,0x60,0x08]
369 // CHECK: lcalll $2, $4660
370 // CHECK: encoding: [0x66,0x9a,0x34,0x12,0x00,0x00,0x02,0x00]
377 // CHECK: encoding: [0xe3,A]
380 // CHECK: encoding: [0x67,0xe3,A]
384 // CHECK: encoding: [0xcf]
387 // CHECK: encoding: [0xcf]
390 // CHECK: encoding: [0x66,0xcf]
394 // CHECK: encoding: [0x0f,0x07]
397 // CHECK: encoding: [0x0f,0x07]
399 testl %ecx, -24(%ebp)
400 // CHECK: testl -24(%ebp), %ecx
401 testl -24(%ebp), %ecx
402 // CHECK: testl -24(%ebp), %ecx
407 // CHECK: encoding: [0x0e]
410 // CHECK: encoding: [0x1e]
413 // CHECK: encoding: [0x16]
416 // CHECK: encoding: [0x06]
419 // CHECK: encoding: [0x0f,0xa0]
422 // CHECK: encoding: [0x0f,0xa8]
426 // CHECK: encoding: [0x0e]
429 // CHECK: encoding: [0x1e]
432 // CHECK: encoding: [0x16]
435 // CHECK: encoding: [0x06]
438 // CHECK: encoding: [0x0f,0xa0]
441 // CHECK: encoding: [0x0f,0xa8]
445 // CHECK: encoding: [0x66,0x0e]
448 // CHECK: encoding: [0x66,0x1e]
451 // CHECK: encoding: [0x66,0x16]
454 // CHECK: encoding: [0x66,0x06]
457 // CHECK: encoding: [0x66,0x0f,0xa0]
460 // CHECK: encoding: [0x66,0x0f,0xa8]
464 // CHECK: encoding: [0x17]
467 // CHECK: encoding: [0x1f]
470 // CHECK: encoding: [0x07]
474 // CHECK: encoding: [0x66,0x17]
477 // CHECK: encoding: [0x66,0x1f]
480 // CHECK: encoding: [0x66,0x07]
505 setneb %cl // CHECK: setne %cl
506 setcb %bl // CHECK: setb %bl
507 setnaeb %bl // CHECK: setb %bl
510 // CHECK: lcalll $31438, $31438
511 // CHECK: lcalll $31438, $31438
512 // CHECK: ljmpl $31438, $31438
513 // CHECK: ljmpl $31438, $31438
515 calll $0x7ace,$0x7ace
516 lcalll $0x7ace,$0x7ace
518 ljmpl $0x7ace,$0x7ace
520 // CHECK: lcallw $31438, $31438
521 // CHECK: lcallw $31438, $31438
522 // CHECK: ljmpw $31438, $31438
523 // CHECK: ljmpw $31438, $31438
525 callw $0x7ace,$0x7ace
526 lcallw $0x7ace,$0x7ace
528 ljmpw $0x7ace,$0x7ace
530 // CHECK: lcallw $31438, $31438
531 // CHECK: lcallw $31438, $31438
532 // CHECK: ljmpw $31438, $31438
533 // CHECK: ljmpw $31438, $31438
536 lcall $0x7ace,$0x7ace
543 // CHECK: incb %al # encoding: [0xfe,0xc0]
546 // CHECK: incw %ax # encoding: [0x40]
549 // CHECK: incl %eax # encoding: [0x66,0x40]
552 // CHECK: decb %al # encoding: [0xfe,0xc8]
555 // CHECK: decw %ax # encoding: [0x48]
558 // CHECK: decl %eax # encoding: [0x66,0x48]
561 // CHECK: pshufw $14, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x0e]
562 pshufw $14, %mm4, %mm0
564 // CHECK: pshufw $90, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x5a]
565 pshufw $90, %mm4, %mm0
568 // CHECK: encoding: [0x37]
572 // CHECK: encoding: [0xd5,0x01]
576 // CHECK: encoding: [0xd5,0x0a]
580 // CHECK: encoding: [0xd5,0x0a]
584 // CHECK: encoding: [0xd4,0x02]
588 // CHECK: encoding: [0xd4,0x0a]
592 // CHECK: encoding: [0xd4,0x0a]
596 // CHECK: encoding: [0x3f]
600 // CHECK: encoding: [0x27]
604 // CHECK: encoding: [0x2f]
607 // CHECK: retw $31438
608 // CHECK: encoding: [0xc2,0xce,0x7a]
611 // CHECK: lretw $31438
612 // CHECK: encoding: [0xca,0xce,0x7a]
615 // CHECK: retw $31438
616 // CHECK: encoding: [0xc2,0xce,0x7a]
619 // CHECK: lretw $31438
620 // CHECK: encoding: [0xca,0xce,0x7a]
623 // CHECK: retl $31438
624 // CHECK: encoding: [0x66,0xc2,0xce,0x7a]
627 // CHECK: lretl $31438
628 // CHECK: encoding: [0x66,0xca,0xce,0x7a]
631 // CHECK: bound 2(%eax), %bx
632 // CHECK: encoding: [0x67,0x62,0x58,0x02]
635 // CHECK: bound 4(%ebx), %ecx
636 // CHECK: encoding: [0x67,0x66,0x62,0x4b,0x04]
639 // CHECK: arpl %bx, %bx
640 // CHECK: encoding: [0x63,0xdb]
643 // CHECK: arpl %bx, 6(%ecx)
644 // CHECK: encoding: [0x67,0x63,0x59,0x06]
647 // CHECK: lgdtw 4(%eax)
648 // CHECK: encoding: [0x67,0x0f,0x01,0x50,0x04]
651 // CHECK: lgdtw 4(%eax)
652 // CHECK: encoding: [0x67,0x0f,0x01,0x50,0x04]
655 // CHECK: lgdtl 4(%eax)
656 // CHECK: encoding: [0x67,0x66,0x0f,0x01,0x50,0x04]
659 // CHECK: lidtw 4(%eax)
660 // CHECK: encoding: [0x67,0x0f,0x01,0x58,0x04]
663 // CHECK: lidtw 4(%eax)
664 // CHECK: encoding: [0x67,0x0f,0x01,0x58,0x04]
667 // CHECK: lidtl 4(%eax)
668 // CHECK: encoding: [0x67,0x66,0x0f,0x01,0x58,0x04]
671 // CHECK: sgdtw 4(%eax)
672 // CHECK: encoding: [0x67,0x0f,0x01,0x40,0x04]
675 // CHECK: sgdtw 4(%eax)
676 // CHECK: encoding: [0x67,0x0f,0x01,0x40,0x04]
679 // CHECK: sgdtl 4(%eax)
680 // CHECK: encoding: [0x67,0x66,0x0f,0x01,0x40,0x04]
683 // CHECK: sidtw 4(%eax)
684 // CHECK: encoding: [0x67,0x0f,0x01,0x48,0x04]
687 // CHECK: sidtw 4(%eax)
688 // CHECK: encoding: [0x67,0x0f,0x01,0x48,0x04]
691 // CHECK: sidtl 4(%eax)
692 // CHECK: encoding: [0x67,0x66,0x0f,0x01,0x48,0x04]
695 // CHECK: fcompi %st(2)
696 // CHECK: encoding: [0xdf,0xf2]
699 // CHECK: fcompi %st(2)
700 // CHECK: encoding: [0xdf,0xf2]
704 // CHECK: encoding: [0xdf,0xf1]
707 // CHECK: fucompi %st(2)
708 // CHECK: encoding: [0xdf,0xea]
711 // CHECK: fucompi %st(2)
712 // CHECK: encoding: [0xdf,0xea]
716 // CHECK: encoding: [0xdf,0xe9]
719 // CHECK: fldcw 32493
720 // CHECK: encoding: [0xd9,0x2e,0xed,0x7e]
723 // CHECK: fldcw 32493
724 // CHECK: encoding: [0xd9,0x2e,0xed,0x7e]
727 // CHECK: fnstcw 32493
728 // CHECK: encoding: [0xd9,0x3e,0xed,0x7e]
731 // CHECK: fnstcw 32493
732 // CHECK: encoding: [0xd9,0x3e,0xed,0x7e]
736 // CHECK: encoding: [0x9b]
740 // CHECK: encoding: [0x9b]
743 // CHECK: fnstsw 32493
744 // CHECK: encoding: [0xdd,0x3e,0xed,0x7e]
747 // CHECK: fnstsw 32493
748 // CHECK: encoding: [0xdd,0x3e,0xed,0x7e]
752 // CHECK: encoding: [0x9b]
756 // CHECK: encoding: [0x9b]
760 // CHECK: encoding: [0x0f,0x00,0x26,0xed,0x7e]
764 // CHECK: encoding: [0x0f,0x00,0x26,0xed,0x7e]
768 // CHECK: encoding: [0x9b]
772 // CHECK: encoding: [0xdb,0xe2]
776 // CHECK: encoding: [0x0f,0x0b]
780 // CHECK: encoding: [0x0f,0x0b]
784 // CHECK: encoding: [0x0f,0xb9]
788 // CHECK: encoding: [0xe1,A]
792 // CHECK: encoding: [0xe0,A]
795 // CHECK: outsb # encoding: [0x6e]
802 // CHECK: outsw # encoding: [0x6f]
809 // CHECK: outsl # encoding: [0x66,0x6f]
815 // CHECK: insb # encoding: [0x6c]
820 // CHECK: insw # encoding: [0x6d]
825 // CHECK: insl # encoding: [0x66,0x6d]
830 // CHECK: movsb # encoding: [0xa4]
834 movsb %ds:(%si), %es:(%di)
835 movsb (%si), %es:(%di)
837 // CHECK: movsw # encoding: [0xa5]
841 movsw %ds:(%si), %es:(%di)
842 movsw (%si), %es:(%di)
844 // CHECK: movsl # encoding: [0x66,0xa5]
848 movsl %ds:(%si), %es:(%di)
849 movsl (%si), %es:(%di)
851 // CHECK: lodsb # encoding: [0xac]
862 // CHECK: lodsw # encoding: [0xad]
873 // CHECK: lodsl # encoding: [0x66,0xad]
879 lodsl %ds:(%si), %eax
884 // CHECK: stosb # encoding: [0xaa]
891 // CHECK: stosw # encoding: [0xab]
898 // CHECK: stosl # encoding: [0x66,0xab]
902 stosl %eax, %es:(%di)
906 // CHECK: encoding: [0x0f,0x00,0xc8]
910 // CHECK: encoding: [0x66,0x0f,0x00,0xc8]
915 // CHECK: encoding: [0xde,0xe1]
918 // CHECK: fsubp %st(2)
919 // CHECK: encoding: [0xde,0xe2]
922 // CHECK: xchgl %eax, %eax
923 // CHECK: encoding: [0x66,0x90]
926 // CHECK: xchgw %ax, %ax
927 // CHECK: encoding: [0x90]
930 // CHECK: xchgl %ecx, %eax
931 // CHECK: encoding: [0x66,0x91]
934 // CHECK: xchgl %ecx, %eax
935 // CHECK: encoding: [0x66,0x91]
939 // CHECK: encoding: [0xc3]
943 // CHECK: encoding: [0x66,0xc3]
947 // CHECK: encoding: [0xcb]
951 // CHECK: encoding: [0x66,0xcb]