llvm/llvm/test/MC/X86/x86-16.s

// RUN: llvm-mc -triple i386-unknown-unknown-code16 --show-encoding %s | FileCheck %s

	movl $0x12345678, %ebx
// CHECK: movl
// CHECK: encoding: [0x66,0xbb,0x78,0x56,0x34,0x12]
	pause
// CHECK: pause
// CHECK: encoding: [0xf3,0x90]
	sfence
// CHECK: sfence
// CHECK: encoding: [0x0f,0xae,0xf8]
	lfence
// CHECK: lfence
// CHECK: encoding: [0x0f,0xae,0xe8]
	mfence
	stgi
// CHECK: stgi
// CHECK: encoding: [0x0f,0x01,0xdc]
	clgi
// CHECK: clgi
// CHECK: encoding: [0x0f,0x01,0xdd]

	rdtscp
// CHECK: rdtscp
// CHECK:  encoding: [0x0f,0x01,0xf9]


// CHECK: movl	%eax, 16(%ebp)          # encoding: [0x67,0x66,0x89,0x45,0x10]
	movl	%eax, 16(%ebp)
// CHECK: movl	%eax, -16(%ebp)          # encoding: [0x67,0x66,0x89,0x45,0xf0]
	movl	%eax, -16(%ebp)

// CHECK: testb	%bl, %cl                # encoding: [0x84,0xd9]
        testb %bl, %cl

// CHECK: cmpl	%eax, %ebx              # encoding: [0x66,0x39,0xc3]
        cmpl %eax, %ebx

// CHECK: addw	%ax, %ax                # encoding: [0x01,0xc0]
        addw %ax, %ax

// CHECK: shrl	%eax                    # encoding: [0x66,0xd1,0xe8]
        shrl $1, %eax

// CHECK: shll	%eax                    # encoding: [0x66,0xd1,0xe0]
        sall $1, %eax
// CHECK: shll	%eax                    # encoding: [0x66,0xd1,0xe0]
        sal $1, %eax

// moffset forms of moves

// CHECK: movb 0, %al  # encoding: [0xa0,0x00,0x00]
movb	0, %al

// CHECK: movw 0, %ax  # encoding: [0xa1,0x00,0x00]
movw	0, %ax

// CHECK: movl 0, %eax  # encoding: [0x66,0xa1,0x00,0x00]
movl	0, %eax

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: pushfw	# encoding: [0x9c]
        pushf
// CHECK: pushfl	# encoding: [0x66,0x9c]
        pushfl
// CHECK: popfw         # encoding: [0x9d]
        popf
// CHECK: popfl	        # encoding: [0x66,0x9d]
        popfl

retl
// CHECK: ret
// CHECK:  encoding: [0x66,0xc3]

// CHECK: cmoval	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x47,0xd0]
        	cmoval	%eax,%edx

// CHECK: cmovael	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x43,0xd0]
        	cmovael	%eax,%edx

// CHECK: cmovbel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x46,0xd0]
        	cmovbel	%eax,%edx

// CHECK: cmovbl	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x42,0xd0]
        	cmovbl	%eax,%edx

// CHECK: cmovbw %bx, %bx
cmovnae	%bx,%bx


// CHECK: cmovbel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x46,0xd0]
        	cmovbel	%eax,%edx

// CHECK: cmovbl	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x42,0xd0]
        	cmovcl	%eax,%edx

// CHECK: cmovel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x44,0xd0]
        	cmovel	%eax,%edx

// CHECK: cmovgl	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4f,0xd0]
        	cmovgl	%eax,%edx

// CHECK: cmovgel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4d,0xd0]
        	cmovgel	%eax,%edx

// CHECK: cmovll	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4c,0xd0]
        	cmovll	%eax,%edx

// CHECK: cmovlel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4e,0xd0]
        	cmovlel	%eax,%edx

// CHECK: cmovbel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x46,0xd0]
        	cmovnal	%eax,%edx

// CHECK: cmovnel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x45,0xd0]
        	cmovnel	%eax,%edx

// CHECK: cmovael	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x43,0xd0]
        	cmovnbl	%eax,%edx

// CHECK: cmoval	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x47,0xd0]
        	cmovnbel	%eax,%edx

