Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								80ef880b98 
								
							 
						 
						
							
							
								
								Insert empty slots into the instruction numbering in live intervals, so that we can more easily  
							
							 
							
							... 
							
							
							
							add new instructions.
llvm-svn: 52475 
							
						 
						
							2008-06-19 00:10:49 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								f873ed1b10 
								
							 
						 
						
							
							
								
								Live-through live interval is [mbb start, mbb end+1].  
							
							 
							
							... 
							
							
							
							llvm-svn: 52431 
							
						 
						
							2008-06-17 20:13:36 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								476e91ab75 
								
							 
						 
						
							
							
								
								Remove special case handling of empty MBBs now that we assign indices to them.  
							
							 
							
							... 
							
							
							
							llvm-svn: 52345 
							
						 
						
							2008-06-16 19:32:40 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								773b2d3ac3 
								
							 
						 
						
							
							
								
								Re-enable empty block indexing by default, since it doesn't seem to have any  
							
							 
							
							... 
							
							
							
							impact on code quality or compile time.
llvm-svn: 52329 
							
						 
						
							2008-06-16 16:58:24 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								e546c55e59 
								
							 
						 
						
							
							
								
								Make indexing empty basic blocks an option for the moment.  
							
							 
							
							... 
							
							
							
							llvm-svn: 52306 
							
						 
						
							2008-06-16 07:10:49 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								d813091cde 
								
							 
						 
						
							
							
								
								Assign indices to empty basic blocks.  This will be necessary for StrongPHIElimination in the near future.  
							
							 
							
							... 
							
							
							
							llvm-svn: 52300 
							
						 
						
							2008-06-16 06:18:41 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								6d7a144453 
								
							 
						 
						
							
							
								
								Refine stack slot interval weight computation.  
							
							 
							
							... 
							
							
							
							llvm-svn: 52040 
							
						 
						
							2008-06-06 07:54:39 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								35e2dfe1cf 
								
							 
						 
						
							
							
								
								Add a helper for constructing new live ranges that ended from an instruction to the end of its MBB.  
							
							 
							
							... 
							
							
							
							llvm-svn: 52012 
							
						 
						
							2008-06-05 17:15:43 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								12a0222a01 
								
							 
						 
						
							
							
								
								Add a stack slot coloring pass. Not yet enabled.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51934 
							
						 
						
							2008-06-04 09:18:41 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								0908deccc2 
								
							 
						 
						
							
							
								
								Correctly handle removed instructions at the beginning of MBBs when renumbering.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51876 
							
						 
						
							2008-06-02 17:36:36 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								82fc4cdafb 
								
							 
						 
						
							
							
								
								Make the renumbering correct in the face of deleted instructions that have been removed from the LiveIntervals maps.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51714 
							
						 
						
							2008-05-29 23:01:22 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								bf5b228c32 
								
							 
						 
						
							
							
								
								Remove <iostream>.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51704 
							
						 
						
							2008-05-29 21:29:39 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								d95dcd12c9 
								
							 
						 
						
							
							
								
								Revert part of my last patch that I didn't intend to commit yet.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51694 
							
						 
						
							2008-05-29 18:35:21 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								0178e95791 
								
							 
						 
						
							
							
								
								Renumbering needs to account for instruction slot offsets when performing lookups in the index maps.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51691 
							
						 
						
							2008-05-29 18:15:49 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								779b4180dc 
								
							 
						 
						
							
							
								
								Remap VNInfo data as well when doing renumbering.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51658 
							
						 
						
							2008-05-28 22:40:08 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								4f8e1ad32a 
								
							 
						 
						
							
							
								
								Factor the numbering computation into a separate method, and add the slightest attempt at some renumbering logic, which is currently unused.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51652 
							
						 
						
							2008-05-28 20:54:50 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								7c0db62a5e 
								
							 
						 
						
							
							
								
								Revert 51440 as it breaks a bunch of PIC tests.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51513 
							
						 
						
							2008-05-23 23:00:04 +00:00  
						
					 
				
					
						
							
							
								 
								David Greene
							
						 
						
							 
							
							
							
							
								
							
							
								830487035e 
								
							 
						 
						
							
							
								
								When rewriting defs and uses after spilling, don't set the weight of a  
							
							 
							
							... 
							
							
							
							live interval to infinity if the instruction being rewritten is an
