llvm-6502/lib
Juergen Ributzka c7e77f91fe SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too.
This patch reapplies r193676 with an additional fix for the Hexagon backend. The
SystemZ backend has already been fixed by r194148.

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. 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@194542 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-13 01:57:54 +00:00
..
Analysis delinearization of arrays 2013-11-12 22:47:20 +00:00
AsmParser [Stackmap] Add AnyReg calling convention support for patchpoint intrinsic. 2013-11-08 23:28:16 +00:00
Bitcode Extract a bc attr parsing helper that returns Attribute::None on error 2013-11-12 01:31:00 +00:00
CodeGen SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too. 2013-11-13 01:57:54 +00:00
DebugInfo DebugInfo: Make pubnames header printing similar to unit header printing 2013-11-01 17:53:30 +00:00
ExecutionEngine Fixing a problem with iterator validity in RuntimeDyldImpl::resolveExternalSymbols 2013-11-11 19:55:10 +00:00
IR Introduce an AnalysisManager which is like a pass manager but with a lot 2013-11-13 01:12:08 +00:00
IRReader [llvm-c] Expose IRReader interface 2013-11-06 09:21:15 +00:00
Linker Revert "Move copying of global initializers below the cloning of functions." 2013-11-09 00:43:18 +00:00
LTO Protect user-supplied runtime library functions in LTO 2013-11-12 21:44:01 +00:00
MC Remove always true flag. 2013-11-12 23:27:08 +00:00
Object Support for microMIPS branch instructions. 2013-11-04 14:53:22 +00:00
Option Use startswith_lower() where possible. 2013-11-04 19:22:50 +00:00
Support Add newline at EOF in DynamicLibrary.cpp 2013-11-06 11:12:46 +00:00
TableGen Fix most memory leaks in tablegen. 2013-10-31 04:07:41 +00:00
Target SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too. 2013-11-13 01:57:54 +00:00
Transforms Update the docs to match the function name. 2013-11-13 01:12:01 +00:00
CMakeLists.txt Move LTO support library to a component, allowing it to be tested 2013-09-24 23:52:22 +00:00
LLVMBuild.txt Move LTO support library to a component, allowing it to be tested 2013-09-24 23:52:22 +00:00
Makefile Reformat Makefile. No other changes. 2013-10-30 04:03:03 +00:00