summaryrefslogtreecommitdiff
path: root/test/MC/X86/x86-32-avx.s
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2011-07-27 23:01:50 +0000
committerKevin Enderby <enderby@apple.com>2011-07-27 23:01:50 +0000
commitc37d4bbf1f33c5e4b1c2f1bf1a6e2cae2ae5603a (patch)
treefcbda9c4873cb87eeb09ba0f65e1eaf73b3387bf /test/MC/X86/x86-32-avx.s
parentfc2eb31a3c054f9611a2e88238fbb5a8842064a6 (diff)
downloadllvm-c37d4bbf1f33c5e4b1c2f1bf1a6e2cae2ae5603a.tar.gz
llvm-c37d4bbf1f33c5e4b1c2f1bf1a6e2cae2ae5603a.tar.bz2
llvm-c37d4bbf1f33c5e4b1c2f1bf1a6e2cae2ae5603a.tar.xz
Fix llvm-mc handing of x86 instructions that take 8-bit unsigned immediates.
llvm-mc gives an "invalid operand" error for instructions that take an unsigned immediate which have the high bit set such as: pblendw $0xc5, %xmm2, %xmm1 llvm-mc treats all x86 immediates as signed values and range checks them. A small number of x86 instructions use the imm8 field as a set of bits. This change only changes those instructions and where the high bit is not ignored. The others remain unchanged. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136287 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/X86/x86-32-avx.s')
-rw-r--r--test/MC/X86/x86-32-avx.s22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/MC/X86/x86-32-avx.s b/test/MC/X86/x86-32-avx.s
index 1927e4e7a6..f56d5763ad 100644
--- a/test/MC/X86/x86-32-avx.s
+++ b/test/MC/X86/x86-32-avx.s
@@ -3281,3 +3281,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