original remat def instruction.  We were only checking against the clone
of the remat def which doesn't actually appear in the IR at all.
llvm-svn: 51440 
							
						 
						
							2008-05-22 21:16:33 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								c8b028daa4 
								
							 
						 
						
							
							
								
								Don't spill dead def.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51305 
							
						 
						
							2008-05-20 08:10:37 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								d78c400b5b 
								
							 
						 
						
							
							
								
								Clean up the use of static and anonymous namespaces. This turned up  
							
							 
							
							... 
							
							
							
							several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017 
							
						 
						
							2008-05-13 00:00:25 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								6a2da37c0e 
								
							 
						 
						
							
							
								
								Make several variable declarations static.  
							
							 
							
							... 
							
							
							
							llvm-svn: 50696 
							
						 
						
							2008-05-06 01:53:16 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								8dc8a8d8af 
								
							 
						 
						
							
							
								
								Empty basic block should have an empty range.  
							
							 
							
							... 
							
							
							
							llvm-svn: 49800 
							
						 
						
							2008-04-16 18:01:08 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								499ffa9055 
								
							 
						 
						
							
							
								
								Use of implicit_def is not part of live interval. Create empty intervals for the uses when the live interval is being spilled.  
							
							 
							
							... 
							
							
							
							llvm-svn: 49542 
							
						 
						
							2008-04-11 17:53:36 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								c8eeb752a3 
								
							 
						 
						
							
							
								
								- More aggressively coalescing away copies whose source is defined by an implicit_def.  
							
							 
							
							... 
							
							
							
							- Added insert_subreg coalescing support.
llvm-svn: 49448 
							
						 
						
							2008-04-09 20:57:25 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								20aed56504 
								
							 
						 
						
							
							
								
								- Treat a live range defined by an implicit_def as a zero-sized one.  
							
							 
							
							... 
							
							
							
							- Eliminate an implicit_def when it's being spilled.
llvm-svn: 49166 
							
						 
						
							2008-04-03 16:39:43 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								985a0b51d7 
								
							 
						 
						
							
							
								
								Re-materialization is for uses only.  
							
							 
							
							... 
							
							
							
							llvm-svn: 49053 
							
						 
						
							2008-04-01 21:37:32 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e4f77c69ac 
								
							 
						 
						
							
							
								
								It's not safe to fold a load from GV stub or constantpool into a two-address use.  
							
							 
							
							... 
							
							
							
							llvm-svn: 49002 
							
						 
						
							2008-03-31 23:19:51 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								73d7c3bfba 
								
							 
						 
						
							
							
								
								The support for remat of instructions with a register operand is hackish, to say the least. Since the register operand guaranteed to be PIC base and that it is already live at all uses, we are making sure it will not be spilled after its uses are rematerialized for both performance and correctness reasons.  
							
							 
							
							... 
							
							
							
							llvm-svn: 48976 
							
						 
						
							2008-03-31 07:53:30 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								ec7533b620 
								
							 
						 
						
							
							
								
								Remove isImplicitDef TargetInstrDesc flag.  
							
							 
							
							... 
							
							
							
							llvm-svn: 48381 
							
						 
						
							2008-03-15 00:19:36 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								a3891365b5 
								
							 
						 
						
							
							
								
								Transfer physical register spill info when load / store folding happens.  
							
							 
							
							... 
							
							
							
							llvm-svn: 48246 
							
						 
						
							2008-03-11 21:34:46 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e88a625ecd 
								
							 
						 
						
							
							
								
								When the register allocator runs out of registers, spill a physical register around the def's and use's of the interval being allocated to make it possible for the interval to target a register and spill it right away and restore a register for uses. This likely generates terrible code but is before than aborting.  
							
							 
							
							... 
							
							
							
							llvm-svn: 48218 
							
						 
						
							2008-03-11 07:19:34 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								6325446666 
								
							 
						 
						
							
							
								
								Refactor code. Remove duplicated functions that basically do the same thing as  
							
							 
							
							... 
							
							
							
							findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.
llvm-svn: 47927 
							
						 
						
							2008-03-05 00:59:57 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								6d56368caf 
								
							 
						 
						
							
							
								
								Spiller now remove unused spill slots.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47657 
							
						 
						
							2008-02-27 03:04:06 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								d7a258d325 
								
							 
						 
						
							
							
								
								Rename PrintableName to Name.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47629 
							
						 
						
							2008-02-26 21:47:57 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								c24ea4fb41 
								
							 
						 
						
							
							
								
								Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool  
							
							 
							
							... 
							
							
							
							would have been a Godsend here!
