- Mar 29, 2011
-
-
Jakob Stoklund Olesen authored
The instruction to be rematerialized may not be the one defining the register that is being spilled. The traceSiblingValue() function sees through sibling copies to find the remat candidate. llvm-svn: 128449
-
- Mar 26, 2011
-
-
Jakob Stoklund Olesen authored
The main register class may have been inflated by live range splitting, so that register class is not necessarily valid for the snippet instructions. Use the original register class for the stack slot interval. llvm-svn: 128351
-
- Mar 20, 2011
-
-
Jakob Stoklund Olesen authored
This can happen when multiple sibling registers are spilled after live range splitting. llvm-svn: 127965
-
Jakob Stoklund Olesen authored
llvm-svn: 127964
-
Jakob Stoklund Olesen authored
llvm-svn: 127959
-
- Mar 18, 2011
-
-
Jakob Stoklund Olesen authored
Stack slot real estate is virtually free compared to registers, so it is advantageous to spill earlier even though the same value is now kept in both a register and a stack slot. Also eliminate redundant spills by extending the stack slot live range underneath reloaded registers. This can trigger a dead code elimination, removing copies and even reloads that were only feeding spills. llvm-svn: 127868
-
- Mar 17, 2011
-
-
Jakob Stoklund Olesen authored
I have convinced myself that it can only happen when a phi value dies. When it happens, allocate new virtual registers for the components. llvm-svn: 127827
-
- Mar 15, 2011
-
-
Jakob Stoklund Olesen authored
After live range splitting, an original value may be available in multiple registers. Tracing back through the registers containing the same value, find the best place to insert a spill, determine if the value has already been spilled, or discover a reaching def that may be rematerialized. This is only the analysis part. The information is not used for anything yet. llvm-svn: 127698
-
- Mar 14, 2011
-
-
Jakob Stoklund Olesen authored
Remove the unused reserved_ bit vector, no functional change intended. This doesn't break 'svn blame', this file really is all my fault. llvm-svn: 127607
-
- Mar 13, 2011
-
-
Jakob Stoklund Olesen authored
This allows the allocator to free any resources used by the virtual register, including physical register assignments. llvm-svn: 127560
-
- Mar 12, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 127530
-
Jakob Stoklund Olesen authored
Live range splitting can create a number of small live ranges containing only a single real use. Spill these small live ranges along with the large range they are connected to with copies. This enables memory operand folding and maximizes the spill to fill distance. Work in progress with known bugs. llvm-svn: 127529
-
- Mar 10, 2011
-
-
Jakob Stoklund Olesen authored
This makes it possible to register delegates and get callbacks when the spiller edits live ranges. llvm-svn: 127389
-
Jakob Stoklund Olesen authored
llvm-svn: 127388
-
- Mar 09, 2011
-
-
Jakob Stoklund Olesen authored
This will we used for keeping register allocator data structures up to date while LiveRangeEdit is trimming live intervals. llvm-svn: 127300
-
- Mar 07, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 127181
-
- Feb 24, 2011
-
-
Jakob Stoklund Olesen authored
register. This avoids some silly stack slot shuffling when both sides of a copy get spilled. llvm-svn: 126353
-
- Feb 23, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 126258
-
- Feb 09, 2011
-
-
Jakob Stoklund Olesen authored
This almost guarantees that the COPY will be coalesced. llvm-svn: 125140
-
- Feb 08, 2011
-
-
Jakob Stoklund Olesen authored
The target hook doesn't know how to do that. (Neither do I). llvm-svn: 125108
-
- Jan 09, 2011
-
-
Jakob Stoklund Olesen authored
physical register numbers. This makes the hack used in LiveInterval official, and lets LiveInterval be oblivious of stack slots. The isPhysicalRegister() and isVirtualRegister() predicates don't know about this, so when a variable may contain a stack slot, isStackSlot() should always be tested first. llvm-svn: 123128
-
- Dec 18, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 122135
-
Jakob Stoklund Olesen authored
use before rematerializing the load. This allows us to produce: addps LCPI0_1(%rip), %xmm2 Instead of: movaps LCPI0_1(%rip), %xmm3 addps %xmm3, %xmm2 Saving a register and an instruction. The standard spiller already knows how to do this. llvm-svn: 122133
-
Jakob Stoklund Olesen authored
createMachineVerifierPass and MachineFunction::verify. The banner is printed before the machine code dump, just like the printer pass. llvm-svn: 122113
-
- Dec 10, 2010
-
-
Jakob Stoklund Olesen authored
The spiller should only spill. The register allocator will drive live range splitting, it has the needed information about register pressure and interferences. llvm-svn: 121590
-
- Nov 15, 2010
-
-
Jakob Stoklund Olesen authored
live ranges for the spill register are also defined at the use slot instead of the normal def slot. This fixes PR8612 for the inline spiller. A use was being allocated to the same register as a spilled early clobber def. This problem exists in all the spillers. A fix for the standard spiller is forthcoming. llvm-svn: 119182
-
- Nov 11, 2010
-
-
Jakob Stoklund Olesen authored
constant loads. llvm-svn: 118741
-
- Nov 10, 2010
-
-
Andrew Trick authored
benchmarks hitting an assertion. Adds LiveIntervalUnion::collectInterferingVRegs. Fixes "late spilling" by checking for any unspillable live vregs among all physReg aliases. llvm-svn: 118701
-
Jakob Stoklund Olesen authored
llvm-svn: 118661
-
- Nov 04, 2010
-
-
Jakob Stoklund Olesen authored
This way, InlineSpiller does the same amount of splitting as the standard spiller. Splitting should really be guided by the register allocator, and doesn't belong in the spiller at all. llvm-svn: 118216
-
- Nov 03, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 118193
-
- Nov 01, 2010
-
-
Jakob Stoklund Olesen authored
give them individual stack slots once the are actually spilled. llvm-svn: 117945
-
- Oct 30, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 117761
-
- Oct 29, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 117629
-
- Oct 28, 2010
-
-
Jakob Stoklund Olesen authored
proper SSA updating. This doesn't cause MachineDominators to be recomputed since we are already requiring MachineLoopInfo which uses dominators as well. llvm-svn: 117598
-
Jakob Stoklund Olesen authored
split. llvm-svn: 117597
-
- Oct 26, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 117338
-
- Oct 21, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 116951
-
- Oct 15, 2010
-
-
Jakob Stoklund Olesen authored
All registers created during splitting or spilling are assigned to the same stack slot as the parent register. When splitting or rematting, we may not spill at all. In that case the stack slot is still assigned, but it will be dead. llvm-svn: 116546
-
Jakob Stoklund Olesen authored
splitting or spillling, and to help with rematerialization. Use LiveRangeEdit in InlineSpiller and SplitKit. This will eventually make it possible to share remat code between InlineSpiller and SplitKit. llvm-svn: 116543
-