llvm-6502/include/llvm/CodeGen
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
..
AsmPrinter.h Move getPreferredAlignmentLog from AsmPrinter to TargetData 2006-10-24 20:32:14 +00:00
DwarfWriter.h Do not leak all of the SourceLineInfo objects. Do not bother mallocing each 2006-10-17 22:06:46 +00:00
ELFWriter.h Make the LLVM headers "-ansi -pedantic -Wno-long-long" clean. 2006-02-22 16:23:43 +00:00
InstrScheduling.h Remove trailing whitespace 2005-04-21 20:39:54 +00:00
IntrinsicLowering.h remove ShouldEmitDebugFunctions, a hack to support llvm-db via the jit 2006-03-10 22:49:05 +00:00
LinkAllCodegenComponents.h Now that the ISel is available, it's possible to create a default instruction 2006-08-01 19:14:14 +00:00
LiveInterval.h add a prototype 2006-09-02 05:37:53 +00:00
LiveIntervalAnalysis.h Keep track of the start of MBB's in a separate map from instructions. This 2006-09-15 03:57:23 +00:00
LiveVariables.h Fix for PR929. The PHI nodes were being gone through for each instruction 2006-10-03 07:20:20 +00:00
MachineBasicBlock.h add two helper methods 2006-10-23 23:35:35 +00:00
MachineCodeEmitter.h Fix non-64-bit clean code. 2006-06-21 00:29:14 +00:00
MachineConstantPool.h Add MachineConstantPoolEntry getOffset() accessor. 2006-09-14 07:32:32 +00:00
MachineDebugInfo.h Tighter data structure for deleted debug labels. 2006-10-24 11:50:43 +00:00
MachineFrameInfo.h Tidy up. 2006-08-25 22:56:30 +00:00
MachineFunction.h Provide a function that ensures MBB numbering is dense and inorder. This 2006-10-03 19:18:57 +00:00
MachineFunctionPass.h Add an out-of-line virtual function to home class. 2006-07-14 23:08:47 +00:00
MachineInstr.h typo 2006-10-20 22:44:45 +00:00
MachineInstrBuilder.h Completely eliminate def&use operands. Now a register operand is EITHER a 2006-09-05 02:31:13 +00:00
MachineJumpTableInfo.h add a ReplaceMBBInJumpTables method 2006-10-16 20:41:42 +00:00
MachineLocation.h Foundation for call frame information. 2006-04-07 16:34:46 +00:00
MachinePassRegistry.h Final polish on machine pass registries. 2006-08-02 12:30:23 +00:00
MachineRelocation.h Add basic block machine relocation. 2006-07-27 18:18:13 +00:00
MachOWriter.h Behold, more work on relocations. Things are looking pretty good now. 2006-09-10 23:03:44 +00:00
Passes.h Remove a prototype 2005-10-24 04:13:21 +00:00
RegAllocRegistry.h Breaking out specialized classes. 2006-08-02 12:27:50 +00:00
SchedGraphCommon.h Convert tabs to spaces 2005-04-22 03:46:24 +00:00
ScheduleDAG.h switch the SUnit pred/succ sets from being std::sets to being smallvectors. 2006-08-17 00:09:56 +00:00
SchedulerRegistry.h Breaking out specialized classes. 2006-08-02 12:27:50 +00:00
SelectionDAG.h Indexed load / store changes. 2006-10-26 21:52:24 +00:00
SelectionDAGCSEMap.h Added support for machine specific constantpool values. These are useful for 2006-09-12 21:00:35 +00:00
SelectionDAGISel.h Turn conditions like x<Y|z==q into multiple blocks. 2006-10-27 21:36:01 +00:00
SelectionDAGNodes.h Indexed load / store changes. 2006-10-26 21:52:24 +00:00
SSARegMap.h add an assertion 2005-01-05 16:27:34 +00:00
ValueTypes.h Move MVT::getVectorType out of line, it is large and shouldn't be inlined. 2006-07-19 00:40:45 +00:00
ValueTypes.td add a new iPTR ValueType for tblgen use 2006-03-27 22:48:00 +00:00