Go to file
Juergen Ributzka e9a80fc912 SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too.
The Type Legalizer recognizes that VSELECT needs to be split, because the type
is to wide for the given target. The same does not always apply to SETCC,
because less space is required to encode the result of a comparison. As a result
VSELECT is split and SETCC is unrolled into scalar comparisons.

This commit fixes the issue by checking for VSELECT-SETCC patterns in the DAG
Combiner. If a matching pattern is found, then the result mask of SETCC is
promoted to the expected vector mask for the given target. This mask has usually
te same size as the VSELECT return type (except for Intel KNL). Now the type
legalizer will split both VSELECT and SETCC.

This allows the following X86 DAG Combine code to sucessfully detect the MIN/MAX
pattern. This fixes PR16695, PR17002, and <rdar://problem/14594431>.

llvm-svn: 191130
2013-09-21 04:55:18 +00:00
clang [Mips] Allocate NaClTargetInfo for MIPSEL NaCl 2013-09-21 01:27:01 +00:00
clang-tools-extra Added list of checks made. 2013-09-20 16:47:33 +00:00
compiler-rt tsan: intercept close syscall 2013-09-21 03:47:35 +00:00
debuginfo-tests don't use CHECK-NEXT because it may be on the same line. 2013-09-18 23:01:54 +00:00
libclc Parenthesize arguments for mad_hi 2013-09-09 14:36:21 +00:00
libcxx N3659: Shared locking in C++ Revision 2, c++1y only 2013-09-21 01:49:28 +00:00
libcxxabi Adding bad_array_length to libc++abi 2013-09-11 01:42:02 +00:00
lld [lld][WinLink] Fix typo 2013-09-20 09:13:53 +00:00
lldb Various small changes for build of LLDB on Visual Studio 2013 RC (MSVC12) 2013-09-20 22:35:22 +00:00
llvm SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too. 2013-09-21 04:55:18 +00:00
polly clang-format recent change 2013-09-17 03:30:36 +00:00