// CHECK: cmovael	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x43,0xd0]
        	cmovncl	%eax,%edx

// CHECK: cmovnel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x45,0xd0]
        	cmovnel	%eax,%edx

// CHECK: cmovlel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4e,0xd0]
        	cmovngl	%eax,%edx

// CHECK: cmovgel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4d,0xd0]
        	cmovnl	%eax,%edx

// CHECK: cmovnel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x45,0xd0]
        	cmovnel	%eax,%edx

// CHECK: cmovlel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4e,0xd0]
        	cmovngl	%eax,%edx

// CHECK: cmovll	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4c,0xd0]
        	cmovngel	%eax,%edx

// CHECK: cmovgel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4d,0xd0]
        	cmovnll	%eax,%edx

// CHECK: cmovgl	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4f,0xd0]
        	cmovnlel	%eax,%edx

// CHECK: cmovnol	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x41,0xd0]
        	cmovnol	%eax,%edx

// CHECK: cmovnpl	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4b,0xd0]
        	cmovnpl	%eax,%edx

// CHECK: cmovnsl	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x49,0xd0]
        	cmovnsl	%eax,%edx

// CHECK: cmovnel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x45,0xd0]
        	cmovnzl	%eax,%edx

// CHECK: cmovol	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x40,0xd0]
        	cmovol	%eax,%edx

// CHECK: cmovpl	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x4a,0xd0]
        	cmovpl	%eax,%edx

// CHECK: cmovsl	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x48,0xd0]
        	cmovsl	%eax,%edx

// CHECK: cmovel	%eax, %edx
// CHECK:  encoding: [0x66,0x0f,0x44,0xd0]
        	cmovzl	%eax,%edx

// 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

// CHECK: movl	%cs, %eax
// CHECK:  encoding: [0x66,0x8c,0xc8]
        movl %cs, %eax

// CHECK: movw	%cs, %ax
// CHECK:  encoding: [0x8c,0xc8]
        movw %cs, %ax

// CHECK: movw	%cs, (%eax)
// CHECK:  encoding: [0x67,0x8c,0x08]
        mov %cs, (%eax)

// CHECK: movw	%cs, (%eax)
// CHECK:  encoding: [0x67,0x8c,0x08]
        movw %cs, (%eax)

// CHECK: movw	%ax, %cs
// CHECK:  encoding: [0x8e,0xc8]
        movl %eax, %cs

// CHECK: movw	%ax, %cs
// CHECK:  encoding: [0x8e,0xc8]
        mov %eax, %cs	

// CHECK: movw	%ax, %cs
// CHECK:  encoding: [0x8e,0xc8]
        movw %ax, %cs

// CHECK: movw	%ax, %cs
// CHECK:  encoding: [0x8e,0xc8]
        mov %ax, %cs		
	
// CHECK: movw	(%eax), %cs
// CHECK:  encoding: [0x67,0x8e,0x08]
        mov (%eax), %cs

// CHECK: movw	(%eax), %cs
// CHECK:  encoding: [0x67,0x8e,0x08]
        movw (%eax), %cs

// 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

// CHECK: wait
// CHECK:  encoding: [0x9b]
	fwait

// CHECK: [0x65,0x66,0xa1,0x7c,0x00]
        movl	%gs:124, %eax

// CHECK: pusha
// CHECK:  encoding: [0x60]
        	pusha

// CHECK: popa
// CHECK:  encoding: [0x61]
        	popa

// CHECK: pushaw
// CHECK:  encoding: [0x60]
        	pushaw

// CHECK: popaw
// CHECK:  encoding: [0x61]
        	popaw

// CHECK: pushal
// CHECK:  encoding: [0x66,0x60]
        	pushal

// CHECK: popal
// CHECK:  encoding: [0x66,0x61]
        	popal

// CHECK: jmpw *8(%eax)
// CHECK:   encoding: [0x67,0xff,0x60,0x08]
	jmp	*8(%eax)

// CHECK: jmpl *8(%eax)
// CHECK:   encoding: [0x67,0x66,0xff,0x60,0x08]
        jmpl	*8(%eax)

// CHECK: lcalll $2, $4660
// CHECK:   encoding: [0x66,0x9a,0x34,0x12,0x00,0x00,0x02,0x00]
lcalll $0x2, $0x1234


