- Apr 08, 2010
-
-
Chris Lattner authored
llvm-svn: 100703
-
- Jan 05, 2010
-
-
David Greene authored
llvm-svn: 92591
-
- Dec 22, 2009
-
-
Lang Hames authored
This fixes an in-place update bug where code inserted at the end of basic blocks may not be covered by existing intervals which were live across the entire block. It is also consistent with the way ranges are specified for live intervals. llvm-svn: 91859
-
- Dec 09, 2009
-
-
Lang Hames authored
When a call is placed to spill an interval this spiller will first try to break the interval up into its component values. Single value intervals and intervals which have already been split (or are the result of previous splits) are spilled by the default spiller. Splitting intervals as described above may improve the performance of generated code in some circumstances. This work is experimental however, and it still miscompiles many benchmarks. It's not recommended for general use yet. llvm-svn: 90951
-
- Dec 03, 2009
-
-
Chris Lattner authored
Patch by Howard Hinnant! llvm-svn: 90365
-
- Nov 20, 2009
-
-
Lang Hames authored
llvm-svn: 89422
-
- Nov 19, 2009
-
-
Lang Hames authored
All spiller calls in RegAllocLinearScan now go through the new Spiller interface. The "-new-spill-framework" command line option has been removed. To use the trivial in-place spiller you should now pass "-spiller=trivial -rewriter=trivial". (Note the trivial spiller/rewriter are only meant to serve as examples of the new in-place modification work. Enabling them will yield terrible, though hopefully functional, code). llvm-svn: 89311
-
- Nov 18, 2009
-
-
Lang Hames authored
Fixed the in-place spiller and trivial rewriter, which had been broken by the recent SlotIndexes work. llvm-svn: 89238
-
- Nov 14, 2009
-
-
Lang Hames authored
PreAllocSplitting is now using this API to insert code. llvm-svn: 88725
-
- Nov 04, 2009
-
-
Lang Hames authored
This introduces a new pass, SlotIndexes, which is responsible for numbering instructions for register allocation (and other clients). SlotIndexes numbering is designed to match the existing scheme, so this patch should not cause any changes in the generated code. For consistency, and to avoid naming confusion, LiveIndex has been renamed SlotIndex. The processImplicitDefs method of the LiveIntervals analysis has been moved into its own pass so that it can be run prior to SlotIndexes. This was necessary to match the existing numbering scheme. llvm-svn: 85979
-
- Oct 03, 2009
-
-
Lang Hames authored
llvm-svn: 83255
-
Lang Hames authored
llvm-svn: 83254
-
- Sep 04, 2009
-
-
Lang Hames authored
a new class, MachineInstrIndex, which hides arithmetic details from most clients. This is a step towards allowing the register allocator to update/insert code during allocation. llvm-svn: 81040
-
- Aug 22, 2009
-
-
Bill Wendling authored
llvm-svn: 79766
-
- Jul 09, 2009
-
-
Lang Hames authored
as an (index,bool) pair. The bool flag records whether the kill is a PHI kill or not. This code will be used to enable splitting of live intervals containing PHI-kills. A slight change to live interval weights introduced an extra spill into lsr-code-insertion (outside the critical sections). The test condition has been updated to reflect this. llvm-svn: 75097
-
- Jun 24, 2009
-
-
Lang Hames authored
llvm-svn: 74114
-
- Jun 19, 2009
-
-
Lang Hames authored
llvm-svn: 73750
-
- Jun 17, 2009
-
-
Lang Hames authored
llvm-svn: 73634
-
- Jun 02, 2009
-
-
Lang Hames authored
llvm-svn: 72729
-
- May 18, 2009
-
-
Lang Hames authored
llvm-svn: 72030
-
- May 06, 2009
-
-
Lang Hames authored
llvm-svn: 71057
-
- Apr 22, 2009
-
-
Evan Cheng authored
This fixes a very subtle bug. vr defined by an implicit_def is allowed overlap with any register since it doesn't actually modify anything. However, if it's used as a two-address use, its live range can be extended and it can be spilled. The spiller must take care not to emit a reload for the vn number that's defined by the implicit_def. This is both a correctness and performance issue. llvm-svn: 69743
-
- Apr 17, 2009
-
-
Evan Cheng authored
register is available and when it's profitable. e.g. xorq %r12<kill>, %r13 addq %rax, -184(%rbp) addq %r13, -184(%rbp) ==> xorq %r12<kill>, %r13 movq -184(%rbp), %r12 addq %rax, %r12 addq %r13, %r12 movq %r12, -184(%rbp) Two more instructions, but fewer memory accesses. It can also open up opportunities for more optimizations. llvm-svn: 69341
-
- Apr 13, 2009
-
-
Dan Gohman authored
the subreg field to 0, since the subreg field is only used for virtual register subregs. This doesn't change current functionality; it just eliminates bogus noise from debug output. llvm-svn: 68955
-
- Apr 09, 2009
-
-
Bob Wilson authored
register destinations that are tied to source operands. The TargetInstrDescr::findTiedToSrcOperand method silently fails for inline assembly. The existing MachineInstr::isRegReDefinedByTwoAddr was very close to doing what is needed, so this revision makes a few changes to that method and also renames it to isRegTiedToUseOperand (for consistency with the very similar isRegTiedToDefOperand and because it handles both two-address instructions and inline assembly with tied registers). llvm-svn: 68714
-
- Mar 31, 2009
-
-
Bill Wendling authored
llvm-svn: 68099
-
Bill Wendling authored
llvm-svn: 68092
-
- Mar 30, 2009
-
-
Bill Wendling authored
llvm-svn: 68059
-
- Mar 20, 2009
-
-
Sanjiv Gupta authored
llvm-svn: 67372
-
- Mar 19, 2009
-
-
Evan Cheng authored
llvm-svn: 67335
-
- Mar 17, 2009
-
-
Evan Cheng authored
Spiller may unfold load / mod / store instructions as an optimization when the would be loaded value is available in a register. It needs to check if it's legal to clobber the register. Also, the register can contain values of multiple spill slots, make sure to check all instead of just the one being unfolded. llvm-svn: 67068
-
- Mar 14, 2009
-
-
Daniel Dunbar authored
llvm-svn: 67000
-
- Mar 12, 2009
-
-
Owen Anderson authored
llvm-svn: 66780
-
- Mar 11, 2009
-
-
Owen Anderson authored
Reorganization: Move the Spiller out of VirtRegMap.cpp into its own files. No (intended) functionality change. llvm-svn: 66720
-
- Mar 09, 2009
-
-
Evan Cheng authored
Yet another case where the spiller marked two uses of the same register on the same instruction as kill. This fixes PR3706. llvm-svn: 66428
-
- Mar 08, 2009
-
-
Evan Cheng authored
llvm-svn: 66363
-
- Feb 28, 2009
-
-
Evan Cheng authored
llvm-svn: 65679
-
- Feb 26, 2009
-
-
Evan Cheng authored
llvm-svn: 65498
-
Evan Cheng authored
If an available register falls through to a succ block, unset the last kill. Sorry, it's impossible to reduce a sensible test case. It basically requires the moon and stars to align in order to cause a failure. llvm-svn: 65497
-
- Feb 17, 2009
-
-
Evan Cheng authored
A couple of places where reused use operands should be marked kill. This is exposed by recent availability fallthrough changes. llvm-svn: 64745
-