You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

791 lines
9.5 KiB

# RUN: llvm-mc --disassemble %s -triple=i686-linux-gnu-code16 | FileCheck %s
# CHECK: movl $305419896, %ebx
0x66 0xbb 0x78 0x56 0x34 0x12
# CHECK: pause
0xf3 0x90
# CHECK: sfence
0x0f 0xae 0xf8
# CHECK: lfence
0x0f 0xae 0xe8
# CHECK: mfence
0x0f 0xae 0xf0
# CHECK: stgi
0x0f 0x01 0xdc
# CHECK: clgi
0x0f 0x01 0xdd
# CHECK: rdtscp
0x0f 0x01 0xf9
# CHECK: movl %eax, 16(%ebp)
0x67 0x66 0x89 0x45 0x10
# CHECK: movl %eax, -16(%ebp)
0x67 0x66 0x89 0x45 0xf0
# CHECK: testb %cl, %bl
0x84 0xcb
# CHECK: cmpl %eax, %ebx
0x66 0x39 0xc3
# CHECK: addw %ax, %ax
0x01 0xc0
# CHECK: shrl %eax
0x66 0xd1 0xe8
# CHECK: shll %eax
0x66 0xd1 0xe0
# CHECK: shll %eax
0x66 0xd1 0xe0
# CHECK: movb 0, %al
0xa0 0x00 0x00
# CHECK: movw 0, %ax
0xa1 0x00 0x00
# CHECK: movl 0, %eax
0x66 0xa1 0x00 0x00
# CHECK: into
0xce
# CHECK: int3
0xcc
# CHECK: int $4
0xcd 0x04
# CHECK: int $127
0xcd 0x7f
# CHECK: pushfw
0x9c
# CHECK: pushfl
0x66 0x9c
# CHECK: popfw
0x9d
# CHECK: popfl
0x66 0x9d
# CHECK: retl
0x66 0xc3
# CHECK: cmoval %eax, %edx
0x66 0x0f 0x47 0xd0
# CHECK: cmovael %eax, %edx
0x66 0x0f 0x43 0xd0
# CHECK: cmovbel %eax, %edx
0x66 0x0f 0x46 0xd0
# CHECK: cmovbl %eax, %edx
0x66 0x0f 0x42 0xd0
# CHECK: cmovbw %bx, %bx
0x0f 0x42 0xdb
# CHECK: cmovbel %eax, %edx
0x66 0x0f 0x46 0xd0
# CHECK: cmovbl %eax, %edx
0x66 0x0f 0x42 0xd0
# CHECK: cmovel %eax, %edx
0x66 0x0f 0x44 0xd0
# CHECK: cmovgl %eax, %edx
0x66 0x0f 0x4f 0xd0
# CHECK: cmovgel %eax, %edx
0x66 0x0f 0x4d 0xd0
# CHECK: cmovll %eax, %edx
0x66 0x0f 0x4c 0xd0
# CHECK: cmovlel %eax, %edx
0x66 0x0f 0x4e 0xd0
# CHECK: cmovbel %eax, %edx
0x66 0x0f 0x46 0xd0
# CHECK: cmovnel %eax, %edx
0x66 0x0f 0x45 0xd0
# CHECK: cmovael %eax, %edx
0x66 0x0f 0x43 0xd0
# CHECK: cmoval %eax, %edx
0x66 0x0f 0x47 0xd0
# CHECK: cmovael %eax, %edx
0x66 0x0f 0x43 0xd0
# CHECK: cmovnel %eax, %edx
0x66 0x0f 0x45 0xd0
# CHECK: cmovlel %eax, %edx
0x66 0x0f 0x4e 0xd0
# CHECK: cmovgel %eax, %edx
0x66 0x0f 0x4d 0xd0
# CHECK: cmovnel %eax, %edx
0x66 0x0f 0x45 0xd0
# CHECK: cmovlel %eax, %edx
0x66 0x0f 0x4e 0xd0
# CHECK: cmovll %eax, %edx
0x66 0x0f 0x4c 0xd0
# CHECK: cmovgel %eax, %edx
0x66 0x0f 0x4d 0xd0
# CHECK: cmovgl %eax, %edx
0x66 0x0f 0x4f 0xd0
# CHECK: cmovnol %eax, %edx
0x66 0x0f 0x41 0xd0
# CHECK: cmovnpl %eax, %edx
0x66 0x0f 0x4b 0xd0
# CHECK: cmovnsl %eax, %edx
0x66 0x0f 0x49 0xd0
# CHECK: cmovnel %eax, %edx
0x66 0x0f 0x45 0xd0
# CHECK: cmovol %eax, %edx
0x66 0x0f 0x40 0xd0
# CHECK: cmovpl %eax, %edx
0x66 0x0f 0x4a 0xd0
# CHECK: cmovsl %eax, %edx
0x66 0x0f 0x48 0xd0
# CHECK: cmovel %eax, %edx
0x66 0x0f 0x44 0xd0
# CHECK: fmul %st(0)
0xd8 0xc8
# CHECK: fadd %st(0)
0xd8 0xc0
# CHECK: fsub %st(0)
0xd8 0xe0
# CHECK: fsubr %st(0)
0xd8 0xe8
# CHECK: fdivr %st(0)
0xd8 0xf8
# CHECK: fdiv %st(0)
0xd8 0xf0
# CHECK: movl %cs, %eax
0x66 0x8c 0xc8
# CHECK: movw %cs, %ax
0x8c 0xc8
# CHECK: movl %cs, (%eax)
0x67 0x66 0x8c 0x08
# CHECK: movw %cs, (%eax)
0x67 0x8c 0x08
# CHECK: movl %eax, %cs
0x66 0x8e 0xc8
# CHECK: movl (%eax), %cs
0x67 0x66 0x8e 0x08
# CHECK: movw (%eax), %cs
0x67 0x8e 0x08
# CHECKX: movl %cr0, %eax
0x0f 0x20 0xc0
# CHECKX: movl %cr1, %eax
0x0f 0x20 0xc8
# CHECKX: movl %cr2, %eax
0x0f 0x20 0xd0
# CHECKX: movl %cr3, %eax
0x0f 0x20 0xd8
# CHECKX: movl %cr4, %eax
0x0f 0x20 0xe0
# CHECKX: movl %dr0, %eax
0x0f 0x21 0xc0
# CHECKX: movl %dr1, %eax
0x0f 0x21 0xc8
# CHECKX: movl %dr1, %eax
0x0f 0x21 0xc8
# CHECKX: movl %dr2, %eax
0x0f 0x21 0xd0
# CHECKX: movl %dr3, %eax
0x0f 0x21 0xd8
# CHECKX: movl %dr4, %eax
0x0f 0x21 0xe0
# CHECKX: movl %dr5, %eax
0x0f 0x21 0xe8
# CHECKX: movl %dr6, %eax
0x0f 0x21 0xf0
# CHECKX: movl %dr7, %eax
0x0f 0x21 0xf8
# CHECK: wait
0x9b
# CHECK: movl %gs:124, %eax
0x65 0x66 0x8b 0x06 0x7c 0x00
# CHECK: pushaw
0x60
# CHECK: popaw
0x61
# CHECK: pushaw
0x60
# CHECK: popaw
0x61
# CHECK: pushal
0x66 0x60
# CHECK: popal
0x66 0x61
# CHECK: jmpw *8(%eax)
0x67 0xff 0x60 0x08
# CHECK: jmpl *8(%eax)
0x67 0x66 0xff 0x60 0x08
# CHECK: lcalll $2, $4660
0x66 0x9a 0x34 0x12 0x00 0x00 0x02 0x00
# CHECK: jcxz
0xe3 0x00
# CHECK: jecxz
0x67 0xe3 0x00
# CHECK: iretw
0xcf
# CHECK: iretw
0xcf
# CHECK: iretl
0x66 0xcf
# CHECK: sysretl
0x0f 0x07
# CHECK: sysretl
0x0f 0x07
# CHECK: testl -24(%ebp), %ecx
0x67 0x66 0x85 0x4d 0xe8
# CHECK: testl -24(%ebp), %ecx
0x67 0x66 0x85 0x4d 0xe8
# CHECK: pushw %cs
0x0e
# CHECK: pushw %ds
0x1e
# CHECK: pushw %ss
0x16
# CHECK: pushw %es
0x06
# CHECK: pushw %fs
0x0f 0xa0
# CHECK: pushw %gs
0x0f 0xa8
# CHECK: pushw %cs
0x0e
# CHECK: pushw %ds
0x1e
# CHECK: pushw %ss
0x16
# CHECK: pushw %es
0x06
# CHECK: pushw %fs
0x0f 0xa0
# CHECK: pushw %gs
0x0f 0xa8
# CHECK: pushl %cs
0x66 0x0e
# CHECK: pushl %ds
0x66 0x1e
# CHECK: pushl %ss
0x66 0x16
# CHECK: pushl %es
0x66 0x06
# CHECK: pushl %fs
0x66 0x0f 0xa0
# CHECK: pushl %gs
0x66 0x0f 0xa8
# CHECK: popw %ss
0x17
# CHECK: popw %ds
0x1f
# CHECK: popw %es
0x07
# CHECK: popl %ss
0x66 0x17
# CHECK: popl %ds
0x66 0x1f
# CHECK: popl %es
0x66 0x07
# CHECK: pushfl
0x66 0x9c
# CHECK: popfl
0x66 0x9d
# CHECK: pushfl
0x66 0x9c
# CHECK: popfl
0x66 0x9d
# CHECK: setb %bl
0x0f 0x92 0xc3
# CHECK: setb %bl
0x0f 0x92 0xc3
# CHECK: setae %bl
0x0f 0x93 0xc3
# CHECK: setae %bl
0x0f 0x93 0xc3
# CHECK: setbe %bl
0x0f 0x96 0xc3
# CHECK: seta %bl
0x0f 0x97 0xc3
# CHECK: setp %bl
0x0f 0x9a 0xc3
# CHECK: setnp %bl
0x0f 0x9b 0xc3
# CHECK: setl %bl
0x0f 0x9c 0xc3
# CHECK: setge %bl
0x0f 0x9d 0xc3
# CHECK: setle %bl
0x0f 0x9e 0xc3
# CHECK: setg %bl
0x0f 0x9f 0xc3
# CHECK: setne %cl
0x0f 0x95 0xc1
# CHECK: setb %bl
0x0f 0x92 0xc3
# CHECK: setb %bl
0x0f 0x92 0xc3
# CHECK: lcalll $31438, $31438
0x66 0x9a 0xce 0x7a 0x00 0x00 0xce 0x7a
# CHECK: lcalll $31438, $31438
0x66 0x9a 0xce 0x7a 0x00 0x00 0xce 0x7a
# CHECK: ljmpl $31438, $31438
0x66 0xea 0xce 0x7a 0x00 0x00 0xce 0x7a
# CHECK: ljmpl $31438, $31438
0x66 0xea 0xce 0x7a 0x00 0x00 0xce 0x7a
# CHECK: lcallw $31438, $31438
0x9a 0xce 0x7a 0xce 0x7a
# CHECK: lcallw $31438, $31438
0x9a 0xce 0x7a 0xce 0x7a
# CHECK: ljmpw $31438, $31438
0xea 0xce 0x7a 0xce 0x7a
# CHECK: ljmpw $31438, $31438
0xea 0xce 0x7a 0xce 0x7a
# CHECK: lcallw $31438, $31438
0x9a 0xce 0x7a 0xce 0x7a
# CHECK: lcallw $31438, $31438
0x9a 0xce 0x7a 0xce 0x7a
# CHECK: ljmpw $31438, $31438
0xea 0xce 0x7a 0xce 0x7a
# CHECK: ljmpw $31438, $31438
0xea 0xce 0x7a 0xce 0x7a
# CHECK: calll
0x66 0xe8 0x00 0x00 0x00 0x00
# CHECK: callw
0xe8 0x00 0x00
# CHECK: incb %al
0xfe 0xc0
# CHECK: incw %ax
0x40
# CHECK: incl %eax
0x66 0x40
# CHECK: decb %al
0xfe 0xc8
# CHECK: decw %ax
0x48
# CHECK: decl %eax
0x66 0x48
# CHECK: pshufw $14, %mm4, %mm0
0x0f 0x70 0xc4 0x0e
# CHECK: pshufw $90, %mm4, %mm0
0x0f 0x70 0xc4 0x5a
# CHECK: aaa
0x37
# CHECK: aad $1
0xd5 0x01
# CHECK: aad
0xd5 0x0a
# CHECK: aad
0xd5 0x0a
# CHECK: aam $2
0xd4 0x02
# CHECK: aam
0xd4 0x0a
# CHECK: aam
0xd4 0x0a
# CHECK: aas
0x3f
# CHECK: daa
0x27
# CHECK: das
0x2f
# CHECK: retw $31438
0xc2 0xce 0x7a
# CHECK: lretw $31438
0xca 0xce 0x7a
# CHECK: retw $31438
0xc2 0xce 0x7a
# CHECK: lretw $31438
0xca 0xce 0x7a
# CHECK: retl $31438
0x66 0xc2 0xce 0x7a
# CHECK: lretl $31438
0x66 0xca 0xce 0x7a
# CHECK: bound 2(%eax), %bx
0x67 0x62 0x58 0x02
# CHECK: bound 4(%ebx), %ecx
0x67 0x66 0x62 0x4b 0x04
# CHECK: arpl %bx, %bx
0x63 0xdb
# CHECK: arpl %bx, 6(%ecx)
0x67 0x63 0x59 0x06
# CHECK: lgdtw 4(%eax)
0x67 0x0f 0x01 0x50 0x04
# CHECK: lgdtw 4(%eax)
0x67 0x0f 0x01 0x50 0x04
# CHECK: lgdtl 4(%eax)
0x67 0x66 0x0f 0x01 0x50 0x04
# CHECK: lidtw 4(%eax)
0x67 0x0f 0x01 0x58 0x04
# CHECK: lidtw 4(%eax)
0x67 0x0f 0x01 0x58 0x04
# CHECK: lidtl 4(%eax)
0x67 0x66 0x0f 0x01 0x58 0x04
# CHECK: sgdtw 4(%eax)
0x67 0x0f 0x01 0x40 0x04
# CHECK: sgdtw 4(%eax)
0x67 0x0f 0x01 0x40 0x04
# CHECK: sgdtl 4(%eax)
0x67 0x66 0x0f 0x01 0x40 0x04
# CHECK: sidtw 4(%eax)
0x67 0x0f 0x01 0x48 0x04
# CHECK: sidtw 4(%eax)
0x67 0x0f 0x01 0x48 0x04
# CHECK: sidtl 4(%eax)
0x67 0x66 0x0f 0x01 0x48 0x04
# CHECK: fcompi %st(2)
0xdf 0xf2
# CHECK: fcompi %st(2)
0xdf 0xf2
# CHECK: fcompi %st(1)
0xdf 0xf1
# CHECK: fucompi %st(2)
0xdf 0xea
# CHECK: fucompi %st(2)
0xdf 0xea
# CHECK: fucompi %st(1)
0xdf 0xe9
# CHECK: fldcw 32493
0xd9 0x2e 0xed 0x7e
# CHECK: fldcw 32493
0xd9 0x2e 0xed 0x7e
# CHECK: fnstcw 32493
0xd9 0x3e 0xed 0x7e
# CHECK: fnstcw 32493
0xd9 0x3e 0xed 0x7e
# CHECK: wait
0x9b
# CHECK: fnstcw 32493
0xd9 0x3e 0xed 0x7e
# CHECK: wait
0x9b
# CHECK: fnstcw 32493
0xd9 0x3e 0xed 0x7e
# CHECK: fnstsw 32493
0xdd 0x3e 0xed 0x7e
# CHECK: fnstsw 32493
0xdd 0x3e 0xed 0x7e
# CHECK: wait
0x9b
# CHECK: fnstsw 32493
0xdd 0x3e 0xed 0x7e
# CHECK: wait
0x9b
# CHECK: fnstsw 32493
0xdd 0x3e 0xed 0x7e
# CHECK: verr 32493
0x0f 0x00 0x26 0xed 0x7e
# CHECK: verr 32493
0x0f 0x00 0x26 0xed 0x7e
# CHECK: wait
0x9b
# CHECK: fnclex
0xdb 0xe2
# CHECK: fnclex
0xdb 0xe2
# CHECK: ud2
0x0f 0x0b
# CHECK: ud2
0x0f 0x0b
# CHECK: ud2b
0x0f 0xb9
# CHECK: loope
0xe1 0x00
# CHECK: loopne
0xe0 0x00
# CHECK: outsb
0x6e
# CHECK: outsw
0x6f
# CHECK: outsl
0x66 0x6f
# CHECK: insb
0x6c
# CHECK: insw
0x6d
# CHECK: insl
0x66 0x6d
# CHECK: movsb
0xa4
# CHECK: movsw
0xa5
# CHECK: movsl
0x66 0xa5
# CHECK: lodsb
0xac
# CHECK: lodsw
0xad
# CHECK: lodsl
0x66 0xad
# CHECK: stosb
0xaa
# CHECK: stosw
0xab
# CHECK: stosl
0x66 0xab
# CHECK: strw %ax
0x0f 0x00 0xc8
# CHECK: strl %eax
0x66 0x0f 0x00 0xc8
# CHECK: fsubp %st(1)
0xde 0xe1
# CHECK: fsubp %st(2)
0xde 0xe2
# CHECKX: nop
0x66 0x90
# CHECKX: nop
0x90
# CHECK: xchgl %ecx, %eax
0x66 0x91
# CHECK: xchgl %ecx, %eax
0x66 0x91
# CHECK: retw
0xc3
# CHECK: retl
0x66 0xc3
# CHECK: lretw
0xcb
# CHECK: lretl
0x66 0xcb
# CHECK: callw -1
0xe8 0xff 0xff