Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ae09d93b35 
								
							 
						 
						
							
							
								
								Update these register allocators to set the PhysRegUsed info in MachineFunction.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19791 
							
						 
						
							2005-01-23 22:45:13 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								78100c41ca 
								
							 
						 
						
							
							
								
								Silence VS warnings  
							
							 
							
							... 
							
							
							
							llvm-svn: 19385 
							
						 
						
							2005-01-08 19:53:50 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e09dbe2732 
								
							 
						 
						
							
							
								
								Move virtual method call out of loop  
							
							 
							
							... 
							
							
							
							llvm-svn: 18955 
							
						 
						
							2004-12-15 07:04:32 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								784a0dcbd0 
								
							 
						 
						
							
							
								
								Move virtual function call out of loop to speed up getFreePhysReg by about  
							
							 
							
							... 
							
							
							
							20%, shaving 0.1s off hbd compile time on my g5.  Yay.
llvm-svn: 18592 
							
						 
						
							2004-12-07 05:25:53 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b75e790a2b 
								
							 
						 
						
							
							
								
								* There is no reason for SpillWeights to be an instance var  
							
							 
							
							... 
							
							
							
							* 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 
							
						 
						
							2004-11-18 06:01:45 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								08ec603bb0 
								
							 
						 
						
							
							
								
								Fix a couple of bugs where we considered physregs past their range as possibly  
							
							 
							
							... 
							
							
							
							intersecting an interval.
llvm-svn: 17939 
							
						 
						
							2004-11-18 04:33:31 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								49ff5f0477 
								
							 
						 
						
							
							
								
								Start using the iterators in the fixed_ intervals to avoid having to binary  
							
							 
							
							... 
							
							
							
							search physreg intervals every time we access it.  This takes another
half second off of linscan.
llvm-svn: 17937 
							
						 
						
							2004-11-18 04:13:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								850852c789 
								
							 
						 
						
							
							
								
								Add a counter for the number of times linscan has to backtrack.  Start using  
							
							 
							
							... 
							
							
							
							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 
							
						 
						
							2004-11-18 03:49:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a1f7779876 
								
							 
						 
						
							
							
								
								* Improve comments/documentation substantially  
							
							 
							
							... 
							
							
							
							* 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 
							
						 
						
							2004-11-18 02:42:27 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a51f5eeac1 
								
							 
						 
						
							
							
								
								Rename some methods, use 'begin' instead of 'start', add new LiveInterval  
							
							 
							
							... 
							
							
							
							iterator/begin/end members.
llvm-svn: 17930 
							
						 
						
							2004-11-18 01:29:39 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c22ffc26b0 
								
							 
						 
						
							
							
								
								Do not make i have bigger scope that we need  
							
							 
							
							... 
							
							
							
							llvm-svn: 17483 
							
						 
						
							2004-11-05 04:47:37 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ddd5229f3b 
								
							 
						 
						
							
							
								
								Free the VirtRegMap at the end of MachineFunction processing instead of at  
							
							 
							
							... 
							
							
							
							the beginning of processing the next one.
llvm-svn: 16605 
							
						 
						
							2004-09-30 02:02:33 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								a5c04ee50f 
								
							 
						 
						
							
							
								
								Fixes to make LLVM compile with vc7.1.  
							
							 
							
							... 
							
							
							
							Patch contributed by Paolo Invernizzi!
llvm-svn: 16152 
							
						 
						
							2004-09-03 18:19:51 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								095c3a80f3 
								
							 
						 
						
							
							
								
								Change the way we choose a free register: instead of picking the first  
							
							 
							
							... 
							
							
							
							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 
							
						 
						
							2004-09-02 21:23:32 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								dcbf893095 
								
							 
						 
						
							
							
								
								We don't need to sort the added vector as unhandled intervals are  
							
							 
							
							... 
							
							
							
							stored in a binary heap.
llvm-svn: 16143 
							
						 
						
							2004-09-02 18:00:38 +00:00  
						
					 
				
					
						
							
							
								 
								Reid Spencer
							
						 
						
							 
							
							
							
							
								
							
							
								7c16caa336 
								
							 
						 
						
							
							
								
								Changes For Bug 352  
							
							 
							
							... 
							
							
							
							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 
							
						 
						
							2004-09-01 22:55:40 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								fae8f6a4fb 
								
							 
						 
						
							
							
								
								Be a bit more efficient when processing the active and inactive  
							
							 
							
							... 
							
							
							
							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 
							
						 
						
							2004-09-01 22:52:29 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								e2d962e0fd 
								
							 
						 
						
							
							
								
								Now that LiveIntervals::addIntervalsForSpills is fixed, do not require  
							
							 
							
							... 
							
							
							
							LiveVariables.