L1:
  jcxz L1
// CHECK: jcxz L1
// CHECK:   encoding: [0xe3,A]
  jecxz L1
// CHECK: jecxz L1
// CHECK:   encoding: [0x67,0xe3,A]

iret
// CHECK: iretw
// CHECK: encoding: [0xcf]
iretw
// CHECK: iretw
// CHECK: encoding: [0xcf]
iretl
// CHECK: iretl
// CHECK: encoding: [0x66,0xcf]

sysret
// CHECK: sysretl
// CHECK: encoding: [0x0f,0x07]
sysretl
// CHECK: sysretl
// CHECK: encoding: [0x0f,0x07]

testl	%ecx, -24(%ebp)
// CHECK: testl	%ecx, -24(%ebp)
testl	-24(%ebp), %ecx
// CHECK: testl	%ecx, -24(%ebp)


push %cs
// CHECK: pushw	%cs
// CHECK: encoding: [0x0e]
push %ds
// CHECK: pushw	%ds
// CHECK: encoding: [0x1e]
push %ss
// CHECK: pushw	%ss
// CHECK: encoding: [0x16]
push %es
// CHECK: pushw	%es
// CHECK: encoding: [0x06]
push %fs
// CHECK: pushw	%fs
// CHECK: encoding: [0x0f,0xa0]
push %gs
// CHECK: pushw	%gs
// CHECK: encoding: [0x0f,0xa8]

pushw %cs
// CHECK: pushw	%cs
// CHECK: encoding: [0x0e]
pushw %ds
// CHECK: pushw	%ds
// CHECK: encoding: [0x1e]
pushw %ss
// CHECK: pushw	%ss
// CHECK: encoding: [0x16]
pushw %es
// CHECK: pushw	%es
// CHECK: encoding: [0x06]
pushw %fs
// CHECK: pushw	%fs
// CHECK: encoding: [0x0f,0xa0]
pushw %gs
// CHECK: pushw	%gs
// CHECK: encoding: [0x0f,0xa8]

pushl %cs
// CHECK: pushl	%cs
// CHECK: encoding: [0x66,0x0e]
pushl %ds
// CHECK: pushl	%ds
// CHECK: encoding: [0x66,0x1e]
pushl %ss
// CHECK: pushl	%ss
// CHECK: encoding: [0x66,0x16]
pushl %es
// CHECK: pushl	%es
// CHECK: encoding: [0x66,0x06]
pushl %fs
// CHECK: pushl	%fs
// CHECK: encoding: [0x66,0x0f,0xa0]
pushl %gs
// CHECK: pushl	%gs
// CHECK: encoding: [0x66,0x0f,0xa8]

pop %ss
// CHECK: popw	%ss
// CHECK: encoding: [0x17]
pop %ds
// CHECK: popw	%ds
// CHECK: encoding: [0x1f]
pop %es
// CHECK: popw	%es
// CHECK: encoding: [0x07]

popl %ss
// CHECK: popl	%ss
// CHECK: encoding: [0x66,0x17]
popl %ds
// CHECK: popl	%ds
// CHECK: encoding: [0x66,0x1f]
popl %es
// CHECK: popl	%es
// CHECK: encoding: [0x66,0x07]

pushfd
// CHECK: pushfl
popfd
// CHECK: popfl
pushfl
// CHECK: pushfl
popfl
// CHECK: popfl


	setc	%bl
	setnae	%bl
	setnb	%bl
	setnc	%bl
	setna	%bl
	setnbe	%bl
	setpe	%bl
	setpo	%bl
	setnge	%bl
	setnl	%bl
	setng	%bl
	setnle	%bl

        setneb  %cl // CHECK: setne %cl
	setcb	%bl // CHECK: setb %bl
	setnaeb	%bl // CHECK: setb %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: lcallw	$31438, $31438
// CHECK: lcallw	$31438, $31438
// CHECK: ljmpw	$31438, $31438
// CHECK: ljmpw	$31438, $31438

callw	$0x7ace,$0x7ace
lcallw	$0x7ace,$0x7ace
jmpw	$0x7ace,$0x7ace
ljmpw	$0x7ace,$0x7ace

