diff options
author | Kevin Enderby <enderby@apple.com> | 2011-07-27 23:01:50 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2011-07-27 23:01:50 +0000 |
commit | c37d4bbf1f33c5e4b1c2f1bf1a6e2cae2ae5603a (patch) | |
tree | fcbda9c4873cb87eeb09ba0f65e1eaf73b3387bf /test/MC/X86/x86-32-avx.s | |
parent | fc2eb31a3c054f9611a2e88238fbb5a8842064a6 (diff) | |
download | external_llvm-c37d4bbf1f33c5e4b1c2f1bf1a6e2cae2ae5603a.zip external_llvm-c37d4bbf1f33c5e4b1c2f1bf1a6e2cae2ae5603a.tar.gz external_llvm-c37d4bbf1f33c5e4b1c2f1bf1a6e2cae2ae5603a.tar.bz2 |
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.s | 22 |
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 1927e4e..f56d576 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 |