diff options
Diffstat (limited to 'test/MC/Disassembler/X86')
-rw-r--r-- | test/MC/Disassembler/X86/avx-512.txt | 9 | ||||
-rw-r--r-- | test/MC/Disassembler/X86/intel-syntax-32.txt | 12 | ||||
-rw-r--r-- | test/MC/Disassembler/X86/intel-syntax.txt | 20 | ||||
-rw-r--r-- | test/MC/Disassembler/X86/invalid-cmp-imm.txt | 10 | ||||
-rw-r--r-- | test/MC/Disassembler/X86/moffs.txt | 106 | ||||
-rw-r--r-- | test/MC/Disassembler/X86/prefixes.txt | 15 | ||||
-rw-r--r-- | test/MC/Disassembler/X86/simple-tests.txt | 15 | ||||
-rw-r--r-- | test/MC/Disassembler/X86/x86-32.txt | 29 | ||||
-rw-r--r-- | test/MC/Disassembler/X86/x86-64.txt | 15 |
9 files changed, 165 insertions, 66 deletions
diff --git a/test/MC/Disassembler/X86/avx-512.txt b/test/MC/Disassembler/X86/avx-512.txt index f78db552935e..62fc35bd1cff 100644 --- a/test/MC/Disassembler/X86/avx-512.txt +++ b/test/MC/Disassembler/X86/avx-512.txt @@ -1,4 +1,5 @@ # RUN: llvm-mc --disassemble %s -triple=x86_64-apple-darwin9 -mcpu=knl | FileCheck %s +# RUN: llvm-mc --disassemble %s -triple=x86_64-apple-darwin9 -mcpu=skx | FileCheck --check-prefix=CHECK-SKX %s # CHECK: vpbroadcastd %xmm18, %zmm28 {%k7} {z} 0x62 0x22 0x7d 0xcf 0x58 0xe2 @@ -13,7 +14,13 @@ 0x62 0x32 0xed 0x48 0x16 0x04 0x96 # CHECK: vpbroadcastmw2d %k2, %zmm8 -0x62 0xd2 0x7e 0x48 0x3a 0xd0 +0x62 0x72 0x7e 0x48 0x3a 0xc2 + +# CHECK-SKX: vpbroadcastmw2d %k2, %xmm8 +0x62 0x72 0x7e 0x08 0x3a 0xc2 + +# CHECK-SKX: vpbroadcastmw2d %k2, %ymm8 +0x62 0x72 0x7e 0x28 0x3a 0xc2 # CHECK: vpbroadcastq (%r9,%rax), %zmm28 0x62 0x42 0xfd 0x48 0x59 0x24 0x01 diff --git a/test/MC/Disassembler/X86/intel-syntax-32.txt b/test/MC/Disassembler/X86/intel-syntax-32.txt index 2298823604aa..66c87b8bc07b 100644 --- a/test/MC/Disassembler/X86/intel-syntax-32.txt +++ b/test/MC/Disassembler/X86/intel-syntax-32.txt @@ -29,3 +29,15 @@ # CHECK: mov dword ptr [878082192], eax 0xa3 0x90 0x78 0x56 0x34 + +# CHECK: lea cx, [si + 4] +0x67 0x66 0x8d 0x4c 0x04 + +# CHECK: lea ecx, [si + 4] +0x67 0x8d 0x4c 0x04 + +# CHECK: lea cx, [esp + 4] +0x66 0x8d 0x4c 0x24 0x04 + +# CHECK: lea ecx, [esp + 4] +0x8d 0x4c 0x24 0x04 diff --git a/test/MC/Disassembler/X86/intel-syntax.txt b/test/MC/Disassembler/X86/intel-syntax.txt index 3689525d92fa..0a628af02c15 100644 --- a/test/MC/Disassembler/X86/intel-syntax.txt +++ b/test/MC/Disassembler/X86/intel-syntax.txt @@ -152,3 +152,23 @@ # CHECK: movabs qword ptr [-6066930261531658096], rax 0x48 0xa3 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab + +# CHECK: lea cx, [esp + 4] +0x67 0x66 0x8d 0x4c 0x24 0x04 + +# CHECK: lea ecx, [esp + 4] +0x67 0x8d 0x4c 0x24 0x04 + +# CHECK: lea rcx, [esp + 4] +0x67 0x48 0x8d 0x4c 0x24 0x04 + +# CHECK: lea cx, [rsp + 4] +0x66 0x8d 0x4c 0x24 0x04 + +# CHECK: lea ecx, [rsp + 4] +0x8d 0x4c 0x24 0x04 + +# CHECK: lea rcx, [rsp + 4] +0x48 0x8d 0x4c 0x24 0x04 + + diff --git a/test/MC/Disassembler/X86/invalid-cmp-imm.txt b/test/MC/Disassembler/X86/invalid-cmp-imm.txt deleted file mode 100644 index 7b2ea2aa06c7..000000000000 --- a/test/MC/Disassembler/X86/invalid-cmp-imm.txt +++ /dev/null @@ -1,10 +0,0 @@ -# RUN: llvm-mc --disassemble %s -triple=x86_64-apple-darwin9 2>&1 | grep "invalid instruction encoding" - -# This instruction would decode as cmpordps if the immediate byte was less than 8. -0x0f 0xc2 0xc7 0x08 -# This instruction would decode as cmpordpd if the immediate byte was less than 8. -0x66 0x0f 0xc2 0xc7 0x08 -# This instruction would decode as cmpordss if the immediate byte was less than 8. -0xf3 0x0f 0xc2 0xc7 0x08 -# This instruction would decode as cmpordsd if the immediate byte was less than 8. -0xf2 0x0f 0xc2 0xc7 0x08 diff --git a/test/MC/Disassembler/X86/moffs.txt b/test/MC/Disassembler/X86/moffs.txt index dd2664cb7737..ac1885954944 100644 --- a/test/MC/Disassembler/X86/moffs.txt +++ b/test/MC/Disassembler/X86/moffs.txt @@ -1,86 +1,86 @@ -# RUN: llvm-mc --disassemble --print-imm-hex %s -triple=i686-linux-gnu-code16 | FileCheck --check-prefix=16 %s -# RUN: llvm-mc --disassemble --print-imm-hex %s -triple=i686-linux-gnu | FileCheck --check-prefix=32 %s -# RUN: llvm-mc --disassemble --print-imm-hex %s -triple=x86_64-linux-gnu | FileCheck --check-prefix=64 %s +# RUN: llvm-mc --disassemble --show-encoding --print-imm-hex %s -triple=i686-linux-gnu-code16 | FileCheck --check-prefix=16 %s +# RUN: llvm-mc --disassemble --show-encoding --print-imm-hex %s -triple=i686-linux-gnu | FileCheck --check-prefix=32 %s +# RUN: llvm-mc --disassemble --show-encoding --print-imm-hex %s -triple=x86_64-linux-gnu | FileCheck --check-prefix=64 %s -# 16: movb 0x5a5a, %al -# 32: movb 0x5a5a5a5a, %al -# 64: movabsb 0x5a5a5a5a5a5a5a5a, %al +# 16: movb 0x5a5a, %al # encoding: [0xa0,0x5a,0x5a] +# 32: movb 0x5a5a5a5a, %al # encoding: [0xa0,0x5a,0x5a,0x5a,0x5a] +# 64: movabsb 0x5a5a5a5a5a5a5a5a, %al # encoding: [0xa0,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] 0xa0 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movb 0x5a5a5a5a, %al -# 32: movb 0x5a5a, %al -# 64: movabsb 0x5a5a5a5a, %al +# 16: movb 0x5a5a5a5a, %al # encoding: [0x67,0xa0,0x5a,0x5a,0x5a,0x5a] +# 32: movb 0x5a5a, %al # encoding: [0x67,0xa0,0x5a,0x5a] +# 64: movb 0x5a5a5a5a, %al # encoding: [0x67,0xa0,0x5a,0x5a,0x5a,0x5a] 0x67 0xa0 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movw 0x5a5a, %ax -# 32: movl 0x5a5a5a5a, %eax -# 64: movabsl 0x5a5a5a5a5a5a5a5a, %eax +# 16: movw 0x5a5a, %ax # encoding: [0xa1,0x5a,0x5a] +# 32: movl 0x5a5a5a5a, %eax # encoding: [0xa1,0x5a,0x5a,0x5a,0x5a] +# 64: movabsl 0x5a5a5a5a5a5a5a5a, %eax # encoding: [0xa1,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movw 0x5a5a5a5a, %ax -# 32: movl 0x5a5a, %eax -# 64: movabsl 0x5a5a5a5a, %eax +# 16: movw 0x5a5a5a5a, %ax # encoding: [0x67,0xa1,0x5a,0x5a,0x5a,0x5a] +# 32: movl 0x5a5a, %eax # encoding: [0x67,0xa1,0x5a,0x5a] +# 64: movl 0x5a5a5a5a, %eax # encoding: [0x67,0xa1,0x5a,0x5a,0x5a,0x5a] 0x67 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl 0x5a5a, %eax -# 32: movw 0x5a5a5a5a, %ax -# 64: movabsw 0x5a5a5a5a5a5a5a5a, %ax +# 16: movl 0x5a5a, %eax # encoding: [0x66,0xa1,0x5a,0x5a] +# 32: movw 0x5a5a5a5a, %ax # encoding: [0x66,0xa1,0x5a,0x5a,0x5a,0x5a] +# 64: movabsw 0x5a5a5a5a5a5a5a5a, %ax # encoding: [0x66,0xa1,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] 0x66 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl 0x5a5a5a5a, %eax -# 32: movw 0x5a5a, %ax -# 64: movabsw 0x5a5a5a5a, %ax +# 16: movl 0x5a5a5a5a, %eax # encoding: [0x67,0x66,0xa1,0x5a,0x5a,0x5a,0x5a] +# 32: movw 0x5a5a, %ax # encoding: [0x67,0x66,0xa1,0x5a,0x5a] +# 64: movw 0x5a5a5a5a, %ax # encoding: [0x67,0x66,0xa1,0x5a,0x5a,0x5a,0x5a] 0x66 0x67 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl 0x5a5a5a5a, %eax -# 32: movw 0x5a5a, %ax -# 64: movabsw 0x5a5a5a5a, %ax +# 16: movl 0x5a5a5a5a, %eax # encoding: [0x67,0x66,0xa1,0x5a,0x5a,0x5a,0x5a] +# 32: movw 0x5a5a, %ax # encoding: [0x67,0x66,0xa1,0x5a,0x5a] +# 64: movw 0x5a5a5a5a, %ax # encoding: [0x67,0x66,0xa1,0x5a,0x5a,0x5a,0x5a] 0x67 0x66 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl %es:0x5a5a5a5a, %eax -# 32: movw %es:0x5a5a, %ax -# 64: movabsw %es:0x5a5a5a5a, %ax -0x67 0x26 0x66 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a +# 16: movl %es:0x5a5a5a5a, %eax # encoding: [0x67,0x66,0x26,0xa1,0x5a,0x5a,0x5a,0x5a] +# 32: movw %es:0x5a5a, %ax # encoding: [0x67,0x66,0x26,0xa1,0x5a,0x5a] +# 64: movw %es:0x5a5a5a5a, %ax # encoding: [0x67,0x66,0x26,0xa1,0x5a,0x5a,0x5a,0x5a] +0x67 0x26 0x66 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a # encoding: [0xa0,0x5a,0x5a] -# 16: movb %al, 0x5a5a -# 32: movb %al, 0x5a5a5a5a -# 64: movabsb %al, 0x5a5a5a5a5a5a5a5a -0xa2 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a +# 16: movb %al, 0x5a5a # encoding: [0xa2,0x5a,0x5a] +# 32: movb %al, 0x5a5a5a5a # encoding: [0xa2,0x5a,0x5a,0x5a,0x5a] +# 64: movabsb %al, 0x5a5a5a5a5a5a5a5a # encoding: [0xa2,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] +0xa2 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a # encoding: [0xa0,0x5a,0x5a] -# 16: movb %al, 0x5a5a5a5a -# 32: movb %al, 0x5a5a -# 64: movabsb %al, 0x5a5a5a5a +# 16: movb %al, 0x5a5a5a5a # encoding: [0x67,0xa2,0x5a,0x5a,0x5a,0x5a] +# 32: movb %al, 0x5a5a # encoding: [0x67,0xa2,0x5a,0x5a] +# 64: movb %al, 0x5a5a5a5a # encoding: [0x67,0xa2,0x5a,0x5a,0x5a,0x5a] 0x67 0xa2 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movw %ax, 0x5a5a -# 32: movl %eax, 0x5a5a5a5a -# 64: movabsl %eax, 0x5a5a5a5a5a5a5a5a +# 16: movw %ax, 0x5a5a # encoding: [0xa3,0x5a,0x5a] +# 32: movl %eax, 0x5a5a5a5a # encoding: [0xa3,0x5a,0x5a,0x5a,0x5a] +# 64: movabsl %eax, 0x5a5a5a5a5a5a5a5a # encoding: [0xa3,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movw %ax, %gs:0x5a5a5a5a -# 32: movl %eax, %gs:0x5a5a -# 64: movabsl %eax, %gs:0x5a5a5a5a +# 16: movw %ax, %gs:0x5a5a5a5a # encoding: [0x67,0x65,0xa3,0x5a,0x5a,0x5a,0x5a] +# 32: movl %eax, %gs:0x5a5a # encoding: [0x67,0x65,0xa3,0x5a,0x5a] +# 64: movl %eax, %gs:0x5a5a5a5a # encoding: [0x67,0x65,0xa3,0x5a,0x5a,0x5a,0x5a] 0x65 0x67 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl %eax, 0x5a5a -# 32: movw %ax, 0x5a5a5a5a -# 64: movabsw %ax, 0x5a5a5a5a5a5a5a5a +# 16: movl %eax, 0x5a5a # encoding: [0x66,0xa3,0x5a,0x5a] +# 32: movw %ax, 0x5a5a5a5a # encoding: [0x66,0xa3,0x5a,0x5a,0x5a,0x5a] +# 64: movabsw %ax, 0x5a5a5a5a5a5a5a5a # encoding: [0x66,0xa3,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] 0x66 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl %eax, 0x5a5a5a5a -# 32: movw %ax, 0x5a5a -# 64: movabsw %ax, 0x5a5a5a5a +# 16: movl %eax, 0x5a5a5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a,0x5a,0x5a] +# 32: movw %ax, 0x5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a] +# 64: movw %ax, 0x5a5a5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a,0x5a,0x5a] 0x66 0x67 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl %eax, 0x5a5a5a5a -# 32: movw %ax, 0x5a5a -# 64: movabsw %ax, 0x5a5a5a5a +# 16: movl %eax, 0x5a5a5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a,0x5a,0x5a] +# 32: movw %ax, 0x5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a] +# 64: movw %ax, 0x5a5a5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a,0x5a,0x5a] 0x67 0x66 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl %eax, %es:0x5a5a5a5a -# 32: movw %ax, %es:0x5a5a -# 64: movabsw %ax, %es:0x5a5a5a5a +# 16: movl %eax, %es:0x5a5a5a5a # encoding: [0x67,0x66,0x26,0xa3,0x5a,0x5a,0x5a,0x5a] +# 32: movw %ax, %es:0x5a5a # encoding: [0x67,0x66,0x26,0xa3,0x5a,0x5a] +# 64: movw %ax, %es:0x5a5a5a5a # encoding: [0x67,0x66,0x26,0xa3,0x5a,0x5a,0x5a,0x5a] 0x67 0x26 0x66 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a diff --git a/test/MC/Disassembler/X86/prefixes.txt b/test/MC/Disassembler/X86/prefixes.txt index b8830dc3f3b9..9e002fab4656 100644 --- a/test/MC/Disassembler/X86/prefixes.txt +++ b/test/MC/Disassembler/X86/prefixes.txt @@ -8,11 +8,11 @@ 0x64 0x48 0x8b 0x3c 0x25 0x00 0x03 0x00 0x00 # CHECK: rep -# CHECK-NEXT: stosq +# CHECK-NEXT: stosq %rax, %es:(%rdi) 0xf3 0x48 0xab # CHECK: rep -# CHECK-NEXT: stosl +# CHECK-NEXT: stosq %rax, %es:(%edi) 0xf3 0x67 0x48 0xab # CHECK: movl 32(%rbp), %eax @@ -54,6 +54,17 @@ # CHECK-NEXT: stosq 0xf3 0xf3 0x48 0xab + +# Test that we can disassembler control registers above CR8 +# CHECK: movq %cr15, %rax +0x44 0x0f 0x20 0xf8 +# CHECK: movq %dr15, %rax +0x44 0x0f 0x21 0xf8 + +# Test that MMX ignore REX.R and REX.B. +# CHECK: movq %mm0, %mm1 +0x46 0x0f 0x7f 0xc1 + # Test that a prefix on it's own works. It's debatable as to if this is # something that is considered valid, but however as LLVM's own disassembler # has decided to disassemble prefixes as being separate opcodes, it therefore diff --git a/test/MC/Disassembler/X86/simple-tests.txt b/test/MC/Disassembler/X86/simple-tests.txt index e6e9c7bc9cc5..8fab6c9febcb 100644 --- a/test/MC/Disassembler/X86/simple-tests.txt +++ b/test/MC/Disassembler/X86/simple-tests.txt @@ -90,9 +90,24 @@ # CHECK: movq %cr0, %rcx 0x0f 0x20 0xc1 +# CHECK: leaw 4(%esp), %cx +0x67 0x66 0x8d 0x4c 0x24 0x04 + +# CHECK: leal 4(%esp), %ecx +0x67 0x8d 0x4c 0x24 0x04 + +# CHECK: leaq 4(%esp), %rcx +0x67 0x48 0x8d 0x4c 0x24 0x04 + +# CHECK: leaw 4(%rsp), %cx +0x66 0x8d 0x4c 0x24 0x04 + # CHECK: leal 4(%rsp), %ecx 0x8d 0x4c 0x24 0x04 +# CHECK: leaq 4(%rsp), %rcx +0x48 0x8d 0x4c 0x24 0x04 + # CHECK: enter $1, $2 0xc8 0x01 0x00 0x02 diff --git a/test/MC/Disassembler/X86/x86-32.txt b/test/MC/Disassembler/X86/x86-32.txt index c9c508680c5a..35c8cce9cbd7 100644 --- a/test/MC/Disassembler/X86/x86-32.txt +++ b/test/MC/Disassembler/X86/x86-32.txt @@ -711,3 +711,32 @@ # CHECK: movq %mm0, %mm1 0x0f 0x7f 0xc1 + +# CHECK: vpermq $-18, %ymm2, %ymm2 +0xc4 0xe3 0xfd 0x00 0xd2 0xee + +# CHECK: cmpps $8, %xmm7, %xmm0 +0x0f 0xc2 0xc7 0x08 +# CHECK: cmppd $8, %xmm7, %xmm0 +0x66 0x0f 0xc2 0xc7 0x08 +# CHECK: cmpss $8, %xmm7, %xmm0 +0xf3 0x0f 0xc2 0xc7 0x08 +# CHECK: cmpsd $8, %xmm7, %xmm0 +0xf2 0x0f 0xc2 0xc7 0x08 + +# CHECK: addb $38, 5277496 +0x82 0x05 0x38 0x87 0x50 0x00 0x26 +# CHECK: orb $38, 5277496 +0x82 0x0d 0x38 0x87 0x50 0x00 0x26 +# CHECK: adcb $38, 5277496 +0x82 0x15 0x38 0x87 0x50 0x00 0x26 +# CHECK: sbbb $38, 5277496 +0x82 0x1d 0x38 0x87 0x50 0x00 0x26 +# CHECK: andb $38, 5277496 +0x82 0x25 0x38 0x87 0x50 0x00 0x26 +# CHECK: subb $38, 5277496 +0x82 0x2D 0x38 0x87 0x50 0x00 0x26 +# CHECK: xorb $38, 5277496 +0x82 0x35 0x38 0x87 0x50 0x00 0x26 +# CHECK: cmpb $38, 5277496 +0x82 0x3d 0x38 0x87 0x50 0x00 0x26 diff --git a/test/MC/Disassembler/X86/x86-64.txt b/test/MC/Disassembler/X86/x86-64.txt index 6f072df7e4b7..e67a4f9383e0 100644 --- a/test/MC/Disassembler/X86/x86-64.txt +++ b/test/MC/Disassembler/X86/x86-64.txt @@ -107,6 +107,9 @@ # CHECK: xbegin 53 0xc7 0xf8 0x35 0x00 0x00 0x00 +# CHECK: xbegin 53 +0x66 0xc7 0xf8 0x35 0x00 + # CHECK: xend 0x0f 0x01 0xd5 @@ -265,3 +268,15 @@ # CHECK: $0, 305419896(%rbp) 0x80 0x84 0x25 0x78 0x56 0x34 0x12 0x00 + +# CHECK: movabsq 6510615555426900570, %rax +0x48 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a + +# CHECK: movq 1515870810, %rax +0x67, 0x48 0xa1 0x5a 0x5a 0x5a 0x5a + +# CHECK: movabsq %rax, 6510615555426900570 +0x48 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a + +# CHECK: movq %rax, 1515870810 +0x67, 0x48 0xa3 0x5a 0x5a 0x5a 0x5a |