// RUN: llvm-mc -triple i386-unknown-unknown --show-encoding %s | FileCheck %s pause // CHECK: pause // CHECK: encoding: [0xf3,0x90] sfence // CHECK: sfence // CHECK: encoding: [0x0f,0xae,0xf8] lfence // CHECK: lfence // CHECK: encoding: [0x0f,0xae,0xe8] mfence // CHECK: mfence // CHECK: encoding: [0x0f,0xae,0xf0] monitor // CHECK: monitor // CHECK: encoding: [0x0f,0x01,0xc8] mwait // CHECK: mwait // CHECK: encoding: [0x0f,0x01,0xc9] vmcall // CHECK: vmcall // CHECK: encoding: [0x0f,0x01,0xc1] vmlaunch // CHECK: vmlaunch // CHECK: encoding: [0x0f,0x01,0xc2] vmresume // CHECK: vmresume // CHECK: encoding: [0x0f,0x01,0xc3] vmxoff // CHECK: vmxoff // CHECK: encoding: [0x0f,0x01,0xc4] swapgs // CHECK: swapgs // CHECK: encoding: [0x0f,0x01,0xf8] rdtscp // CHECK: rdtscp // CHECK: encoding: [0x0f,0x01,0xf9] // CHECK: movl %eax, 16(%ebp) # encoding: [0x89,0x45,0x10] movl %eax, 16(%ebp) // CHECK: movl %eax, -16(%ebp) # encoding: [0x89,0x45,0xf0] movl %eax, -16(%ebp) // CHECK: testb %bl, %cl # encoding: [0x84,0xcb] testb %bl, %cl // CHECK: cmpl %eax, %ebx # encoding: [0x39,0xc3] cmpl %eax, %ebx // CHECK: addw %ax, %ax # encoding: [0x66,0x01,0xc0] addw %ax, %ax // CHECK: shrl %eax # encoding: [0xd1,0xe8] shrl $1, %eax // CHECK: shll %eax # encoding: [0xd1,0xe0] sall $1, %eax // CHECK: shll %eax # encoding: [0xd1,0xe0] sal $1, %eax // moffset forms of moves, rdar://7947184 movb 0, %al // CHECK: movb 0, %al # encoding: [0xa0,A,A,A,A] movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0xa1,A,A,A,A] movl 0, %eax // CHECK: movl 0, %eax # encoding: [0xa1,A,A,A,A] // rdar://7973775 into // CHECK: into // CHECK: encoding: [0xce] int3 // CHECK: int3 // CHECK: encoding: [0xcc] int $4 // CHECK: int $4 // CHECK: encoding: [0xcd,0x04] int $255 // CHECK: int $255 // CHECK: encoding: [0xcd,0xff] // CHECK: pushfl # encoding: [0x9c] pushf // CHECK: pushfl # encoding: [0x9c] pushfl // CHECK: popfl # encoding: [0x9d] popf // CHECK: popfl # encoding: [0x9d] popfl // rdar://8014869 retl // CHECK: ret // CHECK: encoding: [0xc3] // rdar://7973854 // CHECK: cmoval %eax, %edx // CHECK: encoding: [0x0f,0x47,0xd0] cmoval %eax,%edx // CHECK: cmovael %eax, %edx // CHECK: encoding: [0x0f,0x43,0xd0] cmovael %eax,%edx // CHECK: cmovbel %eax, %edx // CHECK: encoding: [0x0f,0x46,0xd0] cmovbel %eax,%edx // CHECK: cmovbl %eax, %edx // CHECK: encoding: [0x0f,0x42,0xd0] cmovbl %eax,%edx // CHECK: cmovbw %bx, %bx cmovnae %bx,%bx // CHECK: cmovbel %eax, %edx // CHECK: encoding: [0x0f,0x46,0xd0] cmovbel %eax,%edx // CHECK: cmovbl %eax, %edx // CHECK: encoding: [0x0f,0x42,0xd0] cmovcl %eax,%edx // CHECK: cmovel %eax, %edx // CHECK: encoding: [0x0f,0x44,0xd0] cmovel %eax,%edx // CHECK: cmovgl %eax, %edx // CHECK: encoding: [0x0f,0x4f,0xd0] cmovgl %eax,%edx // CHECK: cmovgel %eax, %edx // CHECK: encoding: [0x0f,0x4d,0xd0] cmovgel %eax,%edx // CHECK: cmovll %eax, %edx // CHECK: encoding: [0x0f,0x4c,0xd0] cmovll %eax,%edx // CHECK: cmovlel %eax, %edx // CHECK: encoding: [0x0f,0x4e,0xd0] cmovlel %eax,%edx // CHECK: cmovbel %eax, %edx // CHECK: encoding: [0x0f,0x46,0xd0] cmovnal %eax,%edx // CHECK: cmovnel %eax, %edx // CHECK: encoding: [0x0f,0x45,0xd0] cmovnel %eax,%edx // CHECK: cmovael %eax, %edx // CHECK: encoding: [0x0f,0x43,0xd0] cmovnbl %eax,%edx // CHECK: cmoval %eax, %edx // CHECK: encoding: [0x0f,0x47,0xd0] cmovnbel %eax,%edx // CHECK: cmovael %eax, %edx // CHECK: encoding: [0x0f,0x43,0xd0] cmovncl %eax,%edx // CHECK: cmovnel %eax, %edx // CHECK: encoding: [0x0f,0x45,0xd0] cmovnel %eax,%edx // CHECK: cmovlel %eax, %edx // CHECK: encoding: [0x0f,0x4e,0xd0] cmovngl %eax,%edx // CHECK: cmovgel %eax, %edx // CHECK: encoding: [0x0f,0x4d,0xd0] cmovnl %eax,%edx // CHECK: cmovnel %eax, %edx // CHECK: encoding: [0x0f,0x45,0xd0] cmovnel %eax,%edx // CHECK: cmovlel %eax, %edx // CHECK: encoding: [0x0f,0x4e,0xd0] cmovngl %eax,%edx // CHECK: cmovll %eax, %edx // CHECK: encoding: [0x0f,0x4c,0xd0] cmovngel %eax,%edx // CHECK: cmovgel %eax, %edx // CHECK: encoding: [0x0f,0x4d,0xd0] cmovnll %eax,%edx // CHECK: cmovgl %eax, %edx // CHECK: encoding: [0x0f,0x4f,0xd0] cmovnlel %eax,%edx // CHECK: cmovnol %eax, %edx // CHECK: encoding: [0x0f,0x41,0xd0] cmovnol %eax,%edx // CHECK: cmovnpl %eax, %edx // CHECK: encoding: [0x0f,0x4b,0xd0] cmovnpl %eax,%edx // CHECK: cmovnsl %eax, %edx // CHECK: encoding: [0x0f,0x49,0xd0] cmovnsl %eax,%edx // CHECK: cmovnel %eax, %edx // CHECK: encoding: [0x0f,0x45,0xd0] cmovnzl %eax,%edx // CHECK: cmovol %eax, %edx // CHECK: encoding: [0x0f,0x40,0xd0] cmovol %eax,%edx // CHECK: cmovpl %eax, %edx // CHECK: encoding: [0x0f,0x4a,0xd0] cmovpl %eax,%edx // CHECK: cmovsl %eax, %edx // CHECK: encoding: [0x0f,0x48,0xd0] cmovsl %eax,%edx // CHECK: cmovel %eax, %edx // CHECK: encoding: [0x0f,0x44,0xd0] cmovzl %eax,%edx // CHECK: cmpps $0, %xmm0, %xmm1 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00] cmpps $0, %xmm0, %xmm1 // CHECK: cmpps $0, (%eax), %xmm1 // CHECK: encoding: [0x0f,0xc2,0x08,0x00] cmpps $0, 0(%eax), %xmm1 // CHECK: cmppd $0, %xmm0, %xmm1 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x00] cmppd $0, %xmm0, %xmm1 // CHECK: cmppd $0, (%eax), %xmm1 // CHECK: encoding: [0x66,0x0f,0xc2,0x08,0x00] cmppd $0, 0(%eax), %xmm1 // CHECK: cmpss $0, %xmm0, %xmm1 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x00] cmpss $0, %xmm0, %xmm1 // CHECK: cmpss $0, (%eax), %xmm1 // CHECK: encoding: [0xf3,0x0f,0xc2,0x08,0x00] cmpss $0, 0(%eax), %xmm1 // CHECK: cmpsd $0, %xmm0, %xmm1 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x00] cmpsd $0, %xmm0, %xmm1 // CHECK: cmpsd $0, (%eax), %xmm1 // CHECK: encoding: [0xf2,0x0f,0xc2,0x08,0x00] cmpsd $0, 0(%eax), %xmm1 // Check matching of instructions which embed the SSE comparison code. // CHECK: cmpps $0, %xmm0, %xmm1 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00] cmpeqps %xmm0, %xmm1 // CHECK: cmppd $1, %xmm0, %xmm1 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x01] cmpltpd %xmm0, %xmm1 // CHECK: cmpss $2, %xmm0, %xmm1 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x02] cmpless %xmm0, %xmm1 // CHECK: cmppd $3, %xmm0, %xmm1 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x03] cmpunordpd %xmm0, %xmm1 // CHECK: cmpps $4, %xmm0, %xmm1 // CHECK: encoding: [0x0f,0xc2,0xc8,0x04] cmpneqps %xmm0, %xmm1 // CHECK: cmppd $5, %xmm0, %xmm1 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x05] cmpnltpd %xmm0, %xmm1 // CHECK: cmpss $6, %xmm0, %xmm1 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x06] cmpnless %xmm0, %xmm1 // CHECK: cmpsd $7, %xmm0, %xmm1 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x07] cmpordsd %xmm0, %xmm1 // rdar://7995856 // CHECK: fmul %st(0) // CHECK: encoding: [0xd8,0xc8] fmul %st(0), %st // CHECK: fadd %st(0) // CHECK: encoding: [0xd8,0xc0] fadd %st(0), %st // CHECK: fsub %st(0) // CHECK: encoding: [0xd8,0xe0] fsub %st(0), %st // CHECK: fsubr %st(0) // CHECK: encoding: [0xd8,0xe8] fsubr %st(0), %st // CHECK: fdivr %st(0) // CHECK: encoding: [0xd8,0xf8] fdivr %st(0), %st // CHECK: fdiv %st(0) // CHECK: encoding: [0xd8,0xf0] fdiv %st(0), %st // radr://8017519 // CHECK: movl %cs, %eax // CHECK: encoding: [0x8c,0xc8] movl %cs, %eax // CHECK: movw %cs, %ax // CHECK: encoding: [0x66,0x8c,0xc8] movw %cs, %ax // CHECK: movl %cs, (%eax) // CHECK: encoding: [0x8c,0x08] movl %cs, (%eax) // CHECK: movw %cs, (%eax) // CHECK: encoding: [0x66,0x8c,0x08] movw %cs, (%eax) // CHECK: movl %eax, %cs // CHECK: encoding: [0x8e,0xc8] movl %eax, %cs // CHECK: movl (%eax), %cs // CHECK: encoding: [0x8e,0x08] movl (%eax), %cs // CHECK: movw (%eax), %cs // CHECK: encoding: [0x66,0x8e,0x08] movw (%eax), %cs // radr://8033374 // CHECK: movl %cr0, %eax // CHECK: encoding: [0x0f,0x20,0xc0] movl %cr0,%eax // CHECK: movl %cr1, %eax // CHECK: encoding: [0x0f,0x20,0xc8] movl %cr1,%eax // CHECK: movl %cr2, %eax // CHECK: encoding: [0x0f,0x20,0xd0] movl %cr2,%eax // CHECK: movl %cr3, %eax // CHECK: encoding: [0x0f,0x20,0xd8] movl %cr3,%eax // CHECK: movl %cr4, %eax // CHECK: encoding: [0x0f,0x20,0xe0] movl %cr4,%eax // CHECK: movl %dr0, %eax // CHECK: encoding: [0x0f,0x21,0xc0] movl %dr0,%eax // CHECK: movl %dr1, %eax // CHECK: encoding: [0x0f,0x21,0xc8] movl %dr1,%eax // CHECK: movl %dr1, %eax // CHECK: encoding: [0x0f,0x21,0xc8] movl %dr1,%eax // CHECK: movl %dr2, %eax // CHECK: encoding: [0x0f,0x21,0xd0] movl %dr2,%eax // CHECK: movl %dr3, %eax // CHECK: encoding: [0x0f,0x21,0xd8] movl %dr3,%eax // CHECK: movl %dr4, %eax // CHECK: encoding: [0x0f,0x21,0xe0] movl %dr4,%eax // CHECK: movl %dr5, %eax // CHECK: encoding: [0x0f,0x21,0xe8] movl %dr5,%eax // CHECK: movl %dr6, %eax // CHECK: encoding: [0x0f,0x21,0xf0] movl %dr6,%eax // CHECK: movl %dr7, %eax // CHECK: encoding: [0x0f,0x21,0xf8] movl %dr7,%eax // radr://8017522 // CHECK: wait // CHECK: encoding: [0x9b] fwait // rdar://7873482 // CHECK: [0x65,0x8b,0x05,0x7c,0x00,0x00,0x00] // FIXME: This is a correct bug poor encoding: Use 65 a1 7c 00 00 00 movl %gs:124, %eax // CHECK: pusha // CHECK: encoding: [0x60] pusha // CHECK: popa // CHECK: encoding: [0x61] popa // CHECK: pushal // CHECK: encoding: [0x60] pushal // CHECK: popal // CHECK: encoding: [0x61] popal // CHECK: jmpl *8(%eax) // CHECK: encoding: [0xff,0x60,0x08] jmp *8(%eax) // PR7465 // CHECK: lcalll $2, $4660 // CHECK: encoding: [0x9a,0x34,0x12,0x00,0x00,0x02,0x00] lcalll $0x2, $0x1234 // rdar://8061602 L1: jcxz L1 // CHECK: jcxz L1 // CHECK: encoding: [0x67,0xe3,A] jecxz L1 // CHECK: jecxz L1 // CHECK: encoding: [0xe3,A] // rdar://8403974 iret // CHECK: iretl // CHECK: encoding: [0xcf] iretw // CHECK: iretw // CHECK: encoding: [0x66,0xcf] iretl // CHECK: iretl // CHECK: encoding: [0xcf] // rdar://8403907 sysret // CHECK: sysretl // CHECK: encoding: [0x0f,0x07] sysretl // CHECK: sysretl // CHECK: encoding: [0x0f,0x07] // rdar://8018260 testl %ecx, -24(%ebp) // CHECK: testl -24(%ebp), %ecx testl -24(%ebp), %ecx // CHECK: testl -24(%ebp), %ecx // rdar://8407242 push %cs // CHECK: pushl %cs // CHECK: encoding: [0x0e] push %ds // CHECK: pushl %ds // CHECK: encoding: [0x1e] push %ss // CHECK: pushl %ss // CHECK: encoding: [0x16] push %es // CHECK: pushl %es // CHECK: encoding: [0x06] push %fs // CHECK: pushl %fs // CHECK: encoding: [0x0f,0xa0] push %gs // CHECK: pushl %gs // CHECK: encoding: [0x0f,0xa8] pushw %cs // CHECK: pushw %cs // CHECK: encoding: [0x66,0x0e] pushw %ds // CHECK: pushw %ds // CHECK: encoding: [0x66,0x1e] pushw %ss // CHECK: pushw %ss // CHECK: encoding: [0x66,0x16] pushw %es // CHECK: pushw %es // CHECK: encoding: [0x66,0x06] pushw %fs // CHECK: pushw %fs // CHECK: encoding: [0x66,0x0f,0xa0] pushw %gs // CHECK: pushw %gs // CHECK: encoding: [0x66,0x0f,0xa8] pop %ss // CHECK: popl %ss // CHECK: encoding: [0x17] pop %ds // CHECK: popl %ds // CHECK: encoding: [0x1f] pop %es // CHECK: popl %es // CHECK: encoding: [0x07] // rdar://8408129 pushfd // CHECK: pushfl popfd // CHECK: popfl pushfl // CHECK: pushfl popfl // CHECK: popfl // rdar://8416805 setc %bl setnae %bl setnb %bl setnc %bl setna %bl setnbe %bl setpe %bl setpo %bl setnge %bl setnl %bl setng %bl setnle %bl // CHECK: lcalll $31438, $31438 // CHECK: lcalll $31438, $31438 // CHECK: ljmpl $31438, $31438 // CHECK: ljmpl $31438, $31438 calll $0x7ace,$0x7ace lcalll $0x7ace,$0x7ace jmpl $0x7ace,$0x7ace ljmpl $0x7ace,$0x7ace // CHECK: lcalll $31438, $31438 // CHECK: lcalll $31438, $31438 // CHECK: ljmpl $31438, $31438 // CHECK: ljmpl $31438, $31438 call $0x7ace,$0x7ace lcall $0x7ace,$0x7ace jmp $0x7ace,$0x7ace ljmp $0x7ace,$0x7ace // rdar://8456370 // CHECK: calll a calll a // CHECK: incb %al # encoding: [0xfe,0xc0] incb %al // CHECK: incw %ax # encoding: [0x66,0x40] incw %ax // CHECK: incl %eax # encoding: [0x40] incl %eax // CHECK: decb %al # encoding: [0xfe,0xc8] decb %al // CHECK: decw %ax # encoding: [0x66,0x48] decw %ax // CHECK: decl %eax # encoding: [0x48] decl %eax // CHECK: pshufw $14, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x0e] pshufw $14, %mm4, %mm0 // CHECK: pshufw $90, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x5a] // PR8288 pshufw $90, %mm4, %mm0 // rdar://8416805 // CHECK: aaa // CHECK: encoding: [0x37] aaa // CHECK: aad $1 // CHECK: encoding: [0xd5,0x01] aad $1 // CHECK: aad $10 // CHECK: encoding: [0xd5,0x0a] aad $0xA // CHECK: aad $10 // CHECK: encoding: [0xd5,0x0a] aad // CHECK: aam $2 // CHECK: encoding: [0xd4,0x02] aam $2 // CHECK: aam $10 // CHECK: encoding: [0xd4,0x0a] aam $0xA // CHECK: aam $10 // CHECK: encoding: [0xd4,0x0a] aam // CHECK: aas // CHECK: encoding: [0x3f] aas // CHECK: daa // CHECK: encoding: [0x27] daa // CHECK: das // CHECK: encoding: [0x2f] das // CHECK: retw $31438 // CHECK: encoding: [0x66,0xc2,0xce,0x7a] retw $0x7ace // CHECK: lretw $31438 // CHECK: encoding: [0x66,0xca,0xce,0x7a] lretw $0x7ace // CHECK: bound 2(%eax), %bx // CHECK: encoding: [0x66,0x62,0x58,0x02] bound 2(%eax),%bx // CHECK: bound 4(%ebx), %ecx // CHECK: encoding: [0x62,0x4b,0x04] bound 4(%ebx),%ecx // CHECK: arpl %bx, %bx // CHECK: encoding: [0x63,0xdb] arpl %bx,%bx // CHECK: arpl %bx, 6(%ecx) // CHECK: encoding: [0x63,0x59,0x06] arpl %bx,6(%ecx) // CHECK: lgdtw 4(%eax) // CHECK: encoding: [0x66,0x0f,0x01,0x50,0x04] lgdtw 4(%eax) // CHECK: lgdt 4(%eax) // CHECK: encoding: [0x0f,0x01,0x50,0x04] lgdt 4(%eax) // CHECK: lgdt 4(%eax) // CHECK: encoding: [0x0f,0x01,0x50,0x04] lgdtl 4(%eax) // CHECK: lidtw 4(%eax) // CHECK: encoding: [0x66,0x0f,0x01,0x58,0x04] lidtw 4(%eax) // CHECK: lidt 4(%eax) // CHECK: encoding: [0x0f,0x01,0x58,0x04] lidt 4(%eax) // CHECK: lidt 4(%eax) // CHECK: encoding: [0x0f,0x01,0x58,0x04] lidtl 4(%eax) // CHECK: sgdtw 4(%eax) // CHECK: encoding: [0x66,0x0f,0x01,0x40,0x04] sgdtw 4(%eax) // CHECK: sgdt 4(%eax) // CHECK: encoding: [0x0f,0x01,0x40,0x04] sgdt 4(%eax) // CHECK: sgdt 4(%eax) // CHECK: encoding: [0x0f,0x01,0x40,0x04] sgdtl 4(%eax) // CHECK: sidtw 4(%eax) // CHECK: encoding: [0x66,0x0f,0x01,0x48,0x04] sidtw 4(%eax) // CHECK: sidt 4(%eax) // CHECK: encoding: [0x0f,0x01,0x48,0x04] sidt 4(%eax) // CHECK: sidt 4(%eax) // CHECK: encoding: [0x0f,0x01,0x48,0x04] sidtl 4(%eax) // CHECK: fcomip %st(2) // CHECK: encoding: [0xdf,0xf2] fcompi %st(2),%st // CHECK: fcomip %st(2) // CHECK: encoding: [0xdf,0xf2] fcompi %st(2) // CHECK: fcomip %st(1) // CHECK: encoding: [0xdf,0xf1] fcompi // CHECK: fucomip %st(2) // CHECK: encoding: [0xdf,0xea] fucompi %st(2),%st // CHECK: fucomip %st(2) // CHECK: encoding: [0xdf,0xea] fucompi %st(2) // CHECK: fucomip %st(1) // CHECK: encoding: [0xdf,0xe9] fucompi // CHECK: fldcw 32493 // CHECK: encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00] fldcww 0x7eed // CHECK: fldcw 32493 // CHECK: encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00] fldcw 0x7eed // CHECK: fnstcw 32493 // CHECK: encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00] fnstcww 0x7eed // CHECK: fnstcw 32493 // CHECK: encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00] fnstcw 0x7eed // CHECK: wait // CHECK: encoding: [0x9b] fstcww 0x7eed // CHECK: wait // CHECK: encoding: [0x9b] fstcw 0x7eed // CHECK: fnstsw 32493 // CHECK: encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00] fnstsww 0x7eed // CHECK: fnstsw 32493 // CHECK: encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00] fnstsw 0x7eed // CHECK: wait // CHECK: encoding: [0x9b] fstsww 0x7eed // CHECK: wait // CHECK: encoding: [0x9b] fstsw 0x7eed // CHECK: verr 32493 // CHECK: encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00] verrw 0x7eed // CHECK: verr 32493 // CHECK: encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00] verr 0x7eed // CHECK: wait // CHECK: encoding: [0x9b] fclex // CHECK: fnclex // CHECK: encoding: [0xdb,0xe2] fnclex // CHECK: ud2 // CHECK: encoding: [0x0f,0x0b] ud2 // CHECK: ud2 // CHECK: encoding: [0x0f,0x0b] ud2a // CHECK: ud2b // CHECK: encoding: [0x0f,0xb9] ud2b