Skip to content
  1. May 05, 2006
    • Evan Cheng's avatar
      Need extload patterns after Chris' DAG combiner changes · 52c22512
      Evan Cheng authored
      llvm-svn: 28127
      52c22512
    • Chris Lattner's avatar
      Implement InstCombine/cast.ll:test29 · 3af10534
      Chris Lattner authored
      llvm-svn: 28126
      3af10534
    • Chris Lattner's avatar
      New testcase · c9043ef7
      Chris Lattner authored
      llvm-svn: 28125
      c9043ef7
    • 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
    • Chris Lattner's avatar
      Implement a variety of simplifications for ANY_EXTEND. · 812646aa
      Chris Lattner authored
      llvm-svn: 28121
      812646aa
    • Chris Lattner's avatar
      Factor some code, add these transformations: · 8d6fc201
      Chris Lattner authored
        // fold (and (trunc x), (trunc y)) -> (trunc (and x, y))
        // fold (or  (trunc x), (trunc y)) -> (trunc (or  x, y))
        // fold (xor (trunc x), (trunc y)) -> (trunc (xor x, y))
      
      llvm-svn: 28120
      8d6fc201
    • Evan Cheng's avatar
      Better implementation of truncate. ISel matches it to a pseudo instruction · ddb6cc1d
      Evan Cheng authored
      that gets emitted as movl (for r32 to i16, i8) or a movw (for r16 to i8). And
      if the destination gets allocated a subregister of the source operand, then
      the instruction will not be emitted at all.
      
      llvm-svn: 28119
      ddb6cc1d
    • Chris Lattner's avatar
      New note, Nate, please check to see if I'm full of it :) · 304bbf3b
      Chris Lattner authored
      llvm-svn: 28118
      304bbf3b
    • Jeff Cohen's avatar
      Fix VC++ compilation error. · 78a7f0e0
      Jeff Cohen authored
      llvm-svn: 28117
      78a7f0e0
    • Nate Begeman's avatar
      Somehow, I missed this part of the checkin a couple days ago · dec86e74
      Nate Begeman authored
      llvm-svn: 28116
      dec86e74
    • Chris Lattner's avatar
      Sink noop copies into the basic block that uses them. This reduces the number · 7a3ecf79
      Chris Lattner authored
      of cross-block live ranges, and allows the bb-at-a-time selector to always
      coallesce these away, at isel time.
      
      This reduces the load on the coallescer and register allocator.  For example
      on a codec on X86, we went from:
      
         1643 asm-printer           - Number of machine instrs printed
          419 liveintervals         - Number of loads/stores folded into instructions
         1144 liveintervals         - Number of identity moves eliminated after coalescing
         1022 liveintervals         - Number of interval joins performed
          282 liveintervals         - Number of intervals after coalescing
         1304 liveintervals         - Number of original intervals
           86 regalloc              - Number of times we had to backtrack
      1.90232 regalloc              - Ratio of intervals processed over total intervals
           40 spiller               - Number of values reused
          182 spiller               - Number of loads added
          121 spiller               - Number of stores added
          132 spiller               - Number of register spills
            6 twoaddressinstruction - Number of instructions commuted to coalesce
          360 twoaddressinstruction - Number of two-address instructions
      
      to:
      
         1636 asm-printer           - Number of machine instrs printed
          403 liveintervals         - Number of loads/stores folded into instructions
         1155 liveintervals         - Number of identity moves eliminated after coalescing
         1033 liveintervals         - Number of interval joins performed
          279 liveintervals         - Number of intervals after coalescing
         1312 liveintervals         - Number of original intervals
           76 regalloc              - Number of times we had to backtrack
      1.88998 regalloc              - Ratio of intervals processed over total intervals
            1 spiller               - Number of copies elided
           41 spiller               - Number of values reused
          191 spiller               - Number of loads added
          114 spiller               - Number of stores added
          128 spiller               - Number of register spills
            4 twoaddressinstruction - Number of instructions commuted to coalesce
          356 twoaddressinstruction - Number of two-address instructions
      
      On this testcase, this change provides a modest reduction in spill code,
      regalloc iterations, and total instructions emitted.  It increases the number
      of register coallesces.
      
      llvm-svn: 28115
      7a3ecf79
    • Chris Lattner's avatar
      Add a helper method. · a0c3ec51
      Chris Lattner authored
      llvm-svn: 28114
      a0c3ec51
    • Chris Lattner's avatar
      wrap long line · 34d26c38
      Chris Lattner authored
      llvm-svn: 28113
      34d26c38
  2. May 04, 2006
  3. May 03, 2006
Loading