llvm-svn: 47625 
							
						 
						
							2008-02-26 21:11:01 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								548677022c 
								
							 
						 
						
							
							
								
								All remat'ed loads cannot be folded into two-address code. Not just argument loads. This change doesn't really have any impact on codegen.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47557 
							
						 
						
							2008-02-25 19:24:01 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								589a9fb6dc 
								
							 
						 
						
							
							
								
								Correctly determine whether a argument load can be folded into its uses.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47545 
							
						 
						
							2008-02-25 08:50:41 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								504c645b3e 
								
							 
						 
						
							
							
								
								Rematerialization logic was overly conservative when it comes to loads from fixed stack slots.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47529 
							
						 
						
							2008-02-23 03:38:34 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								379682b0e5 
								
							 
						 
						
							
							
								
								If remating a machine instr with virtual register operand, make sure the vr is avaliable at all uses regardless of whether it would be folded.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47526 
							
						 
						
							2008-02-23 02:14:42 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e70afb021b 
								
							 
						 
						
							
							
								
								Recognize loads of arguments as re-materializable first. Therefore if isReallyTriviallyReMaterializable() returns true it doesn't confuse it as a "normal" re-materializable instruction.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47520 
							
						 
						
							2008-02-23 01:44:27 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								4f5cb4cdac 
								
							 
						 
						
							
							
								
								Fix spill weight updating bug.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47507 
							
						 
						
							2008-02-23 00:33:04 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								c373911461 
								
							 
						 
						
							
							
								
								Enable re-materialization of instructions which have virtual register operands if  
							
							 
							
							... 
							
							
							
							the definition of the operand also reaches its uses.
llvm-svn: 47475 
							
						 
						
							2008-02-22 09:24:50 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								911f6bd799 
								
							 
						 
						
							
							
								
								Clean up some spilling code using MachineRegisterInfo.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47416 
							
						 
						
							2008-02-21 00:34:19 +00:00  
						
					 
				
					
						
							
							
								 
								Roman Levenstein
							
						 
						
							 
							
							
							
							
								
							
							
								0b2c8858df 
								
							 
						 
						
							
							
								
								New helper function getMBBFromIndex() that given an index in any instruction of an MBB returns a pointer the MBB. Reviewed by Evan.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47267 
							
						 
						
							2008-02-18 09:35:30 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								2ff2da89ab 
								
							 
						 
						
							
							
								
								- Removing the infamous r2rMap_ and rep() method. Now the coalescer will update  
							
							 
							
							... 
							
							
							
							register defs and uses after each successful coalescing.
- Also removed a number of hacks and fixed some subtle kill information bugs.
llvm-svn: 47167 
							
						 
						
							2008-02-15 18:24:29 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								bb4b97f90e 
								
							 
						 
						
							
							
								
								Fix a potential serious problem where kills belonging to the val# defined by a two-address instruction is also on the val# that defines the input.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47057 
							
						 
						
							2008-02-13 09:06:18 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3a4be0fdef 
								
							 
						 
						
							
							
								
								Rename MRegisterInfo to TargetRegisterInfo.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46930 
							
						 
						
							2008-02-10 18:45:23 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								f2bd1387b0 
								
							 
						 
						
							
							
								
								Forgot these files.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46896 
							
						 
						
							2008-02-08 22:05:27 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								2a8a485630 
								
							 
						 
						
							
							
								
								Move some functionality for adding flags to MachineInstr's into methods on MachineInstr rather than LiveVariables.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46295 
							
						 
						
							2008-01-24 01:10:07 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								f2553ab84f 
								
							 
						 
						
							
							
								
								Only remat loads from immutable stack slots.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45831 
							
						 
						
							2008-01-10 08:24:38 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								8b03bafd37 
								
							 
						 
						
							
							
								
								Simplify some code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45830 
							
						 
						
							2008-01-10 08:22:10 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								d445b8813f 
								
							 
						 
						
							
							
								
								Don't use LiveVariables::VarInfo::DefInst.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45815 
							
						 
						
							2008-01-10 03:12:54 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								03ad885039 
								
							 
						 
						
							
							
								
								rename TargetInstrDescriptor -> TargetInstrDesc.  
							
							 
							
							... 
							
							
							
							Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.