// CHECK: lcallw	$31438, $31438
// CHECK: lcallw	$31438, $31438
// CHECK: ljmpw	$31438, $31438
// CHECK: ljmpw	$31438, $31438

call	$0x7ace,$0x7ace
lcall	$0x7ace,$0x7ace
jmp	$0x7ace,$0x7ace
ljmp	$0x7ace,$0x7ace

// CHECK: calll a
// CHECK: calll a
// CHECK: calll a
// CHECK: callw 42
// CHECK: encoding: [0xe8,A,A]
 calll a
data32 call a
data32 callw a
callw 42

// CHECK:      ljmpl $1, $2
// CHECK-NEXT: ljmpl $1, $2
data32 ljmp $1, $2
data32 ljmpw $1, $2

// CHECK:	incb	%al # encoding: [0xfe,0xc0]
	incb %al

// CHECK:	incw	%ax # encoding: [0x40]
	incw %ax

// CHECK:	incl	%eax # encoding: [0x66,0x40]
	incl %eax

// CHECK:	decb	%al # encoding: [0xfe,0xc8]
	decb %al

// CHECK:	decw	%ax # encoding: [0x48]
	decw %ax

// CHECK:	decl	%eax # encoding: [0x66,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]
pshufw $90, %mm4, %mm0

// CHECK: aaa
// CHECK:  encoding: [0x37]
        	aaa

// CHECK: aad	$1
// CHECK:  encoding: [0xd5,0x01]
        	aad	$1

// CHECK: aad
// CHECK:  encoding: [0xd5,0x0a]
        	aad	$0xA

// CHECK: aad
// CHECK:  encoding: [0xd5,0x0a]
        	aad

// CHECK: aam	$2
// CHECK:  encoding: [0xd4,0x02]
        	aam	$2

// CHECK: aam
// CHECK:  encoding: [0xd4,0x0a]
        	aam	$0xA

// CHECK: aam
// 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: [0xc2,0xce,0x7a]
        	retw	$0x7ace

// CHECK: lretw	$31438
// CHECK:  encoding: [0xca,0xce,0x7a]
        	lretw	$0x7ace

// CHECK: retw	$31438
// CHECK:  encoding: [0xc2,0xce,0x7a]
        	ret	$0x7ace

// CHECK: lretw	$31438
// CHECK:  encoding: [0xca,0xce,0x7a]
        	lret	$0x7ace

// CHECK: retl	$31438
// CHECK:  encoding: [0x66,0xc2,0xce,0x7a]
        	retl	$0x7ace

// CHECK: lretl	$31438
// CHECK:  encoding: [0x66,0xca,0xce,0x7a]
        	lretl	$0x7ace

// CHECK: bound	%bx, 2(%eax)
// CHECK:  encoding: [0x67,0x62,0x58,0x02]
        	bound	%bx,2(%eax)

// CHECK: bound	%ecx, 4(%ebx)
// CHECK:  encoding: [0x67,0x66,0x62,0x4b,0x04]
        	bound	%ecx,4(%ebx)

// CHECK: arpl	%bx, %bx
// CHECK:  encoding: [0x63,0xdb]
        	arpl	%bx,%bx

// CHECK: arpl	%bx, 6(%ecx)
// CHECK:  encoding: [0x67,0x63,0x59,0x06]
        	arpl	%bx,6(%ecx)

// CHECK: lgdtw	4(%eax)
// CHECK:  encoding: [0x67,0x0f,0x01,0x50,0x04]
        	lgdtw	4(%eax)

// CHECK: lgdtw	4(%eax)
// CHECK:  encoding: [0x67,0x0f,0x01,0x50,0x04]
        	lgdt	4(%eax)

// CHECK: lgdtl	4(%eax)
// CHECK:  encoding: [0x67,0x66,0x0f,0x01,0x50,0x04]
        	lgdtl	4(%eax)

// CHECK: lidtw	4(%eax)
// CHECK:  encoding: [0x67,0x0f,0x01,0x58,0x04]
        	lidtw	4(%eax)

// CHECK: lidtw	4(%eax)
// CHECK:  encoding: [0x67,0x0f,0x01,0x58,0x04]
        	lidt	4(%eax)

// CHECK: lidtl	4(%eax)
// CHECK:  encoding: [0x67,0x66,0x0f,0x01,0x58,0x04]
        	lidtl	4(%eax)

