diff options
author | Chris Lattner <sabre@nondot.org> | 2006-05-05 01:04:50 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-05-05 01:04:50 +0000 |
commit | 7a3ecf799311ac0daae556c3422f8570f6728412 (patch) | |
tree | d2758f75f11c7cc89b6c116f3930aecaad4b5875 /llvm/tools/llvm-db/Commands.cpp | |
parent | a0c3ec513d8470e5b2973140a899258192ac40a6 (diff) | |
download | bcm5719-llvm-7a3ecf799311ac0daae556c3422f8570f6728412.tar.gz bcm5719-llvm-7a3ecf799311ac0daae556c3422f8570f6728412.zip |
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.
llvm-svn: 28115
Diffstat (limited to 'llvm/tools/llvm-db/Commands.cpp')
0 files changed, 0 insertions, 0 deletions