llvm-6502/lib
Chris Lattner 7e598096ea Sink noop copies into the basic block that uses them. This reduces the number
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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28115 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-05 01:04:50 +00:00
..
Analysis Implement Transforms/IndVarsSimplify/complex-scev.ll, a case where we didn't 2006-04-26 18:34:07 +00:00
Archive more C++ daintiness 2005-12-26 14:31:26 +00:00
AsmParser Make sure CVS versions of yacc and lex files get distributed. 2006-04-12 20:57:05 +00:00
Bytecode use isValidOperands instead of duplicating checks 2006-04-08 04:09:19 +00:00
CodeGen Sink noop copies into the basic block that uses them. This reduces the number 2006-05-05 01:04:50 +00:00
Debugger Add the README files to the distribution. 2006-04-13 06:39:24 +00:00
ExecutionEngine Adjust to use proper TargetData copy ctor 2006-05-04 21:18:40 +00:00
Linker Add shufflevector support 2006-04-08 01:19:47 +00:00
Support Fix PR743: emit -help output of a tool to cout, not cerr. 2006-04-28 05:36:25 +00:00
System Mingw32 patches supplied by Anton Korobeynikov. 2006-04-29 18:41:44 +00:00
Target Remove and simplify some more machineinstr/machineoperand stuff. 2006-05-04 18:16:01 +00:00
Transforms Fix Transforms/InstCombine/2006-05-04-DemandedBitCrash.ll 2006-05-04 17:33:35 +00:00
VMCore Add assertions that verify that the actual arguments to a call or invoke match 2006-05-03 00:48:22 +00:00
Makefile Add the Linker library 2004-11-14 21:54:41 +00:00