llvm-6502/lib/CodeGen/SelectionDAG
Chris Lattner 571e434a34 Turn conditions like x<Y|z==q into multiple blocks.
This compiles Regression/CodeGen/X86/or-branch.ll into:

_foo:
        subl $12, %esp
        call L_bar$stub
        movl 20(%esp), %eax
        movl 16(%esp), %ecx
        cmpl $5, %eax
        jl LBB1_1       #cond_true
LBB1_3: #entry
        testl %ecx, %ecx
        jne LBB1_2      #UnifiedReturnBlock
LBB1_1: #cond_true
        call L_bar$stub
        addl $12, %esp
        ret
LBB1_2: #UnifiedReturnBlock
        addl $12, %esp
        ret

instead of:

_foo:
        subl $12, %esp
        call L_bar$stub
        movl 20(%esp), %eax
        movl 16(%esp), %ecx
        cmpl $4, %eax
        setg %al
        testl %ecx, %ecx
        setne %cl
        testb %cl, %al
        jne LBB1_2      #UnifiedReturnBlock
LBB1_1: #cond_true
        call L_bar$stub
        addl $12, %esp
        ret
LBB1_2: #UnifiedReturnBlock
        addl $12, %esp
        ret

And on ppc to:

        cmpwi cr0, r29, 5
        blt cr0, LBB1_1 ;cond_true
LBB1_3: ;entry
        cmplwi cr0, r30, 0
        bne cr0, LBB1_2 ;UnifiedReturnBlock

instead of:

        cmpwi cr7, r4, 4
        mfcr r2
        addic r4, r3, -1
        subfe r30, r4, r3
        rlwinm r29, r2, 30, 31, 31
        and r2, r29, r30
        cmplwi cr0, r2, 0
        bne cr0, LBB1_2 ;UnifiedReturnBlock


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31230 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-27 21:36:01 +00:00
..
DAGCombiner.cpp Add option for controlling inclusion of global AA. 2006-10-18 19:08:31 +00:00
LegalizeDAG.cpp For PR950: 2006-10-20 07:07:24 +00:00
Makefile
ScheduleDAG.cpp Debug tweak. 2006-10-14 08:34:06 +00:00
ScheduleDAGList.cpp
ScheduleDAGRRList.cpp Debug tweak. 2006-10-14 08:34:06 +00:00
ScheduleDAGSimple.cpp
SelectionDAG.cpp getPreIndexedLoad -> getIndexedLoad. 2006-10-26 21:53:40 +00:00
SelectionDAGCSEMap.cpp
SelectionDAGISel.cpp Turn conditions like x<Y|z==q into multiple blocks. 2006-10-27 21:36:01 +00:00
SelectionDAGPrinter.cpp Make flag and chain edges visually distinguishable from value edges in DOT 2006-10-20 18:06:09 +00:00
TargetLowering.cpp Merge ISD::TRUNCSTORE to ISD::STORE. Switch to using StoreSDNode. 2006-10-13 21:14:26 +00:00