Skip to content
  1. May 12, 2006
  2. May 11, 2006
  3. May 10, 2006
  4. May 09, 2006
  5. May 08, 2006
  6. May 07, 2006
  7. May 06, 2006
  8. May 05, 2006
    • Chris Lattner's avatar
      Indent multiline asm strings more nicely · a633c313
      Chris Lattner authored
      llvm-svn: 28132
      a633c313
    • Chris Lattner's avatar
      Fold (fpext (load x)) -> (extload x) · 3d265773
      Chris Lattner authored
      llvm-svn: 28130
      3d265773
    • Chris Lattner's avatar
      More aggressively sink GEP offsets into loops. For example, before we · 3e3f2c63
      Chris Lattner authored
      generated:
      
              movl 8(%esp), %eax
              movl %eax, %edx
              addl $4316, %edx
              cmpb $1, %cl
              ja LBB1_2       #cond_false
      LBB1_1: #cond_true
              movl L_QuantizationTables720$non_lazy_ptr, %ecx
              movl %ecx, (%edx)
              movl L_QNOtoQuantTableShift720$non_lazy_ptr, %edx
              movl %edx, 4460(%eax)
              ret
      ...
      
      Now we generate:
      
              movl 8(%esp), %eax
              cmpb $1, %cl
              ja LBB1_2       #cond_false
      LBB1_1: #cond_true
              movl L_QuantizationTables720$non_lazy_ptr, %ecx
              movl %ecx, 4316(%eax)
              movl L_QNOtoQuantTableShift720$non_lazy_ptr, %ecx
              movl %ecx, 4460(%eax)
              ret
      
      ... which uses one fewer register.
      
      llvm-svn: 28129
      3e3f2c63
    • Chris Lattner's avatar
      Fold some common code. · 25a5283a
      Chris Lattner authored
      llvm-svn: 28124
      25a5283a
    • Chris Lattner's avatar
      Implement: · 002ee914
      Chris Lattner authored
        // fold (and (sext x), (sext y)) -> (sext (and x, y))
        // fold (or  (sext x), (sext y)) -> (sext (or  x, y))
        // fold (xor (sext x), (sext y)) -> (sext (xor x, y))
        // fold (and (aext x), (aext y)) -> (aext (and x, y))
        // fold (or  (aext x), (aext y)) -> (aext (or  x, y))
        // fold (xor (aext x), (aext y)) -> (aext (xor x, y))
      
      llvm-svn: 28123
      002ee914
    • Chris Lattner's avatar
      Pull and through and/or/xor. This compiles some bitfield code to: · 5ac42936
      Chris Lattner authored
              mov EAX, DWORD PTR [ESP + 4]
              mov ECX, DWORD PTR [EAX]
              mov EDX, ECX
              add EDX, EDX
              or EDX, ECX
              and EDX, -2147483648
              and ECX, 2147483647
              or EDX, ECX
              mov DWORD PTR [EAX], EDX
              ret
      
      instead of:
      
              sub ESP, 4
              mov DWORD PTR [ESP], ESI
              mov EAX, DWORD PTR [ESP + 8]
              mov ECX, DWORD PTR [EAX]
              mov EDX, ECX
              add EDX, EDX
              mov ESI, ECX
              and ESI, -2147483648
              and EDX, -2147483648
              or EDX, ESI
              and ECX, 2147483647
              or EDX, ECX
              mov DWORD PTR [EAX], EDX
              mov ESI, DWORD PTR [ESP]
              add ESP, 4
              ret
      
      llvm-svn: 28122
      5ac42936
Loading