2d24e2a396a1d211baaeedf32148a3b657240170 |
|
20-Dec-2011 |
David Blaikie <dblaikie@gmail.com> |
Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146960 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
47dbf6cef761c25cfeb0aa7d624a6f98288bb96a |
|
10-Mar-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Change the Spiller interface to take a LiveRangeEdit reference. This makes it possible to register delegates and get callbacks when the spiller edits live ranges. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127389 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
38f6bd0fc8095ef79a89b3db15ff6dc734ac90e7 |
|
10-Mar-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Make SpillIs an optional pointer. Avoid creating a bunch of temporary SmallVectors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127388 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
f6dff84d4e44d6c4a46c4f8a18e13c78f804547c |
|
10-Dec-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Force the greedy register allocator to always use the inline spiller. Soon, RegAllocGreedy will start splitting live ranges, and then deferred spilling won't work anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121591 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
f4baeaf8485f01beda46d29fd55753199dc68070 |
|
10-Nov-2010 |
Andrew Trick <atrick@apple.com> |
RABasic is nearly functionally complete. There are a few remaining benchmarks hitting an assertion. Adds LiveIntervalUnion::collectInterferingVRegs. Fixes "late spilling" by checking for any unspillable live vregs among all physReg aliases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118701 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
d3b48954141847af12919a5bf4ea8623d19fc1d5 |
|
25-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
In which I learn how to forward declare template classes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117272 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
0a2b2a1497a77f1db281d4dc9f21d01fe48f6ec6 |
|
14-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Clean up the Spiller.h interface. The earliestStart argument is entirely specific to linear scan allocation, and can be easily calculated by RegAllocLinearScan. Replace std::vector with SmallVector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111055 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
f2c6e367c1c0d8797e62e58a3ccdb8cceee27987 |
|
21-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Change the createSpiller interface to take a MachineFunctionPass argument. The spillers can pluck the analyses they need from the pass reference. Switch some never-null pointers to references. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108969 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
9529a1c3dd9946c1e63075f4bf146a731769ebe2 |
|
19-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Spillers may alter MachineLoopInfo when breaking critical edges, so make it non-const. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108734 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
9e55afbf88f4853ac94b6a0ac021a89c5c929d6b |
|
01-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add support for rematerialization to InlineSpiller. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107351 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
67674e2685af8ab16292550becac15f7b17ea831 |
|
24-Jun-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't return a std::vector in the Spiller interface, but take a reference to a vector instead. This avoids needless copying and allocation. Add documentation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106788 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
6194569d22003fddaf1a33acdbb84d5efe76e7d7 |
|
09-Dec-2009 |
Lang Hames <lhames@gmail.com> |
Added a new "splitting" spiller. 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90951 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
8783e401a3ad187dcd0f306153f9339f7270621d |
|
20-Nov-2009 |
Lang Hames <lhames@gmail.com> |
Removed references to LiveStacks from Spiller.* . They're no longer needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89422 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
835ca07991c1b8ec47240b15417e1b2732480094 |
|
19-Nov-2009 |
Lang Hames <lhames@gmail.com> |
Added a new Spiller implementation which wraps LiveIntervals::addIntervalsForSpills. 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). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89311 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
38283e23df5aa748ec3bb5f02f14f1741cf491ce |
|
18-Nov-2009 |
Lang Hames <lhames@gmail.com> |
Fixed the in-place spiller and trivial rewriter, which had been broken by the recent SlotIndexes work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89238 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
cfb8a1bea15f50e6609283c0e06f815a1448a14b |
|
19-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Fix some minor MSVC compiler warnings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76356 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
deb052a3dd0227579f86d74b3c1d70384ea5c16b |
|
13-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Match declaration to definition. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75440 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
10382fb71d8306f320ecbeb7049d25354c0e5457 |
|
19-Jun-2009 |
Lang Hames <lhames@gmail.com> |
More VNInfo tweaking, plus a little progress on intra-block splitting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73750 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
857c4e01f85601cf2084adb860616256ee47c177 |
|
17-Jun-2009 |
Lang Hames <lhames@gmail.com> |
VNInfo cleanup. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73634 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
f41538d1b54f55e8900394929b50f7ce3e61125f |
|
02-Jun-2009 |
Lang Hames <lhames@gmail.com> |
Update to in-place spilling framework. Includes live interval scaling and trivial rewriter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72729 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
cd35ed5153963c92333aa8d82692f1344d3ec911 |
|
19-May-2009 |
Bill Wendling <isanbard@gmail.com> |
Forward decls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72114 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
0bde89e4555b726104dff26b90378a17fa919648 |
|
19-May-2009 |
Bill Wendling <isanbard@gmail.com> |
Remove 'class' specifier. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72113 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
7683806ea3a16e14e8b7c0c9878f5211b4c8baa5 |
|
19-May-2009 |
Bill Wendling <isanbard@gmail.com> |
Fix to compile on VS2008. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72112 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
e2b201bac382464496758d789cddefa50690fbe3 |
|
18-May-2009 |
Lang Hames <lhames@gmail.com> |
New Spiller interface and trivial implementation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72030 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
87e3bcab736e5af501b1cfbf880563d3d2244497 |
|
06-May-2009 |
Lang Hames <lhames@gmail.com> |
Renamed Spiller classes (plus uses and related files) to VirtRegRewriter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71057 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
5b69ebac857104770b1a751bf7a463fda4330a62 |
|
22-Apr-2009 |
Evan Cheng <evan.cheng@apple.com> |
It has finally happened. Spiller is now using live interval info. 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69743 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
276b77e66c538264d79b78c00bbad9f890f58011 |
|
17-Apr-2009 |
Evan Cheng <evan.cheng@apple.com> |
Teach spiller to unfold instructions which modref spill slot when a scratch 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69341 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
e67f5e42734199a1f4771773417699262491eb86 |
|
31-Mar-2009 |
Bill Wendling <isanbard@gmail.com> |
Oy! When reverting r68073, I added in experimental code. Sorry... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68099 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
8fe00540fc6e1531d909d0688cc75a77b7dfa330 |
|
31-Mar-2009 |
Bill Wendling <isanbard@gmail.com> |
Revert r68073. It's causing a failure in the Apple-style builds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
e47b0089d92497e7726516610ff6f925d6828569 |
|
17-Mar-2009 |
Evan Cheng <evan.cheng@apple.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67068 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
0ff4e2105ba0d8e378cbd01bf9f4db935d1bf39f |
|
12-Mar-2009 |
Owen Anderson <resistor@mac.com> |
Reorganize some #include's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66780 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|
1ed5b714f1c98b370145fdebb6c21bbc7caa52d5 |
|
11-Mar-2009 |
Owen Anderson <resistor@mac.com> |
Reorganization: Move the Spiller out of VirtRegMap.cpp into its own files. No (intended) functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66720 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/Spiller.h
|