[X86] Fix a bug in the lowering of BLENDI introduced in r209043.
authorQuentin Colombet <qcolombet@apple.com>
Wed, 21 May 2014 22:00:39 +0000 (22:00 +0000)
committerQuentin Colombet <qcolombet@apple.com>
Wed, 21 May 2014 22:00:39 +0000 (22:00 +0000)
commitb4d53f1afa36283fcb8121d9574c576d48038421
tree1b446ac999f1930e62ac0f7105ed3a2ef18b9efa
parent339d12ff126e206fa3dc3f951661eab5bc2b0074
[X86] Fix a bug in the lowering of BLENDI introduced in r209043.
ISD::VSELECT mask uses 1 to identify the first argument and 0 to identify the
second argument.
On the other hand, BLENDI uses 0 to identify the first argument and 1 to
identify the second argument.
Fix the generation of the blend mask to account for this difference.

The bug did not show up with r209043, because we were not checking for the
actual arguments of the blend instruction!
This commit also fixes the test cases.

Note: The same mask works for the BLENDr variant because the arguments are
swapped during instruction selection (see the BLENDXXrr patterns).

<rdar://problem/16975435>

llvm-svn: 209324
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/avx-blend.ll
llvm/test/CodeGen/X86/blend-msb.ll