llvm-6502/lib/Transforms/Scalar
Chris Lattner 7259df3ab8 implement Transforms/LoopStrengthReduce/dont-hoist-simple-loop-constants.ll.
We used to emit this code for it:

_test:
        li r2, 1     ;; Value tying up a register for the whole loop
        li r5, 0
LBB_test_1:     ; no_exit.2
        or r6, r5, r5
        li r5, 0
        stw r5, 0(r3)
        addi r5, r6, 1
        addi r3, r3, 4
        add r7, r2, r5  ;; should be addi r7, r5, 1
        cmpwi cr0, r7, 701
        blt cr0, LBB_test_1     ; no_exit.2
LBB_test_2:     ; loopexit.2.loopexit
        addi r2, r6, 2
        stw r2, 0(r4)
        blr

now we emit this:

_test:
        li r2, 0
LBB_test_1:     ; no_exit.2
        or r5, r2, r2
        li r2, 0
        stw r2, 0(r3)
        addi r3, r3, 4
        addi r2, r5, 1
        addi r6, r5, 2   ;; whoa, fold those adds!
        cmpwi cr0, r6, 701
        blt cr0, LBB_test_1     ; no_exit.2
LBB_test_2:     ; loopexit.2.loopexit
        addi r2, r5, 2
        stw r2, 0(r4)
        blr

more improvement coming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23306 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-10 01:18:45 +00:00
..
ADCE.cpp preserve calling conventions when hacking on code 2005-05-14 12:25:32 +00:00
BasicBlockPlacement.cpp
CondPropagate.cpp Fix a fixme in CondPropagate.cpp by moving a PhiNode optimization into 2005-08-04 23:24:19 +00:00
ConstantProp.cpp
CorrelatedExprs.cpp
DCE.cpp clean up and modernize this pass. 2005-05-08 18:45:26 +00:00
DeadStoreElimination.cpp
GCSE.cpp
IndVarSimplify.cpp Allow indvar simplify to canonicalize ANY affine IV, not just affine IVs with 2005-08-10 01:12:06 +00:00
InstructionCombining.cpp Use the new 'moveBefore' method to simplify some code. Really, which is 2005-08-08 19:11:57 +00:00
LICM.cpp prevent va_arg from being hoisted from a loop 2005-06-20 13:36:33 +00:00
LoopStrengthReduce.cpp implement Transforms/LoopStrengthReduce/dont-hoist-simple-loop-constants.ll. 2005-09-10 01:18:45 +00:00
LoopUnroll.cpp Eliminate tabs and trailing spaces 2005-04-23 21:38:35 +00:00
LoopUnswitch.cpp
LowerConstantExprs.cpp
LowerGC.cpp
LowerPacked.cpp
Makefile
PRE.cpp
Reassociate.cpp Fix a problem that Dan Berlin noticed, where reassociation would not succeed 2005-09-02 07:07:58 +00:00
ScalarReplAggregates.cpp
SCCP.cpp Eliminate tabs and trailing spaces 2005-04-23 21:38:35 +00:00
SimplifyCFG.cpp
TailDuplication.cpp
TailRecursionElimination.cpp Use the new 'moveBefore' method to simplify some code. Really, which is 2005-08-08 19:11:57 +00:00