Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								2665d9c6f9 
								
							 
						 
						
							
							
								
								Change weight into a float so that we can take into account the  
							
							 
							
							... 
							
							
							
							nesting level when computing it. Right now the allocator uses:
    w = sum_over_defs_uses( 10 ^ nesting level );
llvm-svn: 10569 
							
						 
						
							2003-12-21 20:19:10 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								c09b77ea35 
								
							 
						 
						
							
							
								
								Add support for inactive intervals. This effectively reuses registers  
							
							 
							
							... 
							
							
							
							for live ranges that fall into assigned registers' holes.
llvm-svn: 10566 
							
						 
						
							2003-12-21 05:43:40 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								7139090fd2 
								
							 
						 
						
							
							
								
								Remove TwoAddressInstruction from the public headers and add an ID  
							
							 
							
							... 
							
							
							
							instead, since this pass doesn't expose any state to its users.
llvm-svn: 10520 
							
						 
						
							2003-12-18 22:40:24 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								e5e2bd6777 
								
							 
						 
						
							
							
								
								Modify linear scan register allocator to use the two-address  
							
							 
							
							... 
							
							
							
							instruction pass. This also fixes all remaining bugs for this new
allocator to pass all tests under test/Programs.
llvm-svn: 10515 
							
						 
						
							2003-12-18 13:15:02 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								15b8036b29 
								
							 
						 
						
							
							
								
								When a variable is killed and redifined in a basic block only one  
							
							 
							
							... 
							
							
							
							killing instruction is tracked. This causes the LiveIntervals to
create bogus intervals. The workaound is to add a range to the
interval from the redefinition to the end of the basic block.
llvm-svn: 10510 
							
						 
						
							2003-12-18 08:53:43 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								40874c708f 
								
							 
						 
						
							
							
								
								Handle multiple virtual register definitions gracefully.  
							
							 
							
							... 
							
							
							
							Move some of the longer LiveIntervals::Interval method out of the
header and add debug information to them. Fix bug and simplify range
merging code.
llvm-svn: 10509 
							
						 
						
							2003-12-18 08:48:48 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								8870674da7 
								
							 
						 
						
							
							
								
								Change preserve all claim to just preserve live variables and phielimination.  
							
							 
							
							... 
							
							
							
							llvm-svn: 10469 
							
						 
						
							2003-12-15 04:55:38 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								aaba4639f8 
								
							 
						 
						
							
							
								
								Change interface of MachineOperand as follows:  
							
							 
							
							... 
							
							
							
							a) remove opIsUse(), opIsDefOnly(), opIsDefAndUse()
    b) add isUse(), isDef()
    c) rename opHiBits32() to isHiBits32(),
              opLoBits32() to isLoBits32(),
              opHiBits64() to isHiBits64(),
              opLoBits64() to isLoBits64().
This results to much more readable code, for example compare
"op.opIsDef() || op.opIsDefAndUse()" to "op.isDef()" a pattern used
very often in the code.
llvm-svn: 10461 
							
						 
						
							2003-12-14 13:24:17 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								7dbdf3839c 
								
							 
						 
						
							
							
								
								Ignore non-allocatable physical registers in live interval analysis.  
							
							 
							
							... 
							
							
							
							llvm-svn: 10449 
							
						 
						
							2003-12-13 11:11:02 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								06f379a278 
								
							 
						 
						
							
							
								
								Handle explicit physical register defs.  
							
							 
							
							... 
							
							
							
							llvm-svn: 10445 
							
						 
						
							2003-12-13 05:26:39 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								2de099e54f 
								
							 
						 
						
							
							
								
								Move operator<<(std::ostream&, const LiveInterval&) out of the header file.  
							
							 
							
							... 
							
							
							
							llvm-svn: 10290 
							
						 
						
							2003-12-05 10:38:28 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								ed28ca93ef 
								
							 
						 
						
							
							
								
								Sort live intervals by increasing start point.  
							
							 
							
							... 
							
							
							
							llvm-svn: 10289 
							
						 
						
							2003-12-05 10:32:01 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								0e9ded74c0 
								
							 
						 
						
							
							
								
								Merging the linear scan register allocator in trunk. It currently passes most tests under test/Programs/SingleSource/Benchmarks/Shootout so development will continue on trunk. The allocator is not enabled by default. You will need to pass -regallo=linearscan to lli or llc to use it.  
							
							 
							
							... 
							
							
							
							llvm-svn: 10103 
							
						 
						
							2003-11-20 03:32:25 +00:00