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]
20 // CHECK: encoding: [0x0f,0x01,0xc9]
24 // CHECK: encoding: [0x0f,0x01,0xc1]
27 // CHECK: encoding: [0x0f,0x01,0xc2]
30 // CHECK: encoding: [0x0f,0x01,0xc3]
33 // CHECK: encoding: [0x0f,0x01,0xc4]
36 // CHECK: encoding: [0x0f,0x01,0xf8]
40 // CHECK: encoding: [0x0f,0x01,0xf9]
43 // CHECK: movl %eax, 16(%ebp) # encoding: [0x89,0x45,0x10]
45 // CHECK: movl %eax, -16(%ebp) # encoding: [0x89,0x45,0xf0]
48 // CHECK: testb %bl, %cl # encoding: [0x84,0xcb]
51 // CHECK: cmpl %eax, %ebx # encoding: [0x39,0xc3]
54 // CHECK: addw %ax, %ax # encoding: [0x66,0x01,0xc0]
57 // CHECK: shrl %eax # encoding: [0xd1,0xe8]
60 // CHECK: shll %eax # encoding: [0xd1,0xe0]
62 // CHECK: shll %eax # encoding: [0xd1,0xe0]
65 // moffset forms of moves, rdar://7947184
66 movb 0, %al // CHECK: movb 0, %al # encoding: [0xa0,A,A,A,A]
67 movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0xa1,A,A,A,A]
68 movl 0, %eax // CHECK: movl 0, %eax # encoding: [0xa1,A,A,A,A]
73 // CHECK: encoding: [0xce]
76 // CHECK: encoding: [0xcc]
79 // CHECK: encoding: [0xcd,0x04]
82 // CHECK: encoding: [0xcd,0xff]
84 // CHECK: pushfl # encoding: [0x9c]
86 // CHECK: pushfl # encoding: [0x9c]
88 // CHECK: popfl # encoding: [0x9d]
90 // CHECK: popfl # encoding: [0x9d]
96 // CHECK: encoding: [0xc3]
99 // CHECK: cmoval %eax, %edx
100 // CHECK: encoding: [0x0f,0x47,0xd0]
103 // CHECK: cmovael %eax, %edx
104 // CHECK: encoding: [0x0f,0x43,0xd0]
107 // CHECK: cmovbel %eax, %edx
108 // CHECK: encoding: [0x0f,0x46,0xd0]
111 // CHECK: cmovbl %eax, %edx
112 // CHECK: encoding: [0x0f,0x42,0xd0]
115 // CHECK: cmovbw %bx, %bx
119 // CHECK: cmovbel %eax, %edx
120 // CHECK: encoding: [0x0f,0x46,0xd0]
123 // CHECK: cmovbl %eax, %edx
124 // CHECK: encoding: [0x0f,0x42,0xd0]
127 // CHECK: cmovel %eax, %edx
128 // CHECK: encoding: [0x0f,0x44,0xd0]
131 // CHECK: cmovgl %eax, %edx
132 // CHECK: encoding: [0x0f,0x4f,0xd0]
135 // CHECK: cmovgel %eax, %edx
136 // CHECK: encoding: [0x0f,0x4d,0xd0]
139 // CHECK: cmovll %eax, %edx
140 // CHECK: encoding: [0x0f,0x4c,0xd0]
143 // CHECK: cmovlel %eax, %edx
144 // CHECK: encoding: [0x0f,0x4e,0xd0]
147 // CHECK: cmovbel %eax, %edx
148 // CHECK: encoding: [0x0f,0x46,0xd0]
151 // CHECK: cmovnel %eax, %edx
152 // CHECK: encoding: [0x0f,0x45,0xd0]
155 // CHECK: cmovael %eax, %edx
156 // CHECK: encoding: [0x0f,0x43,0xd0]
159 // CHECK: cmoval %eax, %edx
160 // CHECK: encoding: [0x0f,0x47,0xd0]
163 // CHECK: cmovael %eax, %edx
164 // CHECK: encoding: [0x0f,0x43,0xd0]
167 // CHECK: cmovnel %eax, %edx
168 // CHECK: encoding: [0x0f,0x45,0xd0]
171 // CHECK: cmovlel %eax, %edx
172 // CHECK: encoding: [0x0f,0x4e,0xd0]
175 // CHECK: cmovgel %eax, %edx
176 // CHECK: encoding: [0x0f,0x4d,0xd0]
179 // CHECK: cmovnel %eax, %edx
180 // CHECK: encoding: [0x0f,0x45,0xd0]
183 // CHECK: cmovlel %eax, %edx
184 // CHECK: encoding: [0x0f,0x4e,0xd0]
187 // CHECK: cmovll %eax, %edx
188 // CHECK: encoding: [0x0f,0x4c,0xd0]
191 // CHECK: cmovgel %eax, %edx
192 // CHECK: encoding: [0x0f,0x4d,0xd0]
195 // CHECK: cmovgl %eax, %edx
196 // CHECK: encoding: [0x0f,0x4f,0xd0]
199 // CHECK: cmovnol %eax, %edx
200 // CHECK: encoding: [0x0f,0x41,0xd0]
203 // CHECK: cmovnpl %eax, %edx
204 // CHECK: encoding: [0x0f,0x4b,0xd0]
207 // CHECK: cmovnsl %eax, %edx
208 // CHECK: encoding: [0x0f,0x49,0xd0]
211 // CHECK: cmovnel %eax, %edx
212 // CHECK: encoding: [0x0f,0x45,0xd0]
215 // CHECK: cmovol %eax, %edx
216 // CHECK: encoding: [0x0f,0x40,0xd0]
219 // CHECK: cmovpl %eax, %edx
220 // CHECK: encoding: [0x0f,0x4a,0xd0]
223 // CHECK: cmovsl %eax, %edx
224 // CHECK: encoding: [0x0f,0x48,0xd0]
227 // CHECK: cmovel %eax, %edx
228 // CHECK: encoding: [0x0f,0x44,0xd0]
231 // CHECK: cmpps $0, %xmm0, %xmm1
232 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
233 cmpps $0, %xmm0, %xmm1
234 // CHECK: cmpps $0, (%eax), %xmm1
235 // CHECK: encoding: [0x0f,0xc2,0x08,0x00]
236 cmpps $0, 0(%eax), %xmm1
237 // CHECK: cmppd $0, %xmm0, %xmm1
238 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x00]
239 cmppd $0, %xmm0, %xmm1
240 // CHECK: cmppd $0, (%eax), %xmm1
241 // CHECK: encoding: [0x66,0x0f,0xc2,0x08,0x00]
242 cmppd $0, 0(%eax), %xmm1
243 // CHECK: cmpss $0, %xmm0, %xmm1
244 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x00]
245 cmpss $0, %xmm0, %xmm1
246 // CHECK: cmpss $0, (%eax), %xmm1
247 // CHECK: encoding: [0xf3,0x0f,0xc2,0x08,0x00]
248 cmpss $0, 0(%eax), %xmm1
249 // CHECK: cmpsd $0, %xmm0, %xmm1
250 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x00]
251 cmpsd $0, %xmm0, %xmm1
252 // CHECK: cmpsd $0, (%eax), %xmm1
253 // CHECK: encoding: [0xf2,0x0f,0xc2,0x08,0x00]
254 cmpsd $0, 0(%eax), %xmm1
256 // Check matching of instructions which embed the SSE comparison code.
258 // CHECK: cmpps $0, %xmm0, %xmm1
259 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
262 // CHECK: cmppd $1, %xmm0, %xmm1
263 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x01]
266 // CHECK: cmpss $2, %xmm0, %xmm1
267 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x02]
270 // CHECK: cmppd $3, %xmm0, %xmm1
271 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x03]
272 cmpunordpd %xmm0, %xmm1
274 // CHECK: cmpps $4, %xmm0, %xmm1
275 // CHECK: encoding: [0x0f,0xc2,0xc8,0x04]
276 cmpneqps %xmm0, %xmm1
278 // CHECK: cmppd $5, %xmm0, %xmm1
279 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x05]
280 cmpnltpd %xmm0, %xmm1
282 // CHECK: cmpss $6, %xmm0, %xmm1
283 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x06]
284 cmpnless %xmm0, %xmm1
286 // CHECK: cmpsd $7, %xmm0, %xmm1
287 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x07]
288 cmpordsd %xmm0, %xmm1
291 // CHECK: fmul %st(0)
292 // CHECK: encoding: [0xd8,0xc8]
295 // CHECK: fadd %st(0)
296 // CHECK: encoding: [0xd8,0xc0]
299 // CHECK: fsub %st(0)
300 // CHECK: encoding: [0xd8,0xe0]
303 // CHECK: fsubr %st(0)
304 // CHECK: encoding: [0xd8,0xe8]
307 // CHECK: fdivr %st(0)
308 // CHECK: encoding: [0xd8,0xf8]
311 // CHECK: fdiv %st(0)
312 // CHECK: encoding: [0xd8,0xf0]
316 // CHECK: movl %cs, %eax
317 // CHECK: encoding: [0x8c,0xc8]
320 // CHECK: movw %cs, %ax
321 // CHECK: encoding: [0x66,0x8c,0xc8]
324 // CHECK: movl %cs, (%eax)
325 // CHECK: encoding: [0x8c,0x08]
328 // CHECK: movw %cs, (%eax)
329 // CHECK: encoding: [0x66,0x8c,0x08]
332 // CHECK: movl %eax, %cs
333 // CHECK: encoding: [0x8e,0xc8]
336 // CHECK: movl (%eax), %cs
337 // CHECK: encoding: [0x8e,0x08]
340 // CHECK: movw (%eax), %cs
341 // CHECK: encoding: [0x66,0x8e,0x08]
345 // CHECK: movl %cr0, %eax
346 // CHECK: encoding: [0x0f,0x20,0xc0]
349 // CHECK: movl %cr1, %eax
350 // CHECK: encoding: [0x0f,0x20,0xc8]
353 // CHECK: movl %cr2, %eax
354 // CHECK: encoding: [0x0f,0x20,0xd0]
357 // CHECK: movl %cr3, %eax
358 // CHECK: encoding: [0x0f,0x20,0xd8]
361 // CHECK: movl %cr4, %eax
362 // CHECK: encoding: [0x0f,0x20,0xe0]
365 // CHECK: movl %dr0, %eax
366 // CHECK: encoding: [0x0f,0x21,0xc0]
369 // CHECK: movl %dr1, %eax
370 // CHECK: encoding: [0x0f,0x21,0xc8]
373 // CHECK: movl %dr1, %eax
374 // CHECK: encoding: [0x0f,0x21,0xc8]
377 // CHECK: movl %dr2, %eax
378 // CHECK: encoding: [0x0f,0x21,0xd0]
381 // CHECK: movl %dr3, %eax
382 // CHECK: encoding: [0x0f,0x21,0xd8]
385 // CHECK: movl %dr4, %eax
386 // CHECK: encoding: [0x0f,0x21,0xe0]
389 // CHECK: movl %dr5, %eax
390 // CHECK: encoding: [0x0f,0x21,0xe8]
393 // CHECK: movl %dr6, %eax
394 // CHECK: encoding: [0x0f,0x21,0xf0]
397 // CHECK: movl %dr7, %eax
398 // CHECK: encoding: [0x0f,0x21,0xf8]
403 // CHECK: encoding: [0x9b]
407 // CHECK: [0x65,0x8b,0x05,0x7c,0x00,0x00,0x00]
408 // FIXME: This is a correct bug poor encoding: Use 65 a1 7c 00 00 00
412 // CHECK: encoding: [0x60]
416 // CHECK: encoding: [0x61]
420 // CHECK: encoding: [0x60]
424 // CHECK: encoding: [0x61]
427 // CHECK: jmpl *8(%eax)
428 // CHECK: encoding: [0xff,0x60,0x08]
432 // CHECK: lcalll $2, $4660
433 // CHECK: encoding: [0x9a,0x34,0x12,0x00,0x00,0x02,0x00]
441 // CHECK: encoding: [0x67,0xe3,A]
444 // CHECK: encoding: [0xe3,A]
449 // CHECK: encoding: [0xcf]
452 // CHECK: encoding: [0x66,0xcf]
455 // CHECK: encoding: [0xcf]
460 // CHECK: encoding: [0x0f,0x07]
463 // CHECK: encoding: [0x0f,0x07]
466 testl %ecx, -24(%ebp)
467 // CHECK: testl -24(%ebp), %ecx
468 testl -24(%ebp), %ecx
469 // CHECK: testl -24(%ebp), %ecx
475 // CHECK: encoding: [0x0e]
478 // CHECK: encoding: [0x1e]
481 // CHECK: encoding: [0x16]
484 // CHECK: encoding: [0x06]
487 // CHECK: encoding: [0x0f,0xa0]
490 // CHECK: encoding: [0x0f,0xa8]
494 // CHECK: encoding: [0x66,0x0e]
497 // CHECK: encoding: [0x66,0x1e]
500 // CHECK: encoding: [0x66,0x16]
503 // CHECK: encoding: [0x66,0x06]
506 // CHECK: encoding: [0x66,0x0f,0xa0]
509 // CHECK: encoding: [0x66,0x0f,0xa8]
513 // CHECK: encoding: [0x17]
516 // CHECK: encoding: [0x1f]
519 // CHECK: encoding: [0x07]
547 setneb %cl // CHECK: setne %cl
548 setcb %bl // CHECK: setb %bl
549 setnaeb %bl // CHECK: setb %bl
552 // CHECK: lcalll $31438, $31438
553 // CHECK: lcalll $31438, $31438
554 // CHECK: ljmpl $31438, $31438
555 // CHECK: ljmpl $31438, $31438
557 calll $0x7ace,$0x7ace
558 lcalll $0x7ace,$0x7ace
560 ljmpl $0x7ace,$0x7ace
562 // CHECK: lcalll $31438, $31438
563 // CHECK: lcalll $31438, $31438
564 // CHECK: ljmpl $31438, $31438
565 // CHECK: ljmpl $31438, $31438
568 lcall $0x7ace,$0x7ace
576 // CHECK: incb %al # encoding: [0xfe,0xc0]
579 // CHECK: incw %ax # encoding: [0x66,0x40]
582 // CHECK: incl %eax # encoding: [0x40]
585 // CHECK: decb %al # encoding: [0xfe,0xc8]
588 // CHECK: decw %ax # encoding: [0x66,0x48]
591 // CHECK: decl %eax # encoding: [0x48]
594 // CHECK: pshufw $14, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x0e]
595 pshufw $14, %mm4, %mm0
597 // CHECK: pshufw $90, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x5a]
599 pshufw $90, %mm4, %mm0
603 // CHECK: encoding: [0x37]
607 // CHECK: encoding: [0xd5,0x01]
611 // CHECK: encoding: [0xd5,0x0a]
615 // CHECK: encoding: [0xd5,0x0a]
619 // CHECK: encoding: [0xd4,0x02]
623 // CHECK: encoding: [0xd4,0x0a]
627 // CHECK: encoding: [0xd4,0x0a]
631 // CHECK: encoding: [0x3f]
635 // CHECK: encoding: [0x27]
639 // CHECK: encoding: [0x2f]
642 // CHECK: retw $31438
643 // CHECK: encoding: [0x66,0xc2,0xce,0x7a]
646 // CHECK: lretw $31438
647 // CHECK: encoding: [0x66,0xca,0xce,0x7a]
650 // CHECK: bound 2(%eax), %bx
651 // CHECK: encoding: [0x66,0x62,0x58,0x02]
654 // CHECK: bound 4(%ebx), %ecx
655 // CHECK: encoding: [0x62,0x4b,0x04]
658 // CHECK: arpl %bx, %bx
659 // CHECK: encoding: [0x63,0xdb]
662 // CHECK: arpl %bx, 6(%ecx)
663 // CHECK: encoding: [0x63,0x59,0x06]
666 // CHECK: lgdtw 4(%eax)
667 // CHECK: encoding: [0x66,0x0f,0x01,0x50,0x04]
670 // CHECK: lgdt 4(%eax)
671 // CHECK: encoding: [0x0f,0x01,0x50,0x04]
674 // CHECK: lgdt 4(%eax)
675 // CHECK: encoding: [0x0f,0x01,0x50,0x04]
678 // CHECK: lidtw 4(%eax)
679 // CHECK: encoding: [0x66,0x0f,0x01,0x58,0x04]
682 // CHECK: lidt 4(%eax)
683 // CHECK: encoding: [0x0f,0x01,0x58,0x04]
686 // CHECK: lidt 4(%eax)
687 // CHECK: encoding: [0x0f,0x01,0x58,0x04]
690 // CHECK: sgdtw 4(%eax)
691 // CHECK: encoding: [0x66,0x0f,0x01,0x40,0x04]
694 // CHECK: sgdt 4(%eax)
695 // CHECK: encoding: [0x0f,0x01,0x40,0x04]
698 // CHECK: sgdt 4(%eax)
699 // CHECK: encoding: [0x0f,0x01,0x40,0x04]
702 // CHECK: sidtw 4(%eax)
703 // CHECK: encoding: [0x66,0x0f,0x01,0x48,0x04]
706 // CHECK: sidt 4(%eax)
707 // CHECK: encoding: [0x0f,0x01,0x48,0x04]
710 // CHECK: sidt 4(%eax)
711 // CHECK: encoding: [0x0f,0x01,0x48,0x04]
714 // CHECK: fcompi %st(2)
715 // CHECK: encoding: [0xdf,0xf2]
718 // CHECK: fcompi %st(2)
719 // CHECK: encoding: [0xdf,0xf2]
722 // CHECK: fcompi %st(1)
723 // CHECK: encoding: [0xdf,0xf1]
726 // CHECK: fucompi %st(2)
727 // CHECK: encoding: [0xdf,0xea]
730 // CHECK: fucompi %st(2)
731 // CHECK: encoding: [0xdf,0xea]
734 // CHECK: fucompi %st(1)
735 // CHECK: encoding: [0xdf,0xe9]
738 // CHECK: fldcw 32493
739 // CHECK: encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00]
742 // CHECK: fldcw 32493
743 // CHECK: encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00]
746 // CHECK: fnstcw 32493
747 // CHECK: encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00]
750 // CHECK: fnstcw 32493
751 // CHECK: encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00]
755 // CHECK: encoding: [0x9b]
759 // CHECK: encoding: [0x9b]
762 // CHECK: fnstsw 32493
763 // CHECK: encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00]
766 // CHECK: fnstsw 32493
767 // CHECK: encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00]
771 // CHECK: encoding: [0x9b]
775 // CHECK: encoding: [0x9b]
779 // CHECK: encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00]
783 // CHECK: encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00]
787 // CHECK: encoding: [0x9b]
791 // CHECK: encoding: [0xdb,0xe2]
795 // CHECK: encoding: [0x0f,0x0b]
799 // CHECK: encoding: [0x0f,0x0b]
803 // CHECK: encoding: [0x0f,0xb9]