Skip to content
  1. May 05, 2006
    • 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
    • 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
  2. May 04, 2006
  3. May 03, 2006
Loading