diff options
Diffstat (limited to 'test/MC/X86')
-rw-r--r-- | test/MC/X86/3DNow.s | 6 | ||||
-rw-r--r-- | test/MC/X86/x86-32-avx.s | 30 | ||||
-rw-r--r-- | test/MC/X86/x86-32-coverage.s | 21 | ||||
-rw-r--r-- | test/MC/X86/x86-32.s | 16 | ||||
-rw-r--r-- | test/MC/X86/x86-64.s | 21 | ||||
-rw-r--r-- | test/MC/X86/x86_64-avx-encoding.s | 30 | ||||
-rw-r--r-- | test/MC/X86/x86_64-bmi-encoding.s | 121 | ||||
-rw-r--r-- | test/MC/X86/x86_errors.s | 19 |
8 files changed, 257 insertions, 7 deletions
diff --git a/test/MC/X86/3DNow.s b/test/MC/X86/3DNow.s index 4dc68ae..871857b 100644 --- a/test/MC/X86/3DNow.s +++ b/test/MC/X86/3DNow.s @@ -1,18 +1,18 @@ -// RUN: llvm-mc -triple i386-unknown-unknown --show-encoding %s | FileCheck %s +// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s // PR8283 // CHECK: pavgusb %mm2, %mm1 # encoding: [0x0f,0x0f,0xca,0xbf] pavgusb %mm2, %mm1 -// CHECK: pavgusb 9(%esi,%edx), %mm3 # encoding: [0x0f,0x0f,0x5c,0x16,0x09,0xbf] +// CHECK: pavgusb 9(%esi,%edx), %mm3 # encoding: [0x67,0x0f,0x0f,0x5c,0x16,0x09,0xbf] pavgusb 9(%esi,%edx), %mm3 // CHECK: pf2id %mm2, %mm1 # encoding: [0x0f,0x0f,0xca,0x1d] pf2id %mm2, %mm1 -// CHECK: pf2id 9(%esi,%edx), %mm3 # encoding: [0x0f,0x0f,0x5c,0x16,0x09,0x1d] +// CHECK: pf2id 9(%esi,%edx), %mm3 # encoding: [0x67,0x0f,0x0f,0x5c,0x16,0x09,0x1d] pf2id 9(%esi,%edx), %mm3 // CHECK: pfacc %mm2, %mm1 # encoding: [0x0f,0x0f,0xca,0xae] diff --git a/test/MC/X86/x86-32-avx.s b/test/MC/X86/x86-32-avx.s index 1927e4e..e13a871 100644 --- a/test/MC/X86/x86-32-avx.s +++ b/test/MC/X86/x86-32-avx.s @@ -479,6 +479,14 @@ // CHECK: encoding: [0xc5,0xf9,0x50,0xc2] vmovmskpd %xmm2, %eax +// CHECK: vmovmskps %ymm2, %eax +// CHECK: encoding: [0xc5,0xfc,0x50,0xc2] + vmovmskps %ymm2, %eax + +// CHECK: vmovmskpd %ymm2, %eax +// CHECK: encoding: [0xc5,0xfd,0x50,0xc2] + vmovmskpd %ymm2, %eax + // CHECK: vcmpss $0, %xmm1, %xmm2, %xmm3 // CHECK: encoding: [0xc5,0xea,0xc2,0xd9,0x00] vcmpeqss %xmm1, %xmm2, %xmm3 @@ -3281,3 +3289,25 @@ // CHECK: encoding: [0xc4,0xe3,0x51,0x44,0x18,0x11] vpclmulqdq $17, (%eax), %xmm5, %xmm3 +// rdar://9795008 +// These instructions take a mask not an 8-bit sign extended value. +// CHECK: vblendps $129, %ymm2, %ymm5, %ymm1 + vblendps $0x81, %ymm2, %ymm5, %ymm1 +// CHECK: vblendps $129, (%eax), %ymm5, %ymm1 + vblendps $0x81, (%eax), %ymm5, %ymm1 +// CHECK: vblendpd $129, %ymm2, %ymm5, %ymm1 + vblendpd $0x81, %ymm2, %ymm5, %ymm1 +// CHECK: vblendpd $129, (%eax), %ymm5, %ymm1 + vblendpd $0x81, (%eax), %ymm5, %ymm1 +// CHECK: vpblendw $129, %xmm2, %xmm5, %xmm1 + vpblendw $0x81, %xmm2, %xmm5, %xmm1 +// CHECK: vmpsadbw $129, %xmm2, %xmm5, %xmm1 + vmpsadbw $0x81, %xmm2, %xmm5, %xmm1 +// CHECK: vdpps $129, %ymm2, %ymm5, %ymm1 + vdpps $0x81, %ymm2, %ymm5, %ymm1 +// CHECK: vdpps $129, (%eax), %ymm5, %ymm1 + vdpps $0x81, (%eax), %ymm5, %ymm1 +// CHECK: vdppd $129, %xmm2, %xmm5, %xmm1 + vdppd $0x81, %xmm2, %xmm5, %xmm1 +// CHECK: vinsertps $129, %xmm3, %xmm2, %xmm1 + vinsertps $0x81, %xmm3, %xmm2, %xmm1 diff --git a/test/MC/X86/x86-32-coverage.s b/test/MC/X86/x86-32-coverage.s index bdc54a6..0954ce2 100644 --- a/test/MC/X86/x86-32-coverage.s +++ b/test/MC/X86/x86-32-coverage.s @@ -19571,7 +19571,24 @@ // CHECK: aeskeygenassist $125, (%edx,%eax,4), %xmm2 aeskeygenassist $125, (%edx,%eax,4), %xmm2 -// CHECK: blendvps (%rax), %xmm1 # encoding: [0x66,0x0f,0x38,0x14,0x08] - blendvps (%rax), %xmm1 +// CHECK: blendvps (%eax), %xmm1 # encoding: [0x66,0x0f,0x38,0x14,0x08] + blendvps (%eax), %xmm1 // CHECK: blendvps %xmm2, %xmm1 # encoding: [0x66,0x0f,0x38,0x14,0xca] blendvps %xmm2, %xmm1 + +// rdar://9795008 +// These instructions take a mask not an 8-bit sign extended value. +// CHECK: blendps $129, %xmm2, %xmm1 + blendps $0x81, %xmm2, %xmm1 +// CHECK: blendpd $129, %xmm2, %xmm1 + blendpd $0x81, %xmm2, %xmm1 +// CHECK: pblendw $129, %xmm2, %xmm1 + pblendw $0x81, %xmm2, %xmm1 +// CHECK: mpsadbw $129, %xmm2, %xmm1 + mpsadbw $0x81, %xmm2, %xmm1 +// CHECK: dpps $129, %xmm2, %xmm1 + dpps $0x81, %xmm2, %xmm1 +// CHECK: dppd $129, %xmm2, %xmm1 + dppd $0x81, %xmm2, %xmm1 +// CHECK: insertps $129, %xmm2, %xmm1 + insertps $0x81, %xmm2, %xmm1 diff --git a/test/MC/X86/x86-32.s b/test/MC/X86/x86-32.s index 6017880..19f1445 100644 --- a/test/MC/X86/x86-32.s +++ b/test/MC/X86/x86-32.s @@ -946,3 +946,19 @@ fsubp %st,%st(1) // CHECK: encoding: [0xde,0xe2] fsubp %st, %st(2) +// PR10345 +// CHECK: xchgl %eax, %eax +// CHECK: encoding: [0x90] +xchgl %eax, %eax + +// CHECK: xchgw %ax, %ax +// CHECK: encoding: [0x66,0x90] +xchgw %ax, %ax + +// CHECK: xchgl %ecx, %eax +// CHECK: encoding: [0x91] +xchgl %ecx, %eax + +// CHECK: xchgl %ecx, %eax +// CHECK: encoding: [0x91] +xchgl %eax, %ecx diff --git a/test/MC/X86/x86-64.s b/test/MC/X86/x86-64.s index 6f828e8..a9cdaa4 100644 --- a/test/MC/X86/x86-64.s +++ b/test/MC/X86/x86-64.s @@ -1170,3 +1170,24 @@ pclmullqhqdq (%rdi), %xmm1 // CHECK: pclmulqdq $0, (%rdi), %xmm1 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0x0f,0x00] pclmulqdq $0, (%rdi), %xmm1 + +// PR10345 +// CHECK: xchgq %rax, %rax +// CHECK: encoding: [0x48,0x90] +xchgq %rax, %rax + +// CHECK: xchgl %eax, %eax +// CHECK: encoding: [0x87,0xc0] +xchgl %eax, %eax + +// CHECK: xchgw %ax, %ax +// CHECK: encoding: [0x66,0x90] +xchgw %ax, %ax + +// CHECK: xchgl %ecx, %eax +// CHECK: encoding: [0x91] +xchgl %ecx, %eax + +// CHECK: xchgl %ecx, %eax +// CHECK: encoding: [0x91] +xchgl %eax, %ecx diff --git a/test/MC/X86/x86_64-avx-encoding.s b/test/MC/X86/x86_64-avx-encoding.s index 7a96bb5..d3b226f 100644 --- a/test/MC/X86/x86_64-avx-encoding.s +++ b/test/MC/X86/x86_64-avx-encoding.s @@ -1448,6 +1448,10 @@ vdivpd -4(%rcx,%rbx,8), %xmm10, %xmm11 // CHECK: encoding: [0xc4,0x61,0xf9,0x6e,0xf0] vmovd %rax, %xmm14 +// CHECK: vmovd %xmm0, %rax +// CHECK: encoding: [0xc4,0xe1,0xf9,0x7e,0xc0] + vmovd %xmm0, %rax + // CHECK: vmovq %xmm14, (%rax) // CHECK: encoding: [0xc5,0x79,0xd6,0x30] vmovq %xmm14, (%rax) @@ -3316,3 +3320,29 @@ vdivpd -4(%rcx,%rbx,8), %xmm10, %xmm11 // CHECK: encoding: [0xc4,0x63,0x1d,0x4b,0xac,0x20,0xad,0xde,0x00,0x00,0xb0] vblendvpd %ymm11, 0xdead(%rax,%riz), %ymm12, %ymm13 +// CHECK: vmovaps %xmm3, (%r14,%r11) +// CHECK: encoding: [0xc4,0x81,0x78,0x29,0x1c,0x1e] + vmovaps %xmm3, (%r14,%r11) + +// CHECK: vmovaps (%r14,%r11), %xmm3 +// CHECK: encoding: [0xc4,0x81,0x78,0x28,0x1c,0x1e] + vmovaps (%r14,%r11), %xmm3 + +// CHECK: vmovaps %xmm3, (%r14,%rbx) +// CHECK: encoding: [0xc4,0xc1,0x78,0x29,0x1c,0x1e] + vmovaps %xmm3, (%r14,%rbx) + +// CHECK: vmovaps (%r14,%rbx), %xmm3 +// CHECK: encoding: [0xc4,0xc1,0x78,0x28,0x1c,0x1e] + vmovaps (%r14,%rbx), %xmm3 + +// CHECK: vmovaps %xmm3, (%rax,%r11) +// CHECK: encoding: [0xc4,0xa1,0x78,0x29,0x1c,0x18] + vmovaps %xmm3, (%rax,%r11) + +// CHECK: vpshufb _foo(%rip), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe2,0x79,0x00,0x05,A,A,A,A] +// CHECK: kind: reloc_riprel_4byte +_foo: + nop + vpshufb _foo(%rip), %xmm0, %xmm0 diff --git a/test/MC/X86/x86_64-bmi-encoding.s b/test/MC/X86/x86_64-bmi-encoding.s new file mode 100644 index 0000000..005ded2 --- /dev/null +++ b/test/MC/X86/x86_64-bmi-encoding.s @@ -0,0 +1,121 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s + +// CHECK: blsmskl %r11d, %r10d +// CHECK: encoding: [0xc4,0xc2,0x28,0xf3,0xd3] + blsmskl %r11d, %r10d + +// CHECK: blsmskq %r11, %r10 +// CHECK: encoding: [0xc4,0xc2,0xa8,0xf3,0xd3] + blsmskq %r11, %r10 + +// CHECK: blsmskl (%rax), %r10d +// CHECK: encoding: [0xc4,0xe2,0x28,0xf3,0x10] + blsmskl (%rax), %r10d + +// CHECK: blsmskq (%rax), %r10 +// CHECK: encoding: [0xc4,0xe2,0xa8,0xf3,0x10] + blsmskq (%rax), %r10 + +// CHECK: blsil %r11d, %r10d +// CHECK: encoding: [0xc4,0xc2,0x28,0xf3,0xdb] + blsil %r11d, %r10d + +// CHECK: blsiq %r11, %r10 +// CHECK: encoding: [0xc4,0xc2,0xa8,0xf3,0xdb] + blsiq %r11, %r10 + +// CHECK: blsil (%rax), %r10d +// CHECK: encoding: [0xc4,0xe2,0x28,0xf3,0x18] + blsil (%rax), %r10d + +// CHECK: blsiq (%rax), %r10 +// CHECK: encoding: [0xc4,0xe2,0xa8,0xf3,0x18] + blsiq (%rax), %r10 + +// CHECK: blsrl %r11d, %r10d +// CHECK: encoding: [0xc4,0xc2,0x28,0xf3,0xcb] + blsrl %r11d, %r10d + +// CHECK: blsrq %r11, %r10 +// CHECK: encoding: [0xc4,0xc2,0xa8,0xf3,0xcb] + blsrq %r11, %r10 + +// CHECK: blsrl (%rax), %r10d +// CHECK: encoding: [0xc4,0xe2,0x28,0xf3,0x08] + blsrl (%rax), %r10d + +// CHECK: blsrq (%rax), %r10 +// CHECK: encoding: [0xc4,0xe2,0xa8,0xf3,0x08] + blsrq (%rax), %r10 + +// CHECK: andnl (%rax), %r11d, %r10d +// CHECK: encoding: [0xc4,0x62,0x20,0xf2,0x10] + andnl (%rax), %r11d, %r10d + +// CHECK: andnq (%rax), %r11, %r10 +// CHECK: encoding: [0xc4,0x62,0xa0,0xf2,0x10] + andnq (%rax), %r11, %r10 + +// CHECK: bextrl %r12d, (%rax), %r10d +// CHECK: encoding: [0xc4,0x62,0x18,0xf7,0x10] + bextrl %r12d, (%rax), %r10d + +// CHECK: bextrl %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x18,0xf7,0xd3] + bextrl %r12d, %r11d, %r10d + +// CHECK: bextrq %r12, (%rax), %r10 +// CHECK: encoding: [0xc4,0x62,0x98,0xf7,0x10] + bextrq %r12, (%rax), %r10 + +// CHECK: bextrq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0x98,0xf7,0xd3] + bextrq %r12, %r11, %r10 + +// CHECK: bzhil %r12d, (%rax), %r10d +// CHECK: encoding: [0xc4,0x62,0x18,0xf5,0x10] + bzhil %r12d, (%rax), %r10d + +// CHECK: bzhil %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x18,0xf5,0xd3] + bzhil %r12d, %r11d, %r10d + +// CHECK: bzhiq %r12, (%rax), %r10 +// CHECK: encoding: [0xc4,0x62,0x98,0xf5,0x10] + bzhiq %r12, (%rax), %r10 + +// CHECK: bzhiq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0x98,0xf5,0xd3] + bzhiq %r12, %r11, %r10 + +// CHECK: pextl %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x22,0xf5,0xd4] + pextl %r12d, %r11d, %r10d + +// CHECK: pextl (%rax), %r11d, %r10d +// CHECK: encoding: [0xc4,0x62,0x22,0xf5,0x10] + pextl (%rax), %r11d, %r10d + +// CHECK: pextq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0xa2,0xf5,0xd4] + pextq %r12, %r11, %r10 + +// CHECK: pextq (%rax), %r11, %r10 +// CHECK: encoding: [0xc4,0x62,0xa2,0xf5,0x10] + pextq (%rax), %r11, %r10 + +// CHECK: pdepl %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x23,0xf5,0xd4] + pdepl %r12d, %r11d, %r10d + +// CHECK: pdepl (%rax), %r11d, %r10d +// CHECK: encoding: [0xc4,0x62,0x23,0xf5,0x10] + pdepl (%rax), %r11d, %r10d + +// CHECK: pdepq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0xa3,0xf5,0xd4] + pdepq %r12, %r11, %r10 + +// CHECK: pdepq (%rax), %r11, %r10 +// CHECK: encoding: [0xc4,0x62,0xa3,0xf5,0x10] + pdepq (%rax), %r11, %r10 diff --git a/test/MC/X86/x86_errors.s b/test/MC/X86/x86_errors.s index 183306b..054331a 100644 --- a/test/MC/X86/x86_errors.s +++ b/test/MC/X86/x86_errors.s @@ -1,5 +1,20 @@ // RUN: not llvm-mc -triple x86_64-unknown-unknown %s 2> %t.err -// RUN: FileCheck < %t.err %s +// RUN: FileCheck --check-prefix=64 < %t.err %s -// CHECK: error: ambiguous instructions require an explicit suffix (could be 'cmpb', 'cmpw', 'cmpl', or 'cmpq') +// RUN: not llvm-mc -triple i386-unknown-unknown %s 2> %t.err +// RUN: FileCheck --check-prefix=32 < %t.err %s +// rdar://8204588 + +// 64: error: ambiguous instructions require an explicit suffix (could be 'cmpb', 'cmpw', 'cmpl', or 'cmpq') cmp $0, 0(%eax) + +// 32: error: register %rax is only available in 64-bit mode +addl $0, 0(%rax) + +// 32: test.s:8:2: error: invalid instruction mnemonic 'movi' + +# 8 "test.s" + movi $8,%eax + +movl 0(%rax), 0(%edx) // error: invalid operand for instruction + |