[X86] When commuting SSE immediate blend, make sure that the new blend mask is a...
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Thu, 6 Nov 2014 14:36:45 +0000 (14:36 +0000)
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Thu, 6 Nov 2014 14:36:45 +0000 (14:36 +0000)
commitf0f66a254df42d76baef884a14862105e1fc4072
tree13099eab893d91d235ca506b125805205e35faa4
parent22cfcb246956ca0bc3271521cae314c509ecc1c8
[X86] When commuting SSE immediate blend, make sure that the new blend mask is a valid imm8.

Example:
define <4 x i32> @test(<4 x i32> %a, <4 x i32> %b) {
  %shuffle = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 3>
  ret <4 x i32> %shuffle
}

Before llc (-mattr=+sse4.1), produced the following assembly instruction:
  pblendw $4294967103, %xmm1, %xmm0

After
  pblendw $63, %xmm1, %xmm0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221455 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86InstrInfo.cpp
test/CodeGen/X86/commuted-blend-mask.ll [new file with mode: 0644]