[X86] Fix a bug in the lowering of the mask of VSELECT.
authorQuentin Colombet <qcolombet@apple.com>
Mon, 20 Oct 2014 23:13:30 +0000 (23:13 +0000)
committerQuentin Colombet <qcolombet@apple.com>
Mon, 20 Oct 2014 23:13:30 +0000 (23:13 +0000)
commita37862e2de85b041afd470082c2ea453383f555f
tree5f6de5b814e3683e3a196a4e746acd7787a5500e
parent90f3f15da5c96356f9952109446f945090180b27
[X86] Fix a bug in the lowering of the mask of VSELECT.
X86 code to lower VSELECT messed a bit with the bits set in the mask of VSELECT
when it knows it can be lowered into BLEND. Indeed, only the high bits need to be
set for those and it optimizes those accordingly.
However, when the mask is a compile time constant, the lowering will be handled
by the generic optimizer and those modifications will generate bad code in the
generic optimizer.

This patch fixes that by preventing the optimization if the VSELECT will be
handled by the generic optimizer.

<rdar://problem/18675020>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220242 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/vselect-avx.ll [new file with mode: 0644]