| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 21420
|
|
|
|
| |
llvm-svn: 19791
|
|
|
|
| |
llvm-svn: 19385
|
|
|
|
| |
llvm-svn: 18955
|
|
|
|
|
|
| |
20%, shaving 0.1s off hbd compile time on my g5. Yay.
llvm-svn: 18592
|
|
|
|
|
|
|
|
| |
* Do not put fixed registers into the unhandled set. This means they will
never find their way into the inactive, active, or handled sets, so we
can simplify a bunch of code.
llvm-svn: 17945
|
|
|
|
|
|
| |
intersecting an interval.
llvm-svn: 17939
|
|
|
|
|
|
|
| |
search physreg intervals every time we access it. This takes another
half second off of linscan.
llvm-svn: 17937
|
|
|
|
|
|
|
| |
the iterator hints we have to speed up overlaps(). This speeds linscan up
by about .2s (out of 8.7) on 175.vpr for PPC.
llvm-svn: 17935
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Eliminate the releaseMemory method, this is not an analysis
* Change the fixed, active, and inactive lists of intervals to maintain an
iterator for the current position in the interval. This allows us to do
constant time increments of the iterator instead of having to do a binary
search to find our liverange in our liveinterval all of the time, which
substantially speeds up cases where LiveIntervals have many LiveRanges
- which is very common for physical registers. On targets with many
physregs, this can make a noticable difference.
With a release build of LLC for PPC, this halves the time in
processInactiveIntervals and processActiveIntervals, from 1.5s to .75s.
This also lays the ground for more to come.
llvm-svn: 17933
|
|
|
|
|
|
| |
iterator/begin/end members.
llvm-svn: 17930
|
|
|
|
| |
llvm-svn: 17483
|
|
|
|
|
|
| |
the beginning of processing the next one.
llvm-svn: 16605
|
|
|
|
|
|
| |
Patch contributed by Paolo Invernizzi!
llvm-svn: 16152
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
free allocatable register, we prefer the a free one with the most uses
of inactive intervals. This causes less spills and performes a bit
better compared to gcc:
Program | GCC/LLC (Before)| GCC/LLC (After)
164.gzip/164.gzip | 0.59 | 0.60
175.vpr/175.vpr | 0.57 | 0.58
176.gcc/176.gcc | 0.59 | 0.61
181.mcf/181.mcf | 0.94 | 0.95
186.crafty/186.crafty | 0.62 | 0.62
197.parser/197.parser | 0.89 | 0.88
252.eon/252.eon | 0.61 | 0.66
253.perlbmk/253.perlbmk | 0.79 | 0.84
254.gap/254.gap | 0.81 | 0.81
255.vortex/255.vortex | 0.92 | 0.93
256.bzip2/256.bzip2 | 0.69 | 0.69
300.twolf/300.twolf | 0.91 | 0.90
llvm-svn: 16147
|
|
|
|
|
|
| |
stored in a binary heap.
llvm-svn: 16143
|
|
|
|
|
|
|
|
| |
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
llvm-svn: 16137
|
|
|
|
|
|
|
|
|
| |
lists. Instead of scanning the vector backwards, scan it forward and
swap each element we want to erase. Then at the end erase all removed
intervals at once. This doesn't save much: 0.08s out of 4s when
compiling 176.gcc.
llvm-svn: 16136
|
|
|
|
|
|
| |
LiveVariables.
llvm-svn: 16076
|
|
|
|
|
|
|
| |
investicated further as the linearscan variants don't really need
LiveVariables...
llvm-svn: 16074
|
|
|
|
| |
llvm-svn: 16071
|
|
|
|
| |
llvm-svn: 15489
|
|
|
|
| |
llvm-svn: 15200
|
|
|
|
|
|
|
| |
LiveInterval>. This saves some space and removes the pointer
indirection caused by following the pointer.
llvm-svn: 15167
|
|
|
|
|
|
| |
ownership of the intervals.
llvm-svn: 15155
|
|
|
|
| |
llvm-svn: 15135
|
|
|
|
|
|
|
|
|
|
|
| |
compilation of gcc:
* Use vectors instead of lists for the intervals sets
* Use a heap for the unhandled set to keep intervals always sorted and
makes insertions back to the heap very fast (compared to scanning a
list)
llvm-svn: 15103
|
|
|
|
|
|
| |
"Support/Debug.h".
llvm-svn: 15089
|
|
|
|
| |
llvm-svn: 15011
|
|
|
|
| |
llvm-svn: 14991
|
|
|
|
|
|
|
| |
is sorted. This is not the case currently, which is causing no end of
problems.
llvm-svn: 14990
|
|
|
|
| |
llvm-svn: 14626
|
|
|
|
| |
llvm-svn: 14590
|
|
|
|
|
|
|
|
|
| |
existing llvm::Interval class.
Patch contributed by Vladimir Prus!
http://mail.cs.uiuc.edu/pipermail/llvmbugs/2004-June/000710.html
llvm-svn: 14281
|
|
|
|
| |
llvm-svn: 13910
|
|
|
|
|
|
|
| |
spills. This allows for more flexibility when allocating registers for
spill code.
llvm-svn: 13907
|
|
|
|
| |
llvm-svn: 13417
|
|
|
|
|
|
| |
workaround, use the C HUGE_VAL macro instead.
llvm-svn: 13377
|
|
|
|
|
|
|
| |
unhandled + handled. So unhandled is now including all fixed intervals
and fixed intervals never changes when processing a function.
llvm-svn: 12462
|
|
|
|
|
|
| |
CFG in the machine code represenation a global spiller will also be possible. Also document the linear scan register allocator but mark it as experimental for now.
llvm-svn: 12062
|
|
|
|
| |
llvm-svn: 12058
|
|
|
|
| |
llvm-svn: 11898
|
|
|
|
| |
llvm-svn: 11841
|
|
|
|
| |
llvm-svn: 11830
|
|
|
|
|
|
|
|
|
|
|
| |
allocator.
The implementation is completely rewritten and now employs several
optimizations not exercised before. For example for 164.gzip we have
997 loads and 699 stores vs the 1221 loads and 880 stores we have
before.
llvm-svn: 11798
|
|
|
|
| |
llvm-svn: 11781
|
|
|
|
|
|
| |
251 (providing a generic machine code rewriter/spiller).
llvm-svn: 11780
|
|
|
|
| |
llvm-svn: 11759
|
|
|
|
| |
llvm-svn: 11755
|
|
|
|
|
|
| |
tracker using a std::auto_ptr
llvm-svn: 11738
|