llvm-6502/lib
Juergen Ributzka 4eced19c50 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 type for the given target. This mask has
usually the 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>.

Reviewed by Nadav

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193676 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-30 05:48:18 +00:00
..
Analysis SCEV: Make the final add of an inbounds GEP nuw if we know that the index is positive. 2013-10-28 07:30:06 +00:00
AsmParser Revert r193251 : Use address-taken to disambiguate global variable and indirect memops. 2013-10-27 03:08:44 +00:00
Bitcode Revert r193251 : Use address-taken to disambiguate global variable and indirect memops. 2013-10-27 03:08:44 +00:00
CodeGen SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too. 2013-10-30 05:48:18 +00:00
DebugInfo DWARF parser: propery handle DW_FORM_ref_sig8 and fix Windows build. 2013-10-29 16:32:19 +00:00
ExecutionEngine The FIXME was indeed fixed in the linker, comment removed. 2013-10-25 12:01:53 +00:00
IR Fix misapplied patch in r193597 2013-10-29 09:37:28 +00:00
IRReader
Linker Add a 'deleteModule' method to the Linker class. 2013-10-16 08:59:57 +00:00
LTO Move getSymbol to TargetLoweringObjectFile. 2013-10-29 17:28:26 +00:00
MC Move the STT_FILE symbols out of the normal symbol table processing for 2013-10-29 01:06:17 +00:00
Object Support for microMIPS jump instructions 2013-10-29 16:38:59 +00:00
Option
Support simplify ConstantRange::getSetSize() 2013-10-28 16:52:38 +00:00
TableGen
Target SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too. 2013-10-30 05:48:18 +00:00
Transforms ARM cost model: Account for zero cost scalar SROA instructions 2013-10-29 01:33:53 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile Reformat Makefile. No other changes. 2013-10-30 04:03:03 +00:00