// CHECK: sgdtw	4(%eax)
// CHECK:  encoding: [0x67,0x0f,0x01,0x40,0x04]
        	sgdtw	4(%eax)

// CHECK: sgdtw	4(%eax)
// CHECK:  encoding: [0x67,0x0f,0x01,0x40,0x04]
        	sgdt	4(%eax)

// CHECK: sgdtl	4(%eax)
// CHECK:  encoding: [0x67,0x66,0x0f,0x01,0x40,0x04]
        	sgdtl	4(%eax)

// CHECK: sidtw	4(%eax)
// CHECK:  encoding: [0x67,0x0f,0x01,0x48,0x04]
        	sidtw	4(%eax)

// CHECK: sidtw	4(%eax)
// CHECK:  encoding: [0x67,0x0f,0x01,0x48,0x04]
        	sidt	4(%eax)

// CHECK: sidtl	4(%eax)
// CHECK:  encoding: [0x67,0x66,0x0f,0x01,0x48,0x04]
        	sidtl	4(%eax)

// CHECK: fcompi	%st(2)
// CHECK:  encoding: [0xdf,0xf2]
        	fcompi	%st(2), %st

// CHECK: fcompi	%st(2)
// CHECK:  encoding: [0xdf,0xf2]
        	fcompi	%st(2)

// CHECK: fcompi
// CHECK:  encoding: [0xdf,0xf1]
        	fcompi

// CHECK: fucompi	%st(2)
// CHECK:  encoding: [0xdf,0xea]
        	fucompi	%st(2),%st

// CHECK: fucompi	%st(2)
// CHECK:  encoding: [0xdf,0xea]
        	fucompi	%st(2)

// CHECK: fucompi
// CHECK:  encoding: [0xdf,0xe9]
        	fucompi

// CHECK: fldcw	32493
// CHECK:  encoding: [0xd9,0x2e,0xed,0x7e]
        	fldcww	0x7eed

// CHECK: fldcw	32493
// CHECK:  encoding: [0xd9,0x2e,0xed,0x7e]
        	fldcw	0x7eed

// CHECK: fnstcw	32493
// CHECK:  encoding: [0xd9,0x3e,0xed,0x7e]
        	fnstcww	0x7eed

// CHECK: fnstcw	32493
// CHECK:  encoding: [0xd9,0x3e,0xed,0x7e]
        	fnstcw	0x7eed

// CHECK: wait
// CHECK:  encoding: [0x9b]
        	fstcww	0x7eed

// CHECK: wait
// CHECK:  encoding: [0x9b]
        	fstcw	0x7eed

// CHECK: fnstsw	32493
// CHECK:  encoding: [0xdd,0x3e,0xed,0x7e]
        	fnstsww	0x7eed

// CHECK: fnstsw	32493
// CHECK:  encoding: [0xdd,0x3e,0xed,0x7e]
        	fnstsw	0x7eed

// CHECK: wait
// CHECK:  encoding: [0x9b]
        	fstsww	0x7eed

// CHECK: wait
// CHECK:  encoding: [0x9b]
        	fstsw	0x7eed

// CHECK: verr	32493
// CHECK:  encoding: [0x0f,0x00,0x26,0xed,0x7e]
        	verrw	0x7eed

// CHECK: verr	32493
// CHECK:  encoding: [0x0f,0x00,0x26,0xed,0x7e]
        	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: ud1w %ax, %ax
// CHECK:  encoding: [0x0f,0xb9,0xc0]
        	ud1 %ax, %ax

// CHECK: ud1w %ax, %ax
// CHECK:  encoding: [0x0f,0xb9,0xc0]
        	ud2b %ax, %ax

// CHECK: loope 0
// CHECK: encoding: [0xe1,A]
	loopz 0

// CHECK: loopne 0
// CHECK: encoding: [0xe0,A]
	loopnz 0

// CHECK: outsb (%si), %dx # encoding: [0x6e]
// CHECK: outsb
// CHECK: outsb
	outsb
	outsb	%ds:(%si), %dx
	outsb	(%si), %dx

// CHECK: outsw (%si), %dx # encoding: [0x6f]
// CHECK: outsw
// CHECK: outsw
	outsw
	outsw	%ds:(%si), %dx
	outsw	(%si), %dx

