Skip to content
  • Chris Lattner's avatar
    implement Transforms/LoopStrengthReduce/dont-hoist-simple-loop-constants.ll. · 530fe6ab
    Chris Lattner authored
    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.
    
    llvm-svn: 23306
    530fe6ab
Loading