Skip to content
  • Chris Lattner's avatar
    Teach loop-reduce to see into nested loops, to pull out immediate values · fc624704
    Chris Lattner authored
    pushed down by SCEV.
    
    In a nested loop case, this allows us to emit this:
    
            lis r3, ha16(L_A$non_lazy_ptr)
            lwz r3, lo16(L_A$non_lazy_ptr)(r3)
            add r2, r2, r3
            li r3, 1
    .LBB_foo_2:     ; no_exit.1
            lfd f0, 8(r2)        ;; Uses offset of 8 instead of 0
            stfd f0, 0(r2)
            addi r4, r3, 1
            addi r2, r2, 8
            cmpwi cr0, r3, 100
            or r3, r4, r4
            bne .LBB_foo_2  ; no_exit.1
    
    instead of this:
    
            lis r3, ha16(L_A$non_lazy_ptr)
            lwz r3, lo16(L_A$non_lazy_ptr)(r3)
            add r2, r2, r3
            addi r3, r3, 8
            li r4, 1
    .LBB_foo_2:     ; no_exit.1
            lfd f0, 0(r3)
            stfd f0, 0(r2)
            addi r5, r4, 1
            addi r2, r2, 8
            addi r3, r3, 8
            cmpwi cr0, r4, 100
            or r4, r5, r5
            bne .LBB_foo_2  ; no_exit.1
    
    llvm-svn: 22639
    fc624704
Loading