llvm-svn: 16076 
							
						 
						
							2004-08-27 19:00:29 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								efd40bce75 
								
							 
						 
						
							
							
								
								Back out this change as it broke the build last night. This should be  
							
							 
							
							... 
							
							
							
							investicated further as the linearscan variants don't really need
LiveVariables...
llvm-svn: 16074 
							
						 
						
							2004-08-27 18:01:21 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								11f0fc8eda 
								
							 
						 
						
							
							
								
								The linear scan variants do not require the LiveVariables analysis.  
							
							 
							
							... 
							
							
							
							llvm-svn: 16071 
							
						 
						
							2004-08-27 04:51:13 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								a698308cce 
								
							 
						 
						
							
							
								
								Convert indentation to 2 spaces.  
							
							 
							
							... 
							
							
							
							llvm-svn: 15489 
							
						 
						
							2004-08-04 09:46:26 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								83d9b62b28 
								
							 
						 
						
							
							
								
								Add some comments to the backtracking code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 15200 
							
						 
						
							2004-07-25 08:10:33 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								cf72e7f854 
								
							 
						 
						
							
							
								
								Change std::map<unsigned, LiveInterval*> into a std::map<unsigned,  
							
							 
							
							... 
							
							
							
							LiveInterval>. This saves some space and removes the pointer
indirection caused by following the pointer.
llvm-svn: 15167 
							
						 
						
							2004-07-24 11:44:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c51866a20e 
								
							 
						 
						
							
							
								
								Completely eliminate the intervals_ list.  instead, the r2iMap_ maintains  
							
							 
							
							... 
							
							
							
							ownership of the intervals.
llvm-svn: 15155 
							
						 
						
							2004-07-24 03:32:06 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								856383326a 
								
							 
						 
						
							
							
								
								Rename LiveIntervals.(cpp|h) -> LiveIntervalAnalysis.(cpp|h)  
							
							 
							
							... 
							
							
							
							llvm-svn: 15135 
							
						 
						
							2004-07-23 17:56:30 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								1a876fab64 
								
							 
						 
						
							
							
								
								Some compile time improvements resulting in a 1sec speedup in the 5sec  
							
							 
							
							... 
							
							
							
							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 
							
						 
						
							2004-07-22 08:14:44 +00:00  
						
					 
				
					
						
							
							
								 
								Brian Gaeke
							
						 
						
							 
							
							
							
							
								
							
							
								902dcf0729 
								
							 
						 
						
							
							
								
								These files don't need to include <iostream> since they include "Support/Debug.h".  
							
							 
							
							... 
							
							
							
							llvm-svn: 15089 
							
						 
						
							2004-07-21 20:50:33 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								12a71ea03e 
								
							 
						 
						
							
							
								
								Remove dead code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 15011 
							
						 
						
							2004-07-19 23:35:55 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8c8144b958 
								
							 
						 
						
							
							
								
								Fix assertion to not dereference end!  
							
							 
							
							... 
							
							
							
							llvm-svn: 14991 
							
						 
						
							2004-07-19 05:02:09 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								70f8dca59b 
								
							 
						 
						
							
							
								
								Add some asserts that the list of intervals returned by addIntervalsForSpills  
							
							 
							
							... 
							
							
							
							is sorted.  This is not the case currently, which is causing no end of
problems.
llvm-svn: 14990 
							
						 
						
							2004-07-19 04:47:36 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								21b3a5b0de 
								
							 
						 
						
							
							
								
								Correctly compute the ration of iterations/#intervals.  
							
							 
							
							... 
							
							
							
							llvm-svn: 14626 
							
						 
						
							2004-07-04 17:23:35 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								8f3cc0316c 
								
							 
						 
						
							
							
								
								Add efficiency statistic.  
							
							 
							
							... 
							
							
							
							llvm-svn: 14590 
							
						 
						
							2004-07-04 07:59:06 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4fbff990b0 
								
							 
						 
						
							
							
								
								Rename Interval class to LiveInterval to avoid conflicting with the already  
							
							 
							
							... 
							
							
							
							existing llvm::Interval class.
