- Aug 06, 2010
-
-
Owen Anderson authored
llvm-svn: 110460
-
Owen Anderson authored
llvm-svn: 110410
-
Owen Anderson authored
ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
-
- Jul 27, 2010
-
-
Jakob Stoklund Olesen authored
rewrite instructions for live range splitting. Still work in progress. llvm-svn: 109469
-
- 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: 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 23, 2009
-
-
Chris Lattner authored
llvm-svn: 79842
-
- Jul 24, 2009
-
-
Daniel Dunbar authored
LiveInterval, etc to raw_ostream. llvm-svn: 76965
-
- Jun 14, 2009
-
-
Evan Cheng authored
Move register allocation preference (or hint) from LiveInterval to MachineRegisterInfo. This allows more passes to set them. llvm-svn: 73346
-
- May 04, 2009
-
-
Evan Cheng authored
llvm-svn: 70821
-
- May 03, 2009
-
-
Evan Cheng authored
In some rare cases, the register allocator can spill registers but end up not utilizing registers at all. The fundamental problem is linearscan's backtracking can end up freeing more than one allocated registers. However, reloads and restores might be folded into uses / defs and freed registers might not be used at all. VirtRegMap keeps track of allocations so it knows what's not used. As a horrible hack, the stack coloring can color spill slots with *free* registers. That is, it replace reload and spills with copies from and to the free register. It unfold instructions that load and store the spill slot and replace them with register using variants. Not yet enabled. This is part 1. More coming. llvm-svn: 70787
-
- Mar 31, 2009
-
-
Bill Wendling authored
llvm-svn: 68099
-
Bill Wendling authored
llvm-svn: 68092
-
- Mar 13, 2009
-
-
Owen Anderson authored
llvm-svn: 66870
-
- 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
-
- Jan 05, 2009
-
-
Dan Gohman authored
llvm-svn: 61715
-
- Jun 04, 2008
-
-
Evan Cheng authored
llvm-svn: 51932
-
- Apr 11, 2008
-
-
Evan Cheng authored
Use of implicit_def is not part of live interval. Create empty intervals for the uses when the live interval is being spilled. llvm-svn: 49542
-
- Mar 12, 2008
-
-
Dan Gohman authored
llvm-svn: 48297
-
- Mar 11, 2008
-
-
Evan Cheng authored
llvm-svn: 48246
-
Evan Cheng authored
When the register allocator runs out of registers, spill a physical register around the def's and use's of the interval being allocated to make it possible for the interval to target a register and spill it right away and restore a register for uses. This likely generates terrible code but is before than aborting. llvm-svn: 48218
-
- Feb 27, 2008
-
-
Evan Cheng authored
llvm-svn: 47657
-
- Feb 10, 2008
-
-
Dan Gohman authored
llvm-svn: 46930
-
- Dec 29, 2007
-
-
Chris Lattner authored
llvm-svn: 45418
-
- Dec 05, 2007
-
-
Evan Cheng authored
llvm-svn: 44612
-
Evan Cheng authored
llvm-svn: 44611
-
Evan Cheng authored
llvm-svn: 44609
-
- Dec 02, 2007
-
-
Evan Cheng authored
llvm-svn: 44517
-
- Nov 29, 2007
-
-
Evan Cheng authored
llvm-svn: 44428
-
- Nov 28, 2007
-
-
Evan Cheng authored
llvm-svn: 44386
-
- Nov 17, 2007
-
-
Evan Cheng authored
When a live interval is being spilled, rather than creating short, non-spillable intervals for every def / use, split the interval at BB boundaries. That is, for every BB where the live interval is defined or used, create a new interval that covers all the defs and uses in the BB. This is designed to eliminate one common problem: multiple reloads of the same value in a single basic block. Note, it does *not* decrease the number of spills since no copies are inserted so the split intervals are *connected* through spill and reloads (or rematerialization). The newly created intervals can be spilled again, in that case, since it does not span multiple basic blocks, it's spilled in the usual manner. However, it can reuse the same stack slot as the previously split interval. This is currently controlled by -split-intervals-at-bb. llvm-svn: 44198
-
- Oct 13, 2007
-
-
Evan Cheng authored
Turn this: movswl %ax, %eax movl %eax, -36(%ebp) xorl %edi, -36(%ebp) into movswl %ax, %eax xorl %edi, %eax movl %eax, -36(%ebp) by unfolding the load / store xorl into an xorl and a store when we know the value in the spill slot is available in a register. This doesn't change the number of instructions but reduce the number of times memory is accessed. Also unfold some load folding instructions and reuse the value when similar situation presents itself. llvm-svn: 42947
-
- Aug 14, 2007
-
-
Evan Cheng authored
Re-implement trivial rematerialization. This allows def MIs whose live intervals that are coalesced to be rematerialized. llvm-svn: 41060
-
- Aug 07, 2007
-
-
David Greene authored
Add a missing forward declaration. llvm-svn: 40896
-
- Aug 02, 2007
-
-
Dan Gohman authored
llvm-svn: 40757
-
- Apr 04, 2007
-
-
Evan Cheng authored
llvm-svn: 35660
-
- Mar 20, 2007
-
-
Evan Cheng authored
llvm-svn: 35208
-
- Feb 01, 2007
-
-
Chris Lattner authored
llvm-svn: 33749
-
- Dec 17, 2006
-
-
Bill Wendling authored
rework the hacks that had us passing OStream in. We pass in std::ostream* instead, check for null, and then dispatch to the correct print() method. llvm-svn: 32636
-