Skip to content
  • Chris Lattner's avatar
    Implement add.ll:test29. Codegening: · af517574
    Chris Lattner authored
    struct S { unsigned int i : 6, j : 11, k : 15; } b;
    void plus1 (unsigned int x) {
      b.i += x;
    }
    
    as:
    _plus1:
            lis r2, ha16(L_b$non_lazy_ptr)
            lwz r2, lo16(L_b$non_lazy_ptr)(r2)
            lwz r4, 0(r2)
            add r3, r4, r3
            rlwimi r3, r4, 0, 0, 25
            stw r3, 0(r2)
            blr
    
    instead of:
    
    _plus1:
            lis r2, ha16(L_b$non_lazy_ptr)
            lwz r2, lo16(L_b$non_lazy_ptr)(r2)
            lwz r4, 0(r2)
            rlwinm r5, r4, 0, 26, 31
            add r3, r5, r3
            rlwimi r3, r4, 0, 0, 25
            stw r3, 0(r2)
            blr
    
    llvm-svn: 23379
    af517574
Loading