llvm-6502/lib
Juergen Ributzka 1941431f8a 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>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191130 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-21 04:55:18 +00:00
..
Analysis Fix a constant folding address space place I missed. 2013-09-17 23:23:16 +00:00
AsmParser Implement function prefix data as an IR feature. 2013-09-16 01:08:15 +00:00
Bitcode Implement function prefix data as an IR feature. 2013-09-16 01:08:15 +00:00
CodeGen SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too. 2013-09-21 04:55:18 +00:00
DebugInfo Revert r191062; the build break was also fixed in a different (incompatible) way in r191060. 2013-09-20 01:24:10 +00:00
ExecutionEngine Revert "llvm-c: Add LLVMGetPointerToFunction" 2013-09-20 07:00:36 +00:00
IR Revert "Encapsulate PassManager debug flags to avoid static init and cxa_exit." 2013-09-19 06:02:43 +00:00
IRReader Add 'const' qualifiers to static const char* variables. 2013-07-16 01:17:10 +00:00
Linker Implement function prefix data as an IR feature. 2013-09-16 01:08:15 +00:00
MC Initialize BSSSection explicitly in InitMachOMCObjectFileInfo() to appease msvc. 2013-09-21 02:34:45 +00:00
Object ELF: Add support for the exclude section bit for gas compat. 2013-09-15 19:53:20 +00:00
Option Fix another mistake in r190442. 2013-09-10 23:22:56 +00:00
Support DebugInfo: GDBIndexEntry*String conversion functions now return const char* for easy llvm::formating 2013-09-20 00:33:15 +00:00
TableGen Add an error check for a typo I accidentally made in a td file that caused an assert to fire. 2013-08-20 04:22:09 +00:00
Target SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too. 2013-09-21 04:55:18 +00:00
Transforms Reapply "SLPVectorizer: Handle more horizontal reductions (disabled)"" 2013-09-21 01:06:00 +00:00
CMakeLists.txt Move lib/Archive to tools/llvm-ar. 2013-06-17 15:47:20 +00:00
LLVMBuild.txt Move lib/Archive to tools/llvm-ar. 2013-06-17 15:47:20 +00:00
Makefile Move lib/Archive to tools/llvm-ar. 2013-06-17 15:47:20 +00:00