Skip to content
  • Chris Lattner's avatar
    implement shift.ll:test25. This compiles: · 27cb9dbd
    Chris Lattner authored
    struct S { unsigned int i : 6, j : 11, k : 15; } b;
    void plus3 (unsigned int x) {
      b.k += x;
    }
    
    to:
    
    _plus3:
            lis r2, ha16(L_b$non_lazy_ptr)
            lwz r2, lo16(L_b$non_lazy_ptr)(r2)
            lwz r3, 0(r2)
            rlwinm r4, r3, 0, 0, 14
            add r4, r4, r3
            rlwimi r4, r3, 0, 15, 31
            stw r4, 0(r2)
            blr
    
    instead of:
    
    _plus3:
            lis r2, ha16(L_b$non_lazy_ptr)
            lwz r2, lo16(L_b$non_lazy_ptr)(r2)
            lwz r4, 0(r2)
            srwi r5, r4, 17
            add r3, r5, r3
            slwi r3, r3, 17
            rlwimi r3, r4, 0, 15, 31
            stw r3, 0(r2)
            blr
    
    llvm-svn: 23381
    27cb9dbd
Loading