llvm-svn: 45695 
							
						 
						
							2008-01-07 07:27:27 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								769c86bf63 
								
							 
						 
						
							
							
								
								simplify some code using new predicates  
							
							 
							
							... 
							
							
							
							llvm-svn: 45689 
							
						 
						
							2008-01-07 05:40:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a98c679de0 
								
							 
						 
						
							
							
								
								Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects  
							
							 
							
							... 
							
							
							
							that it is cheap and efficient to get.
Move a variety of predicates from TargetInstrInfo into 
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around.  Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.
Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.
llvm-svn: 45674 
							
						 
						
							2008-01-07 01:56:04 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								0ec92e9d64 
								
							 
						 
						
							
							
								
								Update CodeGen for MRegisterInfo --> TargetInstrInfo changes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45673 
							
						 
						
							2008-01-07 01:35:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a4ce4f6987 
								
							 
						 
						
							
							
								
								rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45667 
							
						 
						
							2008-01-06 23:38:27 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								0c209430b4 
								
							 
						 
						
							
							
								
								Don't recalculate the loop info and loop dominators analyses if they're  
							
							 
							
							... 
							
							
							
							preserved.
llvm-svn: 45596 
							
						 
						
							2008-01-04 20:54:55 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a10fff51d9 
								
							 
						 
						
							
							
								
								Rename SSARegMap -> MachineRegisterInfo in keeping with the idea  
							
							 
							
							... 
							
							
							
							that "machine" classes are used to represent the current state of
the code being compiled.  Given this expanded name, we can start 
moving other stuff into it.  For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.
Update all the clients to match.
This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.
llvm-svn: 45467 
							
						 
						
							2007-12-31 04:13:23 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6005589faf 
								
							 
						 
						
							
							
								
								More cleanups for MachineOperand:  
							
							 
							
							... 
							
							
							
							- Eliminate the static "print" method for operands, moving it
    into MachineOperand::print.
  - Change various set* methods for register flags to take a bool
    for the value to set it to.  Remove unset* methods.
  - Group methods more logically by operand flavor in MachineOperand.h
llvm-svn: 45461 
							
						 
						
							2007-12-30 21:56:09 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f3ebc3f3d2 
								
							 
						 
						
							
							
								
								Remove attribution from file headers, per discussion on llvmdev.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45418 
							
						 
						
							2007-12-29 20:36:04 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								6e68381e02 
								
							 
						 
						
							
							
								
								Implicit def instructions, e.g. X86::IMPLICIT_DEF_GR32, are always re-materializable and they should not be spilled.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44960 
							
						 
						
							2007-12-12 23:12:09 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								303417d242 
								
							 
						 
						
							
							
								
								Switch over to MachineLoopInfo.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44838 
							
						 
						
							2007-12-11 02:09:15 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								3f19dfe794 
								
							 
						 
						
							
							
								
								Reverting 44702. It wasn't correct to rename them.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44727 
							
						 
						
							2007-12-08 23:58:46 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								2b07d8c5a0 
								
							 
						 
						
							
							
								
								Renaming:  
							
							 
							
							... 
							
							
							
							isTriviallyReMaterializable -> hasNoSideEffects
  isReallyTriviallyReMaterializable -> isTriviallyReMaterializable
llvm-svn: 44702 
							
						 
						
							2007-12-08 07:17:56 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								8393dc7378 
								
							 
						 
						
							
							
								
								Turning simple splitting on. Start testing new coalescer heuristics as new llcbeta.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44660 
							
						 
						
							2007-12-06 08:54:31 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								7fc1d98353 
								
							 
						 
						
							
							
								
								Fix for PR1831: if all defs of an interval are re-materializable, then it's a preferred spill candiate.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44644 
							
						 
						
							2007-12-06 00:01:56 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								678b86d6ce 
								
							 
						 
						
							
							
								
								MachineInstr can change. Store indexes instead.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44612 
							
						 
						
							2007-12-05 10:24:35 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								06353b48b5 
								
							 
						 
						
							
							
								
								If a split live interval is spilled again, remove the kill marker on its last use.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44611 
							
						 
						
							2007-12-05 09:51:10 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								64b3baaaea 
								
							 
						 
						
							
							
								
								Clobber more bugs.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44610 
							
						 
						
							2007-12-05 09:05:34 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								d7de56ac93 
								
							 
						 
						
							
							
								
								Fix kill info for split intervals.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44609 
							
						 
						
							2007-12-05 08:16:32 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								269dbd31d0 
								
							 
						 
						
							
							
								
								- Mark last use of a split interval as kill instead of letting spiller track it.  
							
							 
							
							... 
							
							
							
							This allows an important optimization to be re-enabled.
