llvm-6502/lib/CodeGen
Chris Lattner 5d056952ba optimize single MBB loops better. In particular, produce:
LBB1_57:        #bb207.i
        movl 72(%esp), %ecx
        movb (%ecx,%eax), %cl
        movl 80(%esp), %edx
        movb %cl, 1(%edx,%eax)
        incl %eax
        cmpl $143, %eax
        jne LBB1_57     #bb207.i
        jmp LBB1_64     #cond_next255.i

intead of:

LBB1_57:        #bb207.i
        movl 72(%esp), %ecx
        movb (%ecx,%eax), %cl
        movl 80(%esp), %edx
        movb %cl, 1(%edx,%eax)
        incl %eax
        cmpl $143, %eax
        je LBB1_64      #cond_next255.i
        jmp LBB1_57     #bb207.i

This eliminates a branch per iteration of the loop.  This hurted PPC
particularly, because the extra branch meant another dispatch group for each
iteration of the loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31530 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-08 01:03:21 +00:00
..
SelectionDAG Add post-indexed load / store transformations. 2006-11-07 09:03:05 +00:00
AsmPrinter.cpp Add a printSetLabel that takes two id's. 2006-11-01 09:23:08 +00:00
BranchFolding.cpp optimize single MBB loops better. In particular, produce: 2006-11-08 01:03:21 +00:00
DwarfWriter.cpp 1. Add a pass to fold debug label instructions so a debug info client can detect 2006-11-07 19:33:46 +00:00
ELFWriter.cpp For PR786: 2006-11-02 20:25:50 +00:00
IntrinsicLowering.cpp For PR950: 2006-10-20 07:07:24 +00:00
LiveInterval.cpp For PR786: 2006-11-02 20:25:50 +00:00
LiveIntervalAnalysis.cpp Enable improved spilling costs by default. This speeds up viterbi on x86 2006-11-07 18:04:58 +00:00
LiveVariables.cpp For PR786: 2006-11-02 20:25:50 +00:00
LLVMTargetMachine.cpp 1. Add a pass to fold debug label instructions so a debug info client can detect 2006-11-07 19:33:46 +00:00
MachineBasicBlock.cpp add moveBefore/moveAfter helper methods 2006-10-24 00:02:26 +00:00
MachineDebugInfo.cpp Accidently reran commit. 2006-11-07 21:58:55 +00:00
MachineFunction.cpp const'ify jump table stuff 2006-10-28 18:17:09 +00:00
MachineInstr.cpp be more aggressive about matching identical instructions. 2006-10-25 18:08:14 +00:00
MachinePassRegistry.cpp
MachOWriter.cpp
Makefile this will work better 2006-11-03 19:15:55 +00:00
Passes.cpp
PHIElimination.cpp
PhysRegTracker.h
PrologEpilogInserter.cpp TargetRegisterClass specifies the desired spill alignment. However, it cannot be honored if stack alignment is smaller. 2006-09-28 18:52:32 +00:00
RegAllocLinearScan.cpp Use correct value for float HUGH_VAL. 2006-11-07 12:25:45 +00:00
RegAllocLocal.cpp
RegAllocSimple.cpp Rename 2006-11-01 23:18:32 +00:00
TwoAddressInstructionPass.cpp Two-address instructions no longer have to be A := A op C. Now any pair of dest / src operands can be tied together. 2006-11-01 23:06:55 +00:00
UnreachableBlockElim.cpp
VirtRegMap.cpp Fixed some spiller bugs exposed by the recent two-address code changes. Now 2006-11-04 00:21:55 +00:00
VirtRegMap.h