llvm/lib/CodeGen/SelectionDAG
Chris Lattner d1980a5acd Move 3 "(add (select cc, 0, c), x) -> (select cc, x, (add, x, c))"
related transformations out of target-specific dag combine into the
ARM backend.  These were added by Evan in r37685 with no testcases
and only seems to help ARM (e.g. test/CodeGen/ARM/select_xform.ll).

Add some simple X86-specific (for now) DAG combines that turn things
like cond ? 8 : 0  -> (zext(cond) << 3).  This happens frequently
with the recently added cp constant select optimization, but is a
very general xform.  For example, we now compile the second example
in const-select.ll to:

_test:
        movsd   LCPI2_0, %xmm0
        ucomisd 8(%esp), %xmm0
        seta    %al
        movzbl  %al, %eax
        movl    4(%esp), %ecx
        movsbl  (%ecx,%eax,4), %eax
        ret

instead of:

_test:
        movl    4(%esp), %eax
        leal    4(%eax), %ecx
        movsd   LCPI2_0, %xmm0
        ucomisd 8(%esp), %xmm0
        cmovbe  %eax, %ecx
        movsbl  (%ecx), %eax
        ret

This passes multisource and dejagnu.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66779 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-12 06:52:53 +00:00
..
CallingConvLower.cpp Add "inreg" field to CallSDNode (doesn't increase 2008-09-26 19:31:26 +00:00
CMakeLists.txt Experimental post-pass scheduling support. Post-pass scheduling 2008-11-19 23:18:57 +00:00
DAGCombiner.cpp Move 3 "(add (select cc, 0, c), x) -> (select cc, x, (add, x, c))" 2009-03-12 06:52:53 +00:00
FastISel.cpp Pass in a std::string when getting the names of debugging things. This cuts down 2009-03-09 05:04:40 +00:00
LegalizeDAG.cpp Pass in a std::string when getting the names of debugging things. This cuts down 2009-03-09 05:04:40 +00:00
LegalizeFloatTypes.cpp bug 3610: Floating point vaarg not softened. 2009-02-21 19:11:18 +00:00
LegalizeIntegerTypes.cpp PR3686: make the legalizer handle bitcast from i80 to x86 long double. 2009-03-04 06:23:34 +00:00
LegalizeTypes.cpp Use getDebugLoc forwarder instead of getNode()->getDebugLoc. 2009-02-07 19:59:05 +00:00
LegalizeTypes.h PR3686: make the legalizer handle bitcast from i80 to x86 long double. 2009-03-04 06:23:34 +00:00
LegalizeTypesGeneric.cpp Revert BuildVectorSDNode related patches: 65426, 65427, and 65296. 2009-02-25 22:49:59 +00:00
LegalizeVectorTypes.cpp Revert BuildVectorSDNode related patches: 65426, 65427, and 65296. 2009-02-25 22:49:59 +00:00
Makefile Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
ScheduleDAGFast.cpp When scheduling a block in parts, keep track of the overall 2009-02-11 04:27:20 +00:00
ScheduleDAGList.cpp When scheduling a block in parts, keep track of the overall 2009-02-11 04:27:20 +00:00
ScheduleDAGRRList.cpp Fix ScheduleDAGRRList::CopyAndMoveSuccessors' handling of nodes 2009-03-06 02:23:01 +00:00
ScheduleDAGSDNodes.cpp When scheduling a block in parts, keep track of the overall 2009-02-11 04:27:20 +00:00
ScheduleDAGSDNodes.h When scheduling a block in parts, keep track of the overall 2009-02-11 04:27:20 +00:00
ScheduleDAGSDNodesEmit.cpp When scheduling a block in parts, keep track of the overall 2009-02-11 04:27:20 +00:00
SelectionDAG.cpp Fix BuildVectorSDNode::isConstantSplat to handle one-element vectors. 2009-03-04 17:47:01 +00:00
SelectionDAGBuild.cpp Pass in a std::string when getting the names of debugging things. This cuts down 2009-03-09 05:04:40 +00:00
SelectionDAGBuild.h Generate these labels when we're in "fast" mode, not simply when we're no in 2009-02-19 21:12:54 +00:00
SelectionDAGISel.cpp Enable Chris' value propagation change. It make available known sign, zero, one bits information for values that are live out of basic blocks. The goal is to eliminate unnecessary sext, zext, truncate of values that are live-in to blocks. This does not handle PHI nodes yet. 2009-03-12 06:29:49 +00:00
SelectionDAGPrinter.cpp Pass in a std::string when getting the names of debugging things. This cuts down 2009-03-09 05:04:40 +00:00
TargetLowering.cpp Introduce new linkage types linkonce_odr, weak_odr, common_odr 2009-03-07 15:45:40 +00:00