Patch contributed by Vladimir Prus!
http://mail.cs.uiuc.edu/pipermail/llvmbugs/2004-June/000710.html 
llvm-svn: 14281 
							
						 
						
							2004-06-21 13:10:56 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								fbe799cfa2 
								
							 
						 
						
							
							
								
								Pull Interval class out of LiveIntervals.  
							
							 
							
							... 
							
							
							
							llvm-svn: 13910 
							
						 
						
							2004-05-30 07:46:27 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								a5268e8199 
								
							 
						 
						
							
							
								
								When spilling an register, introduce a new temporary for each of its  
							
							 
							
							... 
							
							
							
							spills. This allows for more flexibility when allocating registers for
spill code.
llvm-svn: 13907 
							
						 
						
							2004-05-30 07:24:39 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								2a54b5d3e1 
								
							 
						 
						
							
							
								
								Add required header  
							
							 
							
							... 
							
							
							
							llvm-svn: 13417 
							
						 
						
							2004-05-08 03:50:03 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								991425ae70 
								
							 
						 
						
							
							
								
								numeric_limits::infinity() apparently does not work on all systems.  As a  
							
							 
							
							... 
							
							
							
							workaround, use the C HUGE_VAL macro instead.
llvm-svn: 13377 
							
						 
						
							2004-05-06 16:25:59 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								02a5354d9b 
								
							 
						 
						
							
							
								
								Make the set of fixed (preallocated) intervals be a fixed superset of  
							
							 
							
							... 
							
							
							
							unhandled + handled. So unhandled is now including all fixed intervals
and fixed intervals never changes when processing a function.
llvm-svn: 12462 
							
						 
						
							2004-03-17 00:48:59 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								31953c7a10 
								
							 
						 
						
							
							
								
								Add a spiller option to llc. A simple spiller will come soon. When we get 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 
							
						 
						
							2004-03-01 23:18:15 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								b76d234ee9 
								
							 
						 
						
							
							
								
								Add the long awaited memory operand folding support for linear scan  
							
							 
							
							... 
							
							
							
							llvm-svn: 12058 
							
						 
						
							2004-03-01 20:05:10 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								e669caafe0 
								
							 
						 
						
							
							
								
								Rename member function to be consistent with the rest.  
							
							 
							
							... 
							
							
							
							llvm-svn: 11898 
							
						 
						
							2004-02-27 06:11:15 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								a9f03fba9d 
								
							 
						 
						
							
							
								
								Remove asssert since it is breaking cases that it shouldn't.  
							
							 
							
							... 
							
							
							
							llvm-svn: 11841 
							
						 
						
							2004-02-25 22:01:06 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f5a393a133 
								
							 
						 
						
							
							
								
								Add an assertion  
							
							 
							
							... 
							
							
							
							llvm-svn: 11830 
							
						 
						
							2004-02-25 19:37:44 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								1dd872ce94 
								
							 
						 
						
							
							
								
								Move machine code rewriter and spiller outside the register  
							
							 
							
							... 
							
							
							
							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 
							
						 
						
							2004-02-24 08:58:30 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								ab77b05d8c 
								
							 
						 
						
							
							
								
								Remove '4Virt' from member function names as it is obvious.  
							
							 
							
							... 
							
							
							
							llvm-svn: 11781 
							
						 
						
							2004-02-23 23:47:10 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								c794a9060f 
								
							 
						 
						
							
							
								
								Refactor VirtRegMap out of RegAllocLinearScan as the first part of bug  
							
							 
							
							... 
							
							
							
							251 (providing a generic machine code rewriter/spiller).
llvm-svn: 11780 
							
						 
						
							2004-02-23 23:08:11 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								52de9e214c 
								
							 
						 
						
							
							
								
								Add number of spilled registers statistic.  
							
							 
							
							... 
							
							
							
							llvm-svn: 11759 
							
						 
						
							2004-02-23 18:45:32 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								d780ce6462 
								
							 
						 
						
							
							
								
								Remove implementation of default constructor as it is useless now.  
							
							 
							
							... 
							
							
							
							llvm-svn: 11755 
							
						 
						
							2004-02-23 18:28:35 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								f83cb74b57 
								
							 
						 
						
							
							
								
								Improved PhysRegTracker interface. RegAlloc lazily allocates the register tracker using a std::auto_ptr  
							
							 
							
							... 
							
							
							
							llvm-svn: 11738 
							
						 
						
							2004-02-23 06:10:13 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								d42c2f24ec 
								
							 
						 
						
							
							
								
								Fix comments in PhysRegTracker and rename isPhysRegAvail to isRegAvail to be consistent with the other two  
							
							 
							
							... 
							
							
							
							llvm-svn: 11723 
							
						 
						
							2004-02-23 01:25:05 +00:00