- Feb 23, 2004
-
-
Alkis Evlogimenos authored
llvm-svn: 11719
-
- Feb 22, 2004
-
-
Alkis Evlogimenos authored
Also make it less aggressive as the current implementation breaks in some cases. llvm-svn: 11696
-
- Feb 20, 2004
-
-
Alkis Evlogimenos authored
1. LiveIntervals now implement a 4 slot per instruction model. Load, Use, Def and a Store slot. This is required in order to correctly represent caller saved register clobbering on function calls, register reuse in the same instruction (def resues last use) and also spill code added later by the allocator. The previous representation (2 slots per instruction) was insufficient and as a result was causing subtle bugs. 2. Fixes in spill code generation. This was the major cause of failures in the test suite. 3. Linear scan now has core support for folding memory operands. This is untested and not enabled (the live interval update function does not attempt to fold loads/stores in instructions). 4. Lots of improvements in the debugging output of both live intervals and linear scan. Give it a try... it is beautiful :-) In summary the above fixes all the issues with the recent reserved register elimination changes and get the allocator very close to the next big step: folding memory operands. llvm-svn: 11654
-
- Feb 19, 2004
-
-
Alkis Evlogimenos authored
given a register. llvm-svn: 11608
-
- Feb 17, 2004
-
-
Alkis Evlogimenos authored
llvm-svn: 11520
-
- Feb 15, 2004
-
-
Alkis Evlogimenos authored
llvm-svn: 11476
-
- Jan 31, 2004
-
-
Alkis Evlogimenos authored
any test cases :-) llvm-svn: 11032
-
Alkis Evlogimenos authored
llvm-svn: 11029
-
Alkis Evlogimenos authored
Simplification of LiveIntervals::Interval::overlaps() and addition of examples to overlaps() and liveAt() to make them clearer. llvm-svn: 11028
-
- Jan 23, 2004
-
-
Alkis Evlogimenos authored
when joining we need to check if we overlap with the second interval or any of its aliases. Also make joining intervals the default. llvm-svn: 10973
-
Alkis Evlogimenos authored
is a move between two registers, at least one of the registers is virtual and the two live intervals do not overlap. This results in about 40% reduction in intervals, 30% decrease in the register allocators running time and a 20% increase in peephole optimizations (mainly move eliminations). The option can be enabled by passing -join-liveintervals where appropriate. llvm-svn: 10965
-
- Jan 16, 2004
-
-
Alkis Evlogimenos authored
LiveIntervals::Interval::expiredAt() and simplify regalloc code. llvm-svn: 10894
-
Alkis Evlogimenos authored
when we join intervals and one of the two will need to be removed. llvm-svn: 10892
-
- Jan 13, 2004
-
-
Alkis Evlogimenos authored
LiveVariables. llvm-svn: 10830
-
- Dec 28, 2003
-
-
Alkis Evlogimenos authored
which denotes the register we would like to be assigned to (virtual or physical). In register allocation, if this hint exists and we can map it to a physical register (it is either a physical register or it is a virtual register that already got assigned to a physical one) we use that register if it is available instead of a random one in the free pool. llvm-svn: 10634
-
- Dec 21, 2003
-
-
Alkis Evlogimenos authored
nesting level when computing it. Right now the allocator uses: w = sum_over_defs_uses( 10 ^ nesting level ); llvm-svn: 10569
-
Alkis Evlogimenos authored
for live ranges that fall into assigned registers' holes. llvm-svn: 10566
-
- Dec 18, 2003
-
-
Alkis Evlogimenos authored
llvm-svn: 10511
-
Alkis Evlogimenos authored
Move some of the longer LiveIntervals::Interval method out of the header and add debug information to them. Fix bug and simplify range merging code. llvm-svn: 10509
-
- Dec 05, 2003
-
-
Alkis Evlogimenos authored
llvm-svn: 10290
-
- Nov 20, 2003
-
-
Alkis Evlogimenos authored
Merging the linear scan register allocator in trunk. It currently passes most tests under test/Programs/SingleSource/Benchmarks/Shootout so development will continue on trunk. The allocator is not enabled by default. You will need to pass -regallo=linearscan to lli or llc to use it. llvm-svn: 10103
-