- If all uses / defs of a split interval can be folded, give the interval a
  low spill weight so it would not be picked in case spilling is needed (avoid
  pushing other intervals in the same BB to be spilled).
llvm-svn: 44601 
							
						 
						
							2007-12-05 03:22:34 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								d1badb960e 
								
							 
						 
						
							
							
								
								Discard split intervals made empty due to folding.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44565 
							
						 
						
							2007-12-04 00:32:23 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								196faa9dc5 
								
							 
						 
						
							
							
								
								Typo  
							
							 
							
							... 
							
							
							
							llvm-svn: 44532 
							
						 
						
							2007-12-03 10:00:00 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								85ef9834a6 
								
							 
						 
						
							
							
								
								Update kill info for uses of split intervals.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44531 
							
						 
						
							2007-12-03 09:58:48 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								f45a1d623c 
								
							 
						 
						
							
							
								
								Remove redundant foldMemoryOperand variants and other code clean up.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44517 
							
						 
						
							2007-12-02 08:30:39 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								388f6f51a0 
								
							 
						 
						
							
							
								
								Fix a bug where splitting cause some unnecessary spilling.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44482 
							
						 
						
							2007-12-01 04:42:39 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								69fda0a716 
								
							 
						 
						
							
							
								
								Allow some reloads to be folded in multi-use cases. Specifically testl r, r -> cmpl [mem], 0.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44479 
							
						 
						
							2007-12-01 02:07:52 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								b10dc27b20 
								
							 
						 
						
							
							
								
								Do not fold reload into an instruction with multiple uses. It issues one extra load.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44467 
							
						 
						
							2007-11-30 21:23:43 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								d35b5acae4 
								
							 
						 
						
							
							
								
								Do not lose rematerialization info when spilling already split live intervals.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44443 
							
						 
						
							2007-11-29 23:02:50 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								8494ee175c 
								
							 
						 
						
							
							
								
								Fix a major performance issue with splitting. If there is a def (not def/use)  
							
							 
							
							... 
							
							
							
							in the middle of a split basic block, create a new live interval starting at
the def. This avoid artifically extending the live interval over a number of
cycles where it is dead. e.g.
bb1:
       = vr1204   (use / kill) <= new interval starts and ends here.
...
...
vr1204 =          (new def)   <= start a new interval here.
       = vr1204   (use)
llvm-svn: 44436 
							
						 
						
							2007-11-29 10:12:14 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								f85c063ec0 
								
							 
						 
						
							
							
								
								Replace the odd kill# hack with something less fragile.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44434 
							
						 
						
							2007-11-29 09:49:23 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								be255b0650 
								
							 
						 
						
							
							
								
								Fixed various live interval splitting bugs / compile time issues.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44428 
							
						 
						
							2007-11-29 01:06:25 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								c1648b6a0d 
								
							 
						 
						
							
							
								
								Recover compile time regression.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44386 
							
						 
						
							2007-11-28 01:28:46 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								8e22379303 
								
							 
						 
						
							
							
								
								Live interval splitting:  
							
							 
							
							... 
							
							
							
							When a live interval is being spilled, rather than creating short, non-spillable
intervals for every def / use, split the interval at BB boundaries. That is, for
every BB where the live interval is defined or used, create a new interval that
covers all the defs and uses in the BB.
This is designed to eliminate one common problem: multiple reloads of the same
value in a single basic block. Note, it does *not* decrease the number of spills
since no copies are inserted so the split intervals are *connected* through
spill and reloads (or rematerialization). The newly created intervals can be
spilled again, in that case, since it does not span multiple basic blocks, it's
spilled in the usual manner. However, it can reuse the same stack slot as the
previously split interval.
This is currently controlled by -split-intervals-at-bb.
llvm-svn: 44198 
							
						 
						
							2007-11-17 00:40:40 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								2c1a50455c 
								
							 
						 
						
							
							
								
								Fix a thinko in post-allocation coalescer.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44166 
							
						 
						
							2007-11-15 08:13:29 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								7f02cfa599 
								
							 
						 
						
							
							
								
								Clean up sub-register implementation by moving subReg information back to  
							
							 
							
							... 
							
							
							
							MachineOperand auxInfo. Previous clunky implementation uses an external map
