[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)
commit06355199f153a62c390d1e49d96cec66bc9056d2
treeeae920a5ec8cb9a0b02e9a757cb907212bd41b31
parent659ecc3120eb7797ce8ec85d2748e3b2f5065a5a
[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>

llvm-svn: 220242
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/vselect-avx.ll [new file with mode: 0644]