// CHECK: outsl (%si), %dx # encoding: [0x66,0x6f]
// CHECK: outsl
	outsl
	outsl	%ds:(%si), %dx
	outsl	(%si), %dx

// CHECK: insb %dx, %es:(%di) # encoding: [0x6c]
// CHECK: insb
	insb
	insb	%dx, %es:(%di)

// CHECK: insw %dx, %es:(%di) # encoding: [0x6d]
// CHECK: insw
	insw
	insw	%dx, %es:(%di)

// CHECK: insl %dx, %es:(%di) # encoding: [0x66,0x6d]
// CHECK: insl
	insl
	insl	%dx, %es:(%di)

// CHECK: movsb (%si), %es:(%di) # encoding: [0xa4]
// CHECK: movsb
// CHECK: movsb
	movsb
	movsb	%ds:(%si), %es:(%di)
	movsb	(%si), %es:(%di)

// CHECK: movsw (%si), %es:(%di) # encoding: [0xa5]
// CHECK: movsw
// CHECK: movsw
	movsw
	movsw	%ds:(%si), %es:(%di)
	movsw	(%si), %es:(%di)

// CHECK: movsl (%si), %es:(%di) # encoding: [0x66,0xa5]
// CHECK: movsl
// CHECK: movsl
	movsl
	movsl	%ds:(%si), %es:(%di)
	movsl	(%si), %es:(%di)

// CHECK: lodsb (%si), %al # encoding: [0xac]
// CHECK: lodsb
// CHECK: lodsb
// CHECK: lodsb
// CHECK: lodsb
	lodsb
	lodsb	%ds:(%si), %al
	lodsb	(%si), %al
	lods	%ds:(%si), %al
	lods	(%si), %al

// CHECK: lodsw (%si), %ax # encoding: [0xad]
// CHECK: lodsw
// CHECK: lodsw
// CHECK: lodsw
// CHECK: lodsw
	lodsw
	lodsw	%ds:(%si), %ax
	lodsw	(%si), %ax
	lods	%ds:(%si), %ax
	lods	(%si), %ax

// CHECK: lodsl (%si), %eax # encoding: [0x66,0xad]
// CHECK: lodsl
// CHECK: lodsl
// CHECK: lodsl
// CHECK: lodsl
	lodsl
	lodsl	%ds:(%si), %eax
	lodsl	(%si), %eax
	lods	%ds:(%si), %eax
	lods	(%si), %eax

// CHECK: stosb %al, %es:(%di) # encoding: [0xaa]
// CHECK: stosb
// CHECK: stosb
	stosb
	stosb	%al, %es:(%di)
	stos	%al, %es:(%di)

// CHECK: stosw %ax, %es:(%di) # encoding: [0xab]
// CHECK: stosw
// CHECK: stosw
	stosw
	stosw	%ax, %es:(%di)
	stos	%ax, %es:(%di)

// CHECK: stosl %eax, %es:(%di) # encoding: [0x66,0xab]
// CHECK: stosl
// CHECK: stosl
	stosl
	stosl	%eax, %es:(%di)
	stos	%eax, %es:(%di)

// CHECK: strw
// CHECK: encoding: [0x0f,0x00,0xc8]
	str %ax

// CHECK: strl
// CHECK: encoding: [0x66,0x0f,0x00,0xc8]
	str %eax


// CHECK: fsubp %st, %st(1)
// CHECK: encoding: [0xde,0xe1]
fsubp %st,%st(1)

// CHECK: fsubp %st, %st(2)
// CHECK: encoding: [0xde,0xe2]
fsubp   %st, %st(2)

// CHECK: xchgl %eax, %eax
// CHECK: encoding: [0x66,0x90]
xchgl %eax, %eax

// CHECK: xchgw %ax, %ax
// CHECK: encoding: [0x90]
xchgw %ax, %ax

// CHECK: xchgl %ecx, %eax
// CHECK: encoding: [0x66,0x91]
xchgl %ecx, %eax

// CHECK: xchgl %ecx, %eax
// CHECK: encoding: [0x66,0x91]
xchgl %eax, %ecx

// CHECK: retw
// CHECK: encoding: [0xc3]
retw

