Skip to content
  1. May 13, 2006
    • 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
      New testcase for instcombine · 4edab0f7
      Chris Lattner authored
      llvm-svn: 28272
      4edab0f7
    • 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
  2. May 12, 2006
Loading