History log of /external/llvm/lib/CodeGen/Spiller.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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