// CHECK: retl
// CHECK: encoding: [0x66,0xc3]
retl

// CHECK: lretw
// CHECK: encoding: [0xcb]
lretw

// CHECK: lretl
// CHECK: encoding: [0x66,0xcb]
lretl

// CHECK: data32
// CHECK: encoding: [0x66]
data32

// CHECK: lgdtl 4(%eax)
// CHECK-SAME:  encoding: [0x67,0x66,0x0f,0x01,0x50,0x04]
data32 lgdt 4(%eax)

// CHECK: wbnoinvd
// CHECK:  encoding: [0xf3,0x0f,0x09]
wbnoinvd

// CHECK: umonitor %ax
// CHECK:  encoding: [0xf3,0x0f,0xae,0xf0]
umonitor %ax

// CHECK: umonitor %eax
// CHECK:  encoding: [0x67,0xf3,0x0f,0xae,0xf0]
umonitor %eax

// CHECK: movdir64b (%esi), %eax
// CHECK: encoding: [0x67,0x66,0x0f,0x38,0xf8,0x06]
movdir64b (%esi), %eax

// CHECK: movdir64b (%si), %ax
// CHECK: encoding: [0x66,0x0f,0x38,0xf8,0x04]
movdir64b (%si), %ax

// CHECK: enqcmd (%bx), %di
// CHECK: encoding: [0xf2,0x0f,0x38,0xf8,0x3f]
enqcmd  (%bx), %di

// CHECK: enqcmd 8128(%si), %ax
// CHECK: encoding: [0xf2,0x0f,0x38,0xf8,0x84,0xc0,0x1f]
enqcmd  8128(%si), %ax

// CHECK: enqcmd -8192(%di), %bx
// CHECK: encoding: [0xf2,0x0f,0x38,0xf8,0x9d,0x00,0xe0]
enqcmd  -8192(%di), %bx

// CHECK: enqcmd 7408, %cx
// CHECK: encoding: [0xf2,0x0f,0x38,0xf8,0x0e,0xf0,0x1c]
enqcmd  7408, %cx

// CHECK: enqcmds (%bx), %di
// CHECK: encoding: [0xf3,0x0f,0x38,0xf8,0x3f]
enqcmds (%bx), %di

// CHECK: enqcmds 8128(%si), %ax
// CHECK: encoding: [0xf3,0x0f,0x38,0xf8,0x84,0xc0,0x1f]
enqcmds 8128(%si), %ax

// CHECK: enqcmds -8192(%di), %bx
// CHECK: encoding: [0xf3,0x0f,0x38,0xf8,0x9d,0x00,0xe0]
enqcmds -8192(%di), %bx

// CHECK: enqcmds 7408, %cx
// CHECK: encoding: [0xf3,0x0f,0x38,0xf8,0x0e,0xf0,0x1c]
enqcmds  7408, %cx

// CHECK: enqcmd (%edi), %edi
// CHECK: encoding: [0x67,0xf2,0x0f,0x38,0xf8,0x3f]
enqcmd  (%edi), %edi

// CHECK: enqcmds (%edi), %edi
// CHECK: encoding: [0x67,0xf3,0x0f,0x38,0xf8,0x3f]
enqcmds (%edi), %edi

// CHECK: serialize
// CHECK: encoding: [0x0f,0x01,0xe8]
serialize

// CHECK: xsusldtrk
// CHECK: encoding: [0xf2,0x0f,0x01,0xe8]
xsusldtrk

// CHECK: xresldtrk
// CHECK: encoding: [0xf2,0x0f,0x01,0xe9]
xresldtrk

// CHECK: jmp foo
// CHECK:  encoding: [0xe9,A,A]
// CHECK:  fixup A - offset: 1, value: foo-2, kind: FK_PCRel_2
{disp32} jmp foo
foo:

// CHECK: je foo
// CHECK:  encoding: [0x0f,0x84,A,A]
// CHECK:  fixup A - offset: 2, value: foo-2, kind: FK_PCRel_2
{disp32} je foo

// CHECK: movl nearer, %ebx
// CHECK:  encoding: [0x66,0x8b,0x1e,A,A]
// CHECK:  fixup A - offset: 3, value: nearer, kind: FK_Data_2
movl    nearer, %ebx