Dan Gohman 
							
						 
					 
					
						
						
							
						
						2ff7fd1461 
					 
					
						
						
							
							Refactor X86SelectConstAddr, folding it into X86SelectAddress. This  
						
						... 
						
						
						
						results in better code for globals. Also, unbreak the local CSE for
GlobalValue stub loads.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56371  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-19 22:16:54 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						3589308f37 
					 
					
						
						
							
							Address-mode folding for X86FastISel. It's pretty basic, but it  
						
						... 
						
						
						
						catches a fair number of common cases. Note that this currently
causes Fast-ISel to leave behind lots of dead instructions.
Those will be dealt with in subsequent commits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56320  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-18 23:23:44 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						1fbc3cd674 
					 
					
						
						
							
							Simplify this code. The FastISel class has its own TD member.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56311  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-18 18:26:43 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						b5b6ec6488 
					 
					
						
						
							
							FastISel: For calls, prefer using the callee's address as a constant  
						
						... 
						
						
						
						over having it in a register. And wait until after checking type
legality before requesting that the callee address be placed in a
register. Also, fix support for calls with void return type.
This speeds up fast-isel isel time by about 15% and reduces
instruction counts by about 3% overall on certain testcases. It also
changes many indirect calls to direct calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56292  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-17 21:18:49 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						ac34a00fe0 
					 
					
						
						
							
							Fix a bug in ANY_EXTEND handling that was breaking 403.gcc on X86-64 in fast isel.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56117  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-11 19:44:55 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						b63691350d 
					 
					
						
						
							
							If ISD::ANY_EXTEND fails, try ISD::ZERO_EXTEND and ISD::SIGN_EXTEND before giving up.  This fixes 445.gobmk on  
						
						... 
						
						
						
						X86-64 in fast isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56088  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-11 02:41:37 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						78efce6155 
					 
					
						
						
							
							X86FastISel support for double->float and float->double casts.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56070  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-10 21:02:08 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						0586d91bb3 
					 
					
						
						
							
							Add X86FastISel support for static allocas, and refences  
						
						... 
						
						
						
						to static allocas. As part of this change, refactor the
address mode code for laods and stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56066  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-10 20:11:02 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						59fbc80f6b 
					 
					
						
						
							
							Fix a constant lowering bug. Now we can do load and store instructions with funky getelementptr embedded in the address operand.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55975  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-09 01:26:59 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						debdea0a66 
					 
					
						
						
							
							Handle calls which produce i1 results: promote to i8 but and it with 1 to get the low bit.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55925  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-08 17:15:42 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						863890e2fa 
					 
					
						
						
							
							Fix copy+pastos in comments.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55918  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-08 16:31:35 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						24e3a90904 
					 
					
						
						
							
							Add support to extend call operands when needed. Enable x86 fastisel call support.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55891  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-08 06:35:17 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						f3d4efe30c 
					 
					
						
						
							
							Initial fastisel call support for C, Fast, and X86_FastCall calling conventions. It's meant to handle "simple" calls, i.e. no byval, structret, etc. It doesn't support multi-result returns either.  
						
						... 
						
						
						
						Not yet turned on, it needs to support sext / zext of arguments and result.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55882  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-07 09:09:33 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						10a8d9c737 
					 
					
						
						
							
							Handle x86 truncate to i8 with target hook for now.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55877  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-07 08:47:42 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						3b217c6f5c 
					 
					
						
						
							
							Fix constant pool loads, and remove broken versions of addConstantPoolReference.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55868  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-06 01:11:01 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						f58cb6d224 
					 
					
						
						
							
							Fix X86FastISel's shift and select code to reject illegal types.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55857  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-05 21:27:34 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						31d26912cc 
					 
					
						
						
							
							Fix the opcodes used by X86FastISel for shifts and conditional moves.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55855  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-05 21:13:04 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						0de588fd89 
					 
					
						
						
							
							Factor out code that emits load and store instructions.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55854  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-05 21:00:03 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						9c7216f984 
					 
					
						
						
							
							Rename method.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55853  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-05 20:49:33 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						c39f4dba1c 
					 
					
						
						
							
							X86FastISel support for shifts and conditional moves.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55844  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-05 18:30:08 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						4f22bb0676 
					 
					
						
						
							
							Check a comparion's operand type for legality before  
						
						... 
						
						
						
						expanding its operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55820  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-05 01:33:56 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						f52550b50e 
					 
					
						
						
							
							Fix X86FastISel code for comparisons and conditional branches  
						
						... 
						
						
						
						to check the result of getRegForValue before using it, and
to check for illegal operand types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55819  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-05 01:15:35 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						d89ae99ec8 
					 
					
						
						
							
							X86FastISel support for conditional branches.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55816  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-05 01:06:14 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						95267a1e67 
					 
					
						
						
							
							Add initial support for selecting constant materializations that require constant  
						
						... 
						
						
						
						pool loads on X86 in fast isel.  This isn't actually used yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55814  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-05 00:06:23 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						6e3f05f5ce 
					 
					
						
						
							
							X86FastISel support for ICmpInst and FCmpInst.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55811  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-04 23:26:51 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						79924eb6f5 
					 
					
						
						
							
							Fix the ordering of operands to the store (inverted relative to LLVM IR), and fix the testcase.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55777  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-04 16:48:33 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						a3971dfbfe 
					 
					
						
						
							
							Add a first attempt at implementing stores for X86 fast isel using target hooks.  
						
						... 
						
						
						
						Dan or Evan, please review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55764  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-04 07:08:58 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						373d50af1d 
					 
					
						
						
							
							Load from GV stub should be locally CSE'd.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55763  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-04 06:18:33 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						3df24e667f 
					 
					
						
						
							
							Create HandlePHINodesInSuccessorBlocksFast, a version of  
						
						... 
						
						
						
						HandlePHINodesInSuccessorBlocks that works FastISel-style. This
allows PHI nodes to be updated correctly while using FastISel.
This also involves some code reorganization; ValueMap and
MBBMap are now members of the FastISel class, so they needn't
be passed around explicitly anymore. Also, SelectInstructions
is changed to SelectInstruction, and only does one instruction
at a time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55746  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-03 23:12:08 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						8b19e56051 
					 
					
						
						
							
							Add X86 target hook to implement load (even from GlobalAddress).  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55693  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-03 06:44:39 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						88e3041ca6 
					 
					
						
						
							
							Unbreak fast isel.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55685  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-03 01:04:47 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						c3f44b0d63 
					 
					
						
						
							
							Let tblgen only generate fastisel routines, not the class definition. This makes it easier for targets to define its own fastisel class.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55679  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-03 00:03:49 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						667d8f7607 
					 
					
						
						
							
							Add initial support for fast isel of instructions that have inputs pinned to physical registers.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55545  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-08-29 17:45:56 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						99b218218c 
					 
					
						
						
							
							Add a target callback for FastISel.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55512  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-08-28 23:21:34 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						22bb31103d 
					 
					
						
						
							
							Factor out the predicate check code from DAGISelEmitter.cpp  
						
						... 
						
						
						
						and use it in FastISelEmitter.cpp, and make FastISel
subtarget aware. Among other things, this lets it work
properly on x86 targets that don't have SSE, where it
successfully selects x87 instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55156  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-08-22 00:20:26 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						1adf1b03af 
					 
					
						
						
							
							Instantiate FastISel for X86.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55011  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-08-19 21:45:35 +00:00