to track sub-register uses. That works because register allocator uses
a new virtual register for each spilled use. With interval splitting (coming
soon), we may have multiple uses of the same register some of which are
of using different sub-registers from others. It's too fragile to constantly
update the information.
llvm-svn: 44104 
							
						 
						
							2007-11-14 07:59:08 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								be51f28e2b 
								
							 
						 
						
							
							
								
								Refactor some code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44010 
							
						 
						
							2007-11-12 06:35:08 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e742ee1dbe 
								
							 
						 
						
							
							
								
								Simplify my (il)logic.  
							
							 
							
							... 
							
							
							
							llvm-svn: 43819 
							
						 
						
							2007-11-07 08:08:25 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								dd71a5c37b 
								
							 
						 
						
							
							
								
								When the allocator rewrite a spill register with new virtual register, it replaces other operands of the same register. Watch out for situations where  
							
							 
							
							... 
							
							
							
							only some of the operands are sub-register uses.
llvm-svn: 43776 
							
						 
						
							2007-11-06 21:12:10 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								92d23e5204 
								
							 
						 
						
							
							
								
								Fix a bug where a def use operand isn't being detected as a sub-register use.  
							
							 
							
							... 
							
							
							
							llvm-svn: 43763 
							
						 
						
							2007-11-06 08:50:44 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								a8044084ac 
								
							 
						 
						
							
							
								
								Fix PR1187.  
							
							 
							
							... 
							
							
							
							llvm-svn: 43692 
							
						 
						
							2007-11-05 00:59:10 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								66298e226f 
								
							 
						 
						
							
							
								
								There are times when the coalescer would not coalesce away a copy but the copy  
							
							 
							
							... 
							
							
							
							can be eliminated by the allocator is the destination and source targets the
same register. The most common case is when the source and destination registers
are in different class. For example, on x86 mov32to32_ targets GR32_ which
contains a subset of the registers in GR32.
The allocator can do 2 things:
1. Set the preferred allocation for the destination of a copy to that of its source.
2. After allocation is done, change the allocation of a copy destination (if
   legal) so the copy can be eliminated.
This eliminates 443 extra moves from 403.gcc.
llvm-svn: 43662 
							
						 
						
							2007-11-03 07:20:12 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								0dde6e5761 
								
							 
						 
						
							
							
								
								Apply Chris' suggestions.  
							
							 
							
							... 
							
							
							
							llvm-svn: 43069 
							
						 
						
							2007-10-17 06:53:44 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								8b8c7c9927 
								
							 
						 
						
							
							
								
								Clean up code that calculate MBB live-in's.  
							
							 
							
							... 
							
							
							
							llvm-svn: 43060 
							
						 
						
							2007-10-17 02:10:22 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								1410b8512c 
								
							 
						 
						
							
							
								
								Did mean to leave this in. INSERT_SUBREG isn't being coalesced yet.  
							
							 
							
							... 
							
							
							
							llvm-svn: 42916 
							
						 
						
							2007-10-12 17:16:50 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								aa2d6ef81d 
								
							 
						 
						
							
							
								
								EXTRACT_SUBREG coalescing support. The coalescer now treats EXTRACT_SUBREG like  
							
							 
							
							... 
							
							
							
							(almost) a register copy. However, it always coalesced to the register of the
RHS (the super-register). All uses of the result of a EXTRACT_SUBREG are sub-
register uses which adds subtle complications to load folding, spiller rewrite,
etc.
llvm-svn: 42899 
							
						 
						
							2007-10-12 08:50:34 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								21a58a72c5 
								
							 
						 
						
							
							
								
								Kill cycle of an live range is always the last use index + 1.  
							
							 
							
							... 
							
							
							
							llvm-svn: 42742 
							
						 
						
							2007-10-08 06:59:30 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								c731c97fac 
								
							 
						 
						
							
							
								
								Use empty() member functions when that's what's being tested for instead  
							
							 
							
							... 
							
							
							
							of comparing begin() and end().
llvm-svn: 42585 
							
						 
						
							2007-10-03 19:26:29 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								9da02f5ee2 
								
							 
						 
						
							
							
								
								Remove isReg, isImm, and isMBB, and change all their users to use  
							
							 
							
							... 
							
							
							
							isRegister, isImmediate, and isMachineBasicBlock, which are equivalent,
and more popular.
llvm-svn: 41958 
							
						 
						
							2007-09-14 20:33:02 +00:00