Skip to content
  1. May 16, 2006
  2. May 15, 2006
  3. May 14, 2006
  4. May 13, 2006
    • Evan Cheng's avatar
      Fixing 2006-05-01-SchedCausingSpills.ll; some clean up · 99f2f79e
      Evan Cheng authored
      llvm-svn: 28279
      99f2f79e
    • Evan Cheng's avatar
      Revert an un-intended change · d1915cfa
      Evan Cheng authored
      llvm-svn: 28278
      d1915cfa
    • Chris Lattner's avatar
      Add/Sub/Mul are safe to promote here as well. Incrementing a single-bit · 3987a853
      Chris Lattner authored
      bitfield now gives this code:
      
      _plus:
              lwz r2, 0(r3)
              rlwimi r2, r2, 0, 1, 31
              xoris r2, r2, 32768
              stw r2, 0(r3)
              blr
      
      instead of this:
      
      _plus:
              lwz r2, 0(r3)
              srwi r4, r2, 31
              slwi r4, r4, 31
              addis r4, r4, -32768
              rlwimi r2, r4, 0, 0, 0
              stw r2, 0(r3)
              blr
      
      this can obviously still be improved.
      
      llvm-svn: 28275
      3987a853
    • Chris Lattner's avatar
      Merge identical code. · 69a0ce62
      Chris Lattner authored
      llvm-svn: 28274
      69a0ce62
    • Chris Lattner's avatar
      Implement simple promotion for cast elimination in instcombine. This is · 1ebbe6a2
      Chris Lattner authored
      currently very limited, but can be extended in the future.  For example,
      we now compile:
      
      uint %test30(uint %c1) {
              %c2 = cast uint %c1 to ubyte
              %c3 = xor ubyte %c2, 1
              %c4 = cast ubyte %c3 to uint
              ret uint %c4
      }
      
      to:
      
      _xor:
              movzbl 4(%esp), %eax
              xorl $1, %eax
              ret
      
      instead of:
      
      _xor:
              movb $1, %al
              xorb 4(%esp), %al
              movzbl %al, %eax
              ret
      
      More impressively, we now compile:
      
      struct B { unsigned bit : 1; };
      void xor(struct B *b) { b->bit = b->bit ^ 1; }
      
      To (X86/PPC):
      
      _xor:
              movl 4(%esp), %eax
              xorl $-2147483648, (%eax)
              ret
      _xor:
              lwz r2, 0(r3)
              xoris r2, r2, 32768
              stw r2, 0(r3)
              blr
      
      instead of (X86/PPC):
      
      _xor:
              movl 4(%esp), %eax
              movl (%eax), %ecx
              movl %ecx, %edx
              shrl $31, %edx
              # TRUNCATE movb %dl, %dl
              xorb $1, %dl
              movzbl %dl, %edx
              andl $2147483647, %ecx
              shll $31, %edx
              orl %ecx, %edx
              movl %edx, (%eax)
              ret
      
      _xor:
              lwz r2, 0(r3)
              srwi r4, r2, 31
              xori r4, r4, 1
              rlwimi r2, r4, 31, 0, 0
              stw r2, 0(r3)
              blr
      
      This implements InstCombine/cast.ll:test30.
      
      llvm-svn: 28273
      1ebbe6a2
    • Chris Lattner's avatar
      Remove some dead variables. · cd60d38b
      Chris Lattner authored
      Fix a nasty bug in the memcmp optimizer where we used the wrong variable!
      
      llvm-svn: 28269
      cd60d38b
    • Chris Lattner's avatar
      Remove dead stuff · 94acc476
      Chris Lattner authored
      llvm-svn: 28268
      94acc476
    • Chris Lattner's avatar
      Fix build breakage :( · 768bc20b
      Chris Lattner authored
      llvm-svn: 28267
      768bc20b
  5. May 12, 2006
Loading