]> granicus.if.org Git - llvm/commit
[X86] Use X86ISD::BLENDV for blendv intrinsics. Replace vselect with blendv just...
authorCraig Topper <craig.topper@intel.com>
Wed, 16 Jan 2019 21:46:28 +0000 (21:46 +0000)
committerCraig Topper <craig.topper@intel.com>
Wed, 16 Jan 2019 21:46:28 +0000 (21:46 +0000)
commit0ab0885de0dceb4e23e01665e975f283e5732dc3
treec9b6d5fe3879a465595c8b7f77ff4bfd209a6c19
parent17717539b05ea0b66de7399d73c2f89103127ea0
[X86] Use X86ISD::BLENDV for blendv intrinsics. Replace vselect with blendv just before isel table lookup. Remove vselect isel patterns.

This cleans up the duplication we have with both intrinsic isel patterns and vselect isel patterns. This should also allow the intrinsics to get SimplifyDemandedBits support for the condition.

I've switched the canonical pattern in isel to use the X86ISD::BLENDV node instead of VSELECT. Since it always seemed weird to move from BLENDV with its relaxed rules on condition bits to VSELECT which has strict rules about all bits of the condition element being the same. Its more correct to go from VSELECT to BLENDV.

Differential Revision: https://reviews.llvm.org/D56771

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351380 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelDAGToDAG.cpp
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86ISelLowering.h
lib/Target/X86/X86InstrFragmentsSIMD.td
lib/Target/X86/X86InstrSSE.td
lib/Target/X86/X86IntrinsicsInfo.h