192d09c2d9 
								
							 
						 
						
							
							
								
								Do not assert, when case range split metric is zero and JTs are not allowed: just emit binary tree in this case. This  
							
							... 
							
							
							
							fixes PR1403.
llvm-svn: 36959 
							
						 
						
							2007-05-09 20:07:08 +00:00  
				
					
						
							
							
								 
						
							
								671e8c4444 
								
							 
						 
						
							
							
								
								Parameter attributes on invoke calls were being lost due to the wrong  
							
							... 
							
							
							
							attribute index being used.  Fix proposed by Anton Korobeynikov, who
asked me to implement and commit it for him.  This is PR1398.
llvm-svn: 36906 
							
						 
						
							2007-05-07 20:49:28 +00:00  
				
					
						
							
							
								 
						
							
								a8fd7fdc25 
								
							 
						 
						
							
							
								
								Detabify  
							
							... 
							
							
							
							llvm-svn: 36891 
							
						 
						
							2007-05-06 20:14:21 +00:00  
				
					
						
							
							
								 
						
							
								4cb9eb81ef 
								
							 
						 
						
							
							
								
								A bitcast of a global variable may have been constant folded to a GEP -  
							
							... 
							
							
							
							handle this case too.
llvm-svn: 36745 
							
						 
						
							2007-05-04 17:12:26 +00:00  
				
					
						
							
							
								 
						
							
								8c78a0bff0 
								
							 
						 
						
							
							
								
								Drop 'const'  
							
							... 
							
							
							
							llvm-svn: 36662 
							
						 
						
							2007-05-03 01:11:54 +00:00  
				
					
						
							
							
								 
						
							
								11940fbba3 
								
							 
						 
						
							
							
								
								Properly set arguments bitwidth of EHSELECT node  
							
							... 
							
							
							
							llvm-svn: 36654 
							
						 
						
							2007-05-02 22:15:48 +00:00  
				
					
						
							
							
								 
						
							
								e95c6ad802 
								
							 
						 
						
							
							
								
								Use 'static const char' instead of 'static const int'.  
							
							... 
							
							
							
							Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.
llvm-svn: 36652 
							
						 
						
							2007-05-02 21:39:20 +00:00  
				
					
						
							
							
								 
						
							
								09f162ca6a 
								
							 
						 
						
							
							
								
								Do not use typeinfo to identify pass in pass manager.  
							
							... 
							
							
							
							llvm-svn: 36632 
							
						 
						
							2007-05-01 21:15:47 +00:00  
				
					
						
							
							
								 
						
							
								8cfd33b647 
								
							 
						 
						
							
							
								
								Continue refactoring inline asm code.  If there is an earlyclobber output  
							
							... 
							
							
							
							register, preallocate all input registers and the early clobbered output.
This fixes PR1357 and CodeGen/PowerPC/2007-04-30-InlineAsmEarlyClobber.ll
llvm-svn: 36599 
							
						 
						
							2007-04-30 21:11:17 +00:00  
				
					
						
							
							
								 
						
							
								4333f8b1cf 
								
							 
						 
						
							
							
								
								refactor GetRegistersForValue to take OpInfo as an argument instead of various  
							
							... 
							
							
							
							pieces of it.  No functionality change.
llvm-svn: 36592 
							
						 
						
							2007-04-30 17:29:31 +00:00  
				
					
						
							
							
								 
						
							
								ef07332504 
								
							 
						 
						
							
							
								
								refactor some code, no functionality change  
							
							... 
							
							
							
							llvm-svn: 36590 
							
						 
						
							2007-04-30 17:16:27 +00:00  
				
					
						
							
							
								 
						
							
								412d61af43 
								
							 
						 
						
							
							
								
								generalize aggregate handling  
							
							... 
							
							
							
							llvm-svn: 36568 
							
						 
						
							2007-04-29 18:58:03 +00:00  
				
					
						
							
							
								 
						
							
								401d8db381 
								
							 
						 
						
							
							
								
								memory operands that have a direct operand should have their stores created  
							
							... 
							
							
							
							before the copies into physregs are done.  This avoids having flag operands
skip the store, causing cycles in the dag at sched time.  This fixes infinite
loops on these tests:
test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll for PR1308
test/CodeGen/PowerPC/2007-01-29-lbrx-asm.ll
test/CodeGen/PowerPC/2007-01-31-InlineAsmAddrMode.ll
test/CodeGen/X86/2006-07-12-InlineAsmQConstraint.ll for PR828
llvm-svn: 36547 
							
						 
						
							2007-04-28 21:12:06 +00:00  
				
					
						
							
							
								 
						
							
								de339fa55d 
								
							 
						 
						
							
							
								
								eliminate more redundant constraint type analysis  
							
							... 
							
							
							
							llvm-svn: 36546 
							
						 
						
							2007-04-28 21:03:16 +00:00  
				
					
						
							
							
								 
						
							
								b2e55562ed 
								
							 
						 
						
							
							
								
								merge constraint type analysis stuff together.  
							
							... 
							
							
							
							llvm-svn: 36545 
							
						 
						
							2007-04-28 21:01:43 +00:00  
				
					
						
							
							
								 
						
							
								d7e3b6c442 
								
							 
						 
						
							
							
								
								Significant refactoring of the inline asm stuff, to support future changes.  
							
							... 
							
							
							
							No functionality change.
llvm-svn: 36544 
							
						 
						
							2007-04-28 20:49:53 +00:00  
				
					
						
							
							
								 
						
							
								1deacd61f4 
								
							 
						 
						
							
							
								
								memory inputs to an inline asm are required to have an address available.  
							
							... 
							
							
							
							If the operand is not already an indirect operand, spill it to a constant
pool entry or a stack slot.
This fixes PR1356 and CodeGen/X86/2007-04-27-InlineAsm-IntMemInput.ll
llvm-svn: 36536 
							
						 
						
							2007-04-28 06:42:38 +00:00  
				
					
						
							
							
								 
						
							
								d102ed0ac6 
								
							 
						 
						
							
							
								
								Fix CodeGen/Generic/2007-04-27-LargeMemObject.ll and  
							
							... 
							
							
							
							CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll
llvm-svn: 36534 
							
						 
						
							2007-04-28 06:08:13 +00:00  
				
					
						
							
							
								 
						
							
								4df3e8093b 
								
							 
						 
						
							
							
								
								Fix this to match change to InlineAsm class.  
							
							... 
							
							
							
							llvm-svn: 36524 
							
						 
						
							2007-04-28 04:05:59 +00:00  
				
					
						
							
							
								 
						
							
								784fe9dbbb 
								
							 
						 
						
							
							
								
								improve EH global handling, patch by Duncan Sands.  
							
							... 
							
							
							
							llvm-svn: 36499 
							
						 
						
							2007-04-27 01:20:11 +00:00  
				
					
						
							
							
								 
						
							
								8131ab7c0f 
								
							 
						 
						
							
							
								
								enable Anton's shift/and switch lowering stuff!  It now passes ppc bootstrap  
							
							... 
							
							
							
							successfully! woohoo...
llvm-svn: 36496 
							
						 
						
							2007-04-26 21:09:43 +00:00  
				
					
						
							
							
								 
						
							
								d7ae7f1659 
								
							 
						 
						
							
							
								
								Fixx off-by-one bug, which prevents llvm-gcc bootstrap on ppc32  
							
							... 
							
							
							
							llvm-svn: 36490 
							
						 
						
							2007-04-26 20:44:04 +00:00  
				
					
						
							
							
								 
						
							
								15f269afa3 
								
							 
						 
						
							
							
								
								This was lefted out. Fixed sumarray-dbl.  
							
							... 
							
							
							
							llvm-svn: 36445 
							
						 
						
							2007-04-25 18:33:21 +00:00  
				
					
						
							
							
								 
						
							
								cb0ed0cfbd 
								
							 
						 
						
							
							
								
								allow support for 64-bit stack objects  
							
							... 
							
							
							
							llvm-svn: 36420 
							
						 
						
							2007-04-25 04:08:28 +00:00  
				
					
						
							
							
								 
						
							
								47917b697f 
								
							 
						 
						
							
							
								
								Assertion when using a 1-element vector for an add operation. Get the  
							
							... 
							
							
							
							real vector type in this case.
llvm-svn: 36402 
							
						 
						
							2007-04-24 21:13:23 +00:00  
				
					
						
							
							
								 
						
							
								4cfa616cee 
								
							 
						 
						
							
							
								
								Use '-1U' where '-1UL' is obvious overkill, eliminating gcc warnings about  
							
							... 
							
							
							
							tests always being true in the process.
llvm-svn: 36387 
							
						 
						
							2007-04-24 01:24:20 +00:00  
				
					
						
							
							
								 
						
							
								8af6d5896f 
								
							 
						 
						
							
							
								
								PR400 phase 2. Propagate attributed load/store information through DAGs.  
							
							... 
							
							
							
							llvm-svn: 36356 
							
						 
						
							2007-04-22 23:15:30 +00:00  
				
					
						
							
							
								 
						
							
								0c1349e6bc 
								
							 
						 
						
							
							
								
								Revert Christopher Lamb's load/store alignment changes.  
							
							... 
							
							
							
							llvm-svn: 36309 
							
						 
						
							2007-04-21 18:36:27 +00:00  
				
					
						
							
							
								 
						
							
								bff50208c8 
								
							 
						 
						
							
							
								
								add support for alignment attributes on load/store instructions  
							
							... 
							
							
							
							llvm-svn: 36301 
							
						 
						
							2007-04-21 08:16:25 +00:00  
				
					
						
							
							
								 
						
							
								6bd7b7b30b 
								
							 
						 
						
							
							
								
								disable switch lowering using shift/and.  It still breaks ppc bootstrap for  
							
							... 
							
							
							
							some reason.  :(  Will investigate.
llvm-svn: 36011 
							
						 
						
							2007-04-14 19:39:41 +00:00  
				
					
						
							
							
								 
						
							
								8a1a84f96e 
								
							 
						 
						
							
							
								
								Fix PR1325: Case range optimization was performed in the case it  
							
							... 
							
							
							
							shouldn't. Also fix some "latent" bug on 64-bit platforms
llvm-svn: 35990 
							
						 
						
							2007-04-14 13:25:55 +00:00  
				
					
						
							
							
								 
						
							
								7196f09edc 
								
							 
						 
						
							
							
								
								disable shift/and lowering to work around PR1325 for now.  
							
							... 
							
							
							
							llvm-svn: 35985 
							
						 
						
							2007-04-14 02:26:56 +00:00  
				
					
						
							
							
								 
						
							
								e288040abf 
								
							 
						 
						
							
							
								
								Fix PR1323 : we haven't updated phi nodes in good manner :)  
							
							... 
							
							
							
							llvm-svn: 35963 
							
						 
						
							2007-04-13 06:53:51 +00:00  
				
					
						
							
							
								 
						
							
								5111499136 
								
							 
						 
						
							
							
								
								the result of an inline asm copy can be an arbitrary VT that the register  
							
							... 
							
							
							
							class supports.  In the case of vectors, this means we often get the wrong
type (e.g. we get v4f32 instead of v8i16).  Make sure to convert the vector
result to the right type.  This fixes CodeGen/X86/2007-04-11-InlineAsmVectorResult.ll
llvm-svn: 35944 
							
						 
						
							2007-04-12 06:00:20 +00:00  
				
					
						
							
							
								 
						
							
								c6251a7dfd 
								
							 
						 
						
							
							
								
								For PR1284:  
							
							... 
							
							
							
							Implement the "part_set" intrinsic.
llvm-svn: 35938 
							
						 
						
							2007-04-12 02:48:46 +00:00  
				
					
						
							
							
								 
						
							
								a472f66dd0 
								
							 
						 
						
							
							
								
								For PR1146:  
							
							... 
							
							
							
							Put the parameter attributes in their own ParamAttr name space. Adjust the
rest of llvm as a result.
llvm-svn: 35877 
							
						 
						
							2007-04-11 02:44:20 +00:00  
				
					
						
							
							
								 
						
							
								f269d84ca0 
								
							 
						 
						
							
							
								
								apparently some people commit without building the tree, or they forget to  
							
							... 
							
							
							
							commit a LOT of files.
llvm-svn: 35858 
							
						 
						
							2007-04-10 03:20:39 +00:00  
				
					
						
							
							
								 
						
							
								e0bbbd3774 
								
							 
						 
						
							
							
								
								No longer needed.  
							
							... 
							
							
							
							llvm-svn: 35850 
							
						 
						
							2007-04-09 23:42:32 +00:00  
				
					
						
							
							
								 
						
							
								da964a2852 
								
							 
						 
						
							
							
								
								Use integer log for metric calculation  
							
							... 
							
							
							
							llvm-svn: 35834 
							
						 
						
							2007-04-09 21:57:03 +00:00  
				
					
						
							
							
								 
						
							
								0475f3b4e9 
								
							 
						 
						
							
							
								
								Unbreak VC++ build.  
							
							... 
							
							
							
							llvm-svn: 35817 
							
						 
						
							2007-04-09 14:32:59 +00:00  
				
					
						
							
							
								 
						
							
								506eaf7915 
								
							 
						 
						
							
							
								
								Next stage into switch lowering refactoring  
							
							... 
							
							
							
							1. Fix some bugs in the jump table lowering threshold
2. Implement much better metric for optimal pivot selection
3. Tune thresholds for different lowering methods
4. Implement shift-and trick for lowering small (<machine word
length) cases with few destinations. Good testcase will follow.
llvm-svn: 35816 
							
						 
						
							2007-04-09 12:31:58 +00:00  
				
					
						
							
							
								 
						
							
								71b79e3d99 
								
							 
						 
						
							
							
								
								For PR1146:  
							
							... 
							
							
							
							Adapt handling of parameter attributes to use the new ParamAttrsList class.
llvm-svn: 35814 
							
						 
						
							2007-04-09 06:17:21 +00:00  
				
					
						
							
							
								 
						
							
								7b2decfa0a 
								
							 
						 
						
							
							
								
								implement CodeGen/X86/inline-asm-x-scalar.ll:test3  
							
							... 
							
							
							
							llvm-svn: 35802 
							
						 
						
							2007-04-09 05:31:20 +00:00  
				
					
						
							
							
								 
						
							
								b49917da92 
								
							 
						 
						
							
							
								
								Fix PR1316  
							
							... 
							
							
							
							llvm-svn: 35783 
							
						 
						
							2007-04-09 00:33:58 +00:00  
				
					
						
							
							
								 
						
							
								e55ecfb870 
								
							 
						 
						
							
							
								
								Fix for CodeGen/X86/2007-04-08-InlineAsmCrash.ll and PR1314  
							
							... 
							
							
							
							llvm-svn: 35779 
							
						 
						
							2007-04-08 22:23:26 +00:00  
				
					
						
							
							
								 
						
							
								1c741e95d3 
								
							 
						 
						
							
							
								
								minor comment fix  
							
							... 
							
							
							
							llvm-svn: 35696 
							
						 
						
							2007-04-06 17:47:14 +00:00  
				
					
						
							
							
								 
						
							
								85460acfbf 
								
							 
						 
						
							
							
								
								Change the bit_part_select (non)implementation from "return 0" to abort.  
							
							... 
							
							
							
							llvm-svn: 35679 
							
						 
						
							2007-04-05 01:20:18 +00:00  
				
					
						
							
							
								 
						
							
								cce90f55ed 
								
							 
						 
						
							
							
								
								Implement the llvm.bit.part_select.iN.iN.iN overloaded intrinsic.  
							
							... 
							
							
							
							llvm-svn: 35678 
							
						 
						
							2007-04-04 23:48:25 +00:00  
				
					
						
							
							
								 
						
							
								915e61736b 
								
							 
						 
						
							
							
								
								Properly emit range comparisons for switch cases, where neighbour cases  
							
							... 
							
							
							
							go to the same destination. Now we're producing really good code for
switch-lower-feature.ll testcase
llvm-svn: 35672 
							
						 
						
							2007-04-04 21:14:49 +00:00  
				
					
						
							
							
								 
						
							
								3a0843e734 
								
							 
						 
						
							
							
								
								For PR1297:  
							
							... 
							
							
							
							Adjust for changes in the bit counting intrinsics. They all return i32
now so we have to trunc/zext the DAG node accordingly.
llvm-svn: 35546 
							
						 
						
							2007-04-01 07:34:11 +00:00  
				
					
						
							
							
								 
						
							
								f6a6d3c8b0 
								
							 
						 
						
							
							
								
								move a bunch of code out of the sdisel pass into its own opt pass "codegenprepare".  
							
							... 
							
							
							
							llvm-svn: 35529 
							
						 
						
							2007-03-31 04:18:03 +00:00  
				
					
						
							
							
								 
						
							
								4388043b25 
								
							 
						 
						
							
							
								
								Scale 1 is always ok.  
							
							... 
							
							
							
							llvm-svn: 35407 
							
						 
						
							2007-03-28 01:55:52 +00:00  
				
					
						
							
							
								 
						
							
								07c42d43a2 
								
							 
						 
						
							
							
								
								GEP index sinking fixes:  
							
							... 
							
							
							
							1) Take address scale into consideration. e.g. i32* -> scale 4.
2) Examine all the users of GEP.
3) Generalize to inter-block GEP's (no longer uses loopinfo).
4) Don't do xform if GEP has other variable index(es).
llvm-svn: 35403 
							
						 
						
							2007-03-28 01:49:39 +00:00  
				
					
						
							
							
								 
						
							
								37a0bfe128 
								
							 
						 
						
							
							
								
								Remove dead code  
							
							... 
							
							
							
							llvm-svn: 35380 
							
						 
						
							2007-03-27 12:05:48 +00:00  
				
					
						
							
							
								 
						
							
								3a9d68181a 
								
							 
						 
						
							
							
								
								Split big monster into small helpers. No functionality change.  
							
							... 
							
							
							
							llvm-svn: 35379 
							
						 
						
							2007-03-27 11:29:11 +00:00  
				
					
						
							
							
								 
						
							
								c42406b5ad 
								
							 
						 
						
							
							
								
								SDISel does not preserve all, it changes CFG and other info.  
							
							... 
							
							
							
							llvm-svn: 35376 
							
						 
						
							2007-03-27 00:53:36 +00:00  
				
					
						
							
							
								 
						
							
								7037826c86 
								
							 
						 
						
							
							
								
								First step of switch lowering refactoring: perform worklist-driven  
							
							... 
							
							
							
							strategy, emit JT's where possible.
llvm-svn: 35338 
							
						 
						
							2007-03-25 15:07:15 +00:00  
				
					
						
							
							
								 
						
							
								77f0479833 
								
							 
						 
						
							
							
								
								Implement support for vector operands to inline asm, implementing  
							
							... 
							
							
							
							CodeGen/X86/2007-03-24-InlineAsmVectorOp.ll
llvm-svn: 35332 
							
						 
						
							2007-03-25 05:00:54 +00:00  
				
					
						
							
							
								 
						
							
								d685514e2e 
								
							 
						 
						
							
							
								
								switch TargetLowering::getConstraintType to take the entire constraint,  
							
							... 
							
							
							
							not just the first letter.  No functionality change.
llvm-svn: 35322 
							
						 
						
							2007-03-25 02:14:49 +00:00  
				
					
						
							
							
								 
						
							
								dcb291faa4 
								
							 
						 
						
							
							
								
								Change uses of Function::front to Function::getEntryBlock for readability.  
							
							... 
							
							
							
							llvm-svn: 35265 
							
						 
						
							2007-03-22 16:38:57 +00:00  
				
					
						
							
							
								 
						
							
								550cf0369c 
								
							 
						 
						
							
							
								
								Minor bug.  
							
							... 
							
							
							
							llvm-svn: 35219 
							
						 
						
							2007-03-20 19:32:11 +00:00  
				
					
						
							
							
								 
						
							
								a2465dfc07 
								
							 
						 
						
							
							
								
								Use SmallSet instead of std::set.  
							
							... 
							
							
							
							llvm-svn: 35133 
							
						 
						
							2007-03-17 08:53:30 +00:00  
				
					
						
							
							
								 
						
							
								be22235790 
								
							 
						 
						
							
							
								
								If sdisel has decided to sink GEP index expression into any BB. Replace all uses  
							
							... 
							
							
							
							in that BB.
llvm-svn: 35132 
							
						 
						
							2007-03-17 08:22:49 +00:00  
				
					
						
							
							
								 
						
							
								c5bc763f50 
								
							 
						 
						
							
							
								
								Turn on GEP index sinking by default.  
							
							... 
							
							
							
							llvm-svn: 35127 
							
						 
						
							2007-03-16 18:32:30 +00:00  
				
					
						
							
							
								 
						
							
								0a9d0cabaf 
								
							 
						 
						
							
							
								
								Stupid bug.  
							
							... 
							
							
							
							llvm-svn: 35126 
							
						 
						
							2007-03-16 17:50:20 +00:00  
				
					
						
							
							
								 
						
							
								009ea54262 
								
							 
						 
						
							
							
								
								Sink a binary expression into its use blocks if it is a loop invariant  
							
							... 
							
							
							
							computation used as GEP indexes and if the expression can be folded into
target addressing mode of GEP load / store use types.
llvm-svn: 35123 
							
						 
						
							2007-03-16 08:46:27 +00:00  
				
					
						
							
							
								 
						
							
								ce8aba03ee 
								
							 
						 
						
							
							
								
								implement support for floating point constants used as inline asm memory operands.  
							
							... 
							
							
							
							llvm-svn: 35033 
							
						 
						
							2007-03-08 22:29:47 +00:00  
				
					
						
							
							
								 
						
							
								b7bc3f2d30 
								
							 
						 
						
							
							
								
								make this fail even in non-assert builds.  
							
							... 
							
							
							
							llvm-svn: 35025 
							
						 
						
							2007-03-08 07:07:03 +00:00  
				
					
						
							
							
								 
						
							
								ed4b303c10 
								
							 
						 
						
							
							
								
								Refactoring of formal parameter flags. Enable properly use of  
							
							... 
							
							
							
							zext/sext/aext stuff.
llvm-svn: 35008 
							
						 
						
							2007-03-07 16:25:09 +00:00  
				
					
						
							
							
								 
						
							
								f0b9316552 
								
							 
						 
						
							
							
								
								Enumerate SDISel formal parameter attributes. Make use of new  
							
							... 
							
							
							
							enumeration.
llvm-svn: 34960 
							
						 
						
							2007-03-06 06:10:33 +00:00  
				
					
						
							
							
								 
						
							
								b622c11f77 
								
							 
						 
						
							
							
								
								Unbreak VC++ build.  
							
							... 
							
							
							
							llvm-svn: 34917 
							
						 
						
							2007-03-05 00:00:42 +00:00  
				
					
						
							
							
								 
						
							
								d5453d7b56 
								
							 
						 
						
							
							
								
								Lower eh filter intrinsic.  
							
							... 
							
							
							
							llvm-svn: 34802 
							
						 
						
							2007-03-01 20:24:30 +00:00  
				
					
						
							
							
								 
						
							
								cf465fcebc 
								
							 
						 
						
							
							
								
								MERGE_VALUES unnecessary.  
							
							... 
							
							
							
							llvm-svn: 34750 
							
						 
						
							2007-02-28 18:37:04 +00:00  
				
					
						
							
							
								 
						
							
								ab5d0ac02c 
								
							 
						 
						
							
							
								
								track signedness of formal argument, though we have a fixme here.  
							
							... 
							
							
							
							llvm-svn: 34620 
							
						 
						
							2007-02-26 02:56:58 +00:00  
				
					
						
							
							
								 
						
							
								14059d958a 
								
							 
						 
						
							
							
								
								Fix for PR1224.  
							
							... 
							
							
							
							llvm-svn: 34610 
							
						 
						
							2007-02-25 21:43:59 +00:00  
				
					
						
							
							
								 
						
							
								8c504cf9a0 
								
							 
						 
						
							
							
								
								optimize duplicate ValueMap lookups  
							
							... 
							
							
							
							llvm-svn: 34599 
							
						 
						
							2007-02-25 18:40:32 +00:00  
				
					
						
							
							
								 
						
							
								e1d1c0590f 
								
							 
						 
						
							
							
								
								Deal with cases when MMI is not requested.  
							
							... 
							
							
							
							llvm-svn: 34556 
							
						 
						
							2007-02-24 09:45:44 +00:00  
				
					
						
							
							
								 
						
							
								31fef788eb 
								
							 
						 
						
							
							
								
								Handle improper cast.  
							
							... 
							
							
							
							llvm-svn: 34535 
							
						 
						
							2007-02-23 21:45:01 +00:00  
				
					
						
							
							
								 
						
							
								44c37e7dbf 
								
							 
						 
						
							
							
								
								Tighten up error checking of args.  
							
							... 
							
							
							
							llvm-svn: 34493 
							
						 
						
							2007-02-22 16:10:05 +00:00  
				
					
						
							
							
								 
						
							
								504e99479c 
								
							 
						 
						
							
							
								
								Handle lowering invoke to call correctly.  
							
							... 
							
							
							
							llvm-svn: 34492 
							
						 
						
							2007-02-22 15:38:06 +00:00  
				
					
						
							
							
								 
						
							
								4b37a4c712 
								
							 
						 
						
							
							
								
								Selection and lowering for exception handling.  
							
							... 
							
							
							
							llvm-svn: 34481 
							
						 
						
							2007-02-21 22:53:45 +00:00  
				
					
						
							
							
								 
						
							
								09575bac2e 
								
							 
						 
						
							
							
								
								For PR1195:  
							
							... 
							
							
							
							Change use of "packed" term to "vector" in comments, strings, variable
names, etc.
llvm-svn: 34300 
							
						 
						
							2007-02-15 03:39:18 +00:00  
				
					
						
							
							
								 
						
							
								d84d35ba70 
								
							 
						 
						
							
							
								
								For PR1195:  
							
							... 
							
							
							
							Rename PackedType -> VectorType, ConstantPacked -> ConstantVector, and
PackedTyID -> VectorTyID. No functional changes.
llvm-svn: 34293 
							
						 
						
							2007-02-15 02:26:10 +00:00  
				
					
						
							
							
								 
						
							
								ab1812f806 
								
							 
						 
						
							
							
								
								fix a warning  
							
							... 
							
							
							
							llvm-svn: 34272 
							
						 
						
							2007-02-14 07:34:56 +00:00  
				
					
						
							
							
								 
						
							
								1cf84d2745 
								
							 
						 
						
							
							
								
								Refix CodeGen/Generic/switch-lower.ll.  In contrast to my previous patch,  
							
							... 
							
							
							
							this doesn't miscompile lots of programs :)
llvm-svn: 34268 
							
						 
						
							2007-02-14 07:18:16 +00:00  
				
					
						
							
							
								 
						
							
								945e437c65 
								
							 
						 
						
							
							
								
								Generalize TargetData strings, to support more interesting forms of data.  
							
							... 
							
							
							
							Patch by Scott Michel.
llvm-svn: 34266 
							
						 
						
							2007-02-14 05:52:17 +00:00  
				
					
						
							
							
								 
						
							
								2fbff4d2dc 
								
							 
						 
						
							
							
								
								revert my previous switch lowering change, which miscompiles a few programs.  
							
							... 
							
							
							
							This will break a dj test until I have time to investigate.
llvm-svn: 34247 
							
						 
						
							2007-02-13 20:09:07 +00:00  
				
					
						
							
							
								 
						
							
								abde3cc16c 
								
							 
						 
						
							
							
								
								Add a space between // and the comment.  
							
							... 
							
							
							
							llvm-svn: 34244 
							
						 
						
							2007-02-13 18:10:13 +00:00  
				
					
						
							
							
								 
						
							
								9956dcffbe 
								
							 
						 
						
							
							
								
								Add "original alignment" to function arguments flags.  
							
							... 
							
							
							
							llvm-svn: 34240 
							
						 
						
							2007-02-13 13:50:08 +00:00  
				
					
						
							
							
								 
						
							
								9056bae3be 
								
							 
						 
						
							
							
								
								Fix switch lowering to order cases in zext order, which is how we emit the  
							
							... 
							
							
							
							comparisons.  This fixes an infinite loop on CodeGen/Generic/switch-lower.ll
and PR1197
llvm-svn: 34216 
							
						 
						
							2007-02-13 01:05:56 +00:00  
				
					
						
							
							
								 
						
							
								c473d8e431 
								
							 
						 
						
							
							
								
								Privatize StructLayout::MemberOffsets, adding an accessor  
							
							... 
							
							
							
							llvm-svn: 34156 
							
						 
						
							2007-02-10 19:55:17 +00:00  
				
					
						
							
							
								 
						
							
								276b44b0f9 
								
							 
						 
						
							
							
								
								Add function live-ins to entry block live-in set.  
							
							... 
							
							
							
							llvm-svn: 34112 
							
						 
						
							2007-02-10 02:43:39 +00:00  
				
					
						
							
							
								 
						
							
								de6083463d 
								
							 
						 
						
							
							
								
								Rename some variables to avoid confusion with SelectionDAGISel::BB.  
							
							... 
							
							
							
							llvm-svn: 34110 
							
						 
						
							2007-02-10 01:08:18 +00:00  
				
					
						
							
							
								 
						
							
								289aa4495c 
								
							 
						 
						
							
							
								
								Switch VAlueMap from std::map to DenseMap.  
							
							... 
							
							
							
							llvm-svn: 33863 
							
						 
						
							2007-02-04 01:35:11 +00:00  
				
					
						
							
							
								 
						
							
								79084305ee 
								
							 
						 
						
							
							
								
								Switch NodeMap from std::map to DenseMap, this speeds up isel by 2.3%  
							
							... 
							
							
							
							llvm-svn: 33862 
							
						 
						
							2007-02-04 01:31:47 +00:00  
				
					
						
							
							
								 
						
							
								2341c22ec7 
								
							 
						 
						
							
							
								
								Changes to support making the shift instructions be true BinaryOperators.  
							
							... 
							
							
							
							This feature is needed in order to support shifts of more than 255 bits
on large integer types.  This changes the syntax for llvm assembly to
make shl, ashr and lshr instructions look like a binary operator:
   shl i32 %X, 1
instead of
   shl i32 %X, i8 1
Additionally, this should help a few passes perform additional optimizations.
llvm-svn: 33776 
							
						 
						
							2007-02-02 02:16:23 +00:00  
				
					
						
							
							
								 
						
							
								296a83cefb 
								
							 
						 
						
							
							
								
								Fit in 80 columns  
							
							... 
							
							
							
							llvm-svn: 33745 
							
						 
						
							2007-02-01 04:55:59 +00:00  
				
					
						
							
							
								 
						
							
								e3eeb24a86 
								
							 
						 
						
							
							
								
								Emit a better assertion message for PR1133  
							
							... 
							
							
							
							llvm-svn: 33736 
							
						 
						
							2007-02-01 01:21:12 +00:00  
				
					
						
							
							
								 
						
							
								5301e7c605 
								
							 
						 
						
							
							
								
								For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoid  
							
							... 
							
							
							
							confusion with external linkage types.
llvm-svn: 33663 
							
						 
						
							2007-01-30 20:08:39 +00:00  
				
					
						
							
							
								 
						
							
								d27f95e08d 
								
							 
						 
						
							
							
								
								add initial support for handling inline asms with multiple constraints.  
							
							... 
							
							
							
							This doesn't do the "right thing" but will probably work in most cases.
This implements CodeGen/PowerPC/2007-01-29-lbrx-asm.ll.
llvm-svn: 33643 
							
						 
						
							2007-01-29 23:45:14 +00:00  
				
					
						
							
							
								 
						
							
								eda5997cc8 
								
							 
						 
						
							
							
								
								Finish off bug 680, allowing targets to custom lower frame and return  
							
							... 
							
							
							
							address nodes.
llvm-svn: 33636 
							
						 
						
							2007-01-29 22:58:52 +00:00  
				
					
						
							
							
								 
						
							
								06f7d4bec7 
								
							 
						 
						
							
							
								
								Arguments are counting from 1. not from 0. Maybe we should change  
							
							... 
							
							
							
							numbering somehow? E.g. make return argument the last?
llvm-svn: 33606 
							
						 
						
							2007-01-28 18:01:49 +00:00  
				
					
						
							
							
								 
						
							
								9fa3839d29 
								
							 
						 
						
							
							
								
								More cleanup  
							
							... 
							
							
							
							llvm-svn: 33605 
							
						 
						
							2007-01-28 16:04:40 +00:00  
				
					
						
							
							
								 
						
							
								037c867b54 
								
							 
						 
						
							
							
								
								Propagate changes from my local tree. This patch includes:  
							
							... 
							
							
							
							1. New parameter attribute called 'inreg'. It has meaning "place this
parameter in registers, if possible". This is some generalization of
gcc's regparm(n) attribute. It's currently used only in X86-32 backend.
2. Completely rewritten CC handling/lowering code inside X86 backend.
Merged stdcall + c CCs and fastcall + fast CC.
3. Dropped CSRET CC. We cannot add struct return variant for each
target-specific CC (e.g. stdcall + csretcc and so on).
4. Instead of CSRET CC introduced 'sret' parameter attribute. Setting in
on first attribute has meaning 'This is hidden pointer to structure
return. Handle it gently'.
5. Fixed small bug in llvm-extract + add new feature to
FunctionExtraction pass, which relinks all internal-linkaged callees
from deleted function to external linkage. This will allow further
linking everything together.
NOTEs: 1. Documentation will be updated soon.
       2. llvm-upgrade should be improved to translate csret => sret.
          Before this, there will be some unexpected test fails.
llvm-svn: 33597 
							
						 
						
							2007-01-28 13:31:35 +00:00  
				
					
						
							
							
								 
						
							
								c56315c2b5 
								
							 
						 
						
							
							
								
								Change the MachineDebugInfo to MachineModuleInfo to better reflect usage  
							
							... 
							
							
							
							for debugging and exception handling.
llvm-svn: 33550 
							
						 
						
							2007-01-26 21:22:28 +00:00  
				
					
						
							
							
								 
						
							
								f9e5445ed4 
								
							 
						 
						
							
							
								
								Make LABEL a builtin opcode.  
							
							... 
							
							
							
							llvm-svn: 33537 
							
						 
						
							2007-01-26 14:34:52 +00:00  
				
					
						
							
							
								 
						
							
								2eadb5310d 
								
							 
						 
						
							
							
								
								For PR970:  
							
							... 
							
							
							
							Clean up handling of isFloatingPoint() and dealing with PackedType.
Patch by Gordon Henriksen!
llvm-svn: 33415 
							
						 
						
							2007-01-21 00:29:26 +00:00  
				
					
						
							
							
								 
						
							
								50ee0e40e5 
								
							 
						 
						
							
							
								
								Teach TargetData to handle 'preferred' alignment for each target, and use  
							
							... 
							
							
							
							these alignment amounts to align scalars when we can.  Patch by Scott Michel!
llvm-svn: 33409 
							
						 
						
							2007-01-20 22:35:55 +00:00  
				
					
						
							
							
								 
						
							
								75b871fb1e 
								
							 
						 
						
							
							
								
								For PR1043:  
							
							... 
							
							
							
							Merge ConstantIntegral and ConstantBool into ConstantInt.
Remove ConstantIntegral and ConstantBool from LLVM.
llvm-svn: 33073 
							
						 
						
							2007-01-11 12:24:14 +00:00  
				
					
						
							
							
								 
						
							
								10cae15d8e 
								
							 
						 
						
							
							
								
								remove support for llvm.isunordered  
							
							... 
							
							
							
							llvm-svn: 32992 
							
						 
						
							2007-01-07 08:37:22 +00:00  
				
					
						
							
							
								 
						
							
								8ec5283dc4 
								
							 
						 
						
							
							
								
								GEP subscript is interpreted as a signed value.  
							
							... 
							
							
							
							llvm-svn: 32888 
							
						 
						
							2007-01-05 01:46:20 +00:00  
				
					
						
							
							
								 
						
							
								96035bed51 
								
							 
						 
						
							
							
								
								fix PowerPC/2007-01-04-ArgExtension.ll, a bug handling K&R prototypes with  
							
							... 
							
							
							
							the recent signless changes.
llvm-svn: 32884 
							
						 
						
							2007-01-04 22:22:37 +00:00  
				
					
						
							
							
								 
						
							
								e6f81876eb 
								
							 
						 
						
							
							
								
								Legalizer doesn't do an ANY_EXTEND if we don't ask for one so make sure  
							
							... 
							
							
							
							that we default to an ANY_EXTEND if no parameter attribute is set on the
result value of a function.
llvm-svn: 32836 
							
						 
						
							2007-01-03 16:49:33 +00:00  
				
					
						
							
							
								 
						
							
								2a34b91666 
								
							 
						 
						
							
							
								
								Restore previous behavior of defaulting to ZEXT. This works around two  
							
							... 
							
							
							
							things: (1) preventing PR1071 and (2) working around missing parameter
attributes for bool type. (2) will be fixed shortly. When PR1071 is fixed,
this patch should be undone.
llvm-svn: 32831 
							
						 
						
							2007-01-03 05:03:05 +00:00  
				
					
						
							
							
								 
						
							
								0917adf614 
								
							 
						 
						
							
							
								
								Two changes:  
							
							... 
							
							
							
							1. Switch expression and cases are compared signed and are sign extended.
2. For function results needing extended, do SIGN_EXTEND if the SExtAttribute
   is set and ZERO_EXTEND if the ZExtAttribute is set, otherwise just let
   the Legalizer do ANY_EXTEND.
This fixes the recent regression in kimwitu++ and probably the llvm-gcc
bootstrap issue we had today.
llvm-svn: 32830 
							
						 
						
							2007-01-03 04:25:33 +00:00  
				
					
						
							
							
								 
						
							
								e63b6518fa 
								
							 
						 
						
							
							
								
								For PR950:  
							
							... 
							
							
							
							Three changes:
1. Convert signed integer types to signless versions.
2. Implement the @sext and @zext parameter attributes. Previously the
   type of an function parameter was used to determine whether it should
   be sign extended or zero extended before the call. This information is
   now communicated via the function type's parameter attributes.
3. The interface to LowerCallTo had to be changed in order to accommodate
   the parameter attribute information. Although it would have been
   convenient to pass in the FunctionType itself, there isn't always one
   present in the caller. Consequently, a signedness indication for the
   result type and for each parameter was provided for in the interface
   to this method. All implementations were changed to make the adjustment
   necessary.
llvm-svn: 32788 
							
						 
						
							2006-12-31 05:55:36 +00:00  
				
					
						
							
							
								 
						
							
								266e42b312 
								
							 
						 
						
							
							
								
								For PR950:  
							
							... 
							
							
							
							This patch removes the SetCC instructions and replaces them with the ICmp
and FCmp instructions. The SetCondInst instruction has been removed and
been replaced with ICmpInst and FCmpInst.
llvm-svn: 32751 
							
						 
						
							2006-12-23 06:05:41 +00:00  
				
					
						
							
							
								 
						
							
								258657e64e 
								
							 
						 
						
							
							
								
								getLoad() and getStore() calls missed SVOffset operand. Thanks to Dan Gohman  
							
							... 
							
							
							
							for pointing it out!
llvm-svn: 32712 
							
						 
						
							2006-12-20 01:27:29 +00:00  
				
					
						
							
							
								 
						
							
								9bd5ed636c 
								
							 
						 
						
							
							
								
								Fix PR1049 and CodeGen/Generic/2006-12-16-InlineAsmCrash.ll  
							
							... 
							
							
							
							by producing target constants instead of constants.  Constants can get
selected to li/movri instructions, which causes the scheduler to explode.
llvm-svn: 32633 
							
						 
						
							2006-12-16 21:14:48 +00:00  
				
					
						
							
							
								 
						
							
								22cf89967b 
								
							 
						 
						
							
							
								
								More soft-fp work.  
							
							... 
							
							
							
							llvm-svn: 32559 
							
						 
						
							2006-12-13 20:57:08 +00:00  
				
					
						
							
							
								 
						
							
								bfe26ffcfc 
								
							 
						 
						
							
							
								
								Replace CastInst::createInferredCast calls with more accurate cast  
							
							... 
							
							
							
							creation calls.
llvm-svn: 32521 
							
						 
						
							2006-12-13 00:50:17 +00:00  
				
					
						
							
							
								 
						
							
								634885f71e 
								
							 
						 
						
							
							
								
								Expand i32/i64 CopyToReg f32/f64 to BIT_CONVERT + CopyToReg.  
							
							... 
							
							
							
							llvm-svn: 32493 
							
						 
						
							2006-12-12 21:21:32 +00:00  
				
					
						
							
							
								 
						
							
								0c0b78c18e 
								
							 
						 
						
							
							
								
								Expand formal arguments and call arguments recursively: e.g. f64 -> i64 -> 2 x i32.  
							
							... 
							
							
							
							llvm-svn: 32476 
							
						 
						
							2006-12-12 07:27:38 +00:00  
				
					
						
							
							
								 
						
							
								3b7c257cae 
								
							 
						 
						
							
							
								
								Cleaned setjmp/longjmp lowering interfaces. Now we're producing right  
							
							... 
							
							
							
							code (both asm & cbe) for Mingw32 target.
Removed autoconf checks for underscored versions of setjmp/longjmp.
llvm-svn: 32415 
							
						 
						
							2006-12-10 23:12:42 +00:00  
				
					
						
							
							
								 
						
							
								4eee72471c 
								
							 
						 
						
							
							
								
								Preliminary soft float support.  
							
							... 
							
							
							
							llvm-svn: 32394 
							
						 
						
							2006-12-09 02:42:38 +00:00  
				
					
						
							
							
								 
						
							
								22e978a736 
								
							 
						 
						
							
							
								
								Removing even more <iostream> includes.  
							
							... 
							
							
							
							llvm-svn: 32320 
							
						 
						
							2006-12-07 20:04:42 +00:00  
				
					
						
							
							
								 
						
							
								feba507a97 
								
							 
						 
						
							
							
								
								Fix for PR1023 by Dan Gohman.  
							
							... 
							
							
							
							llvm-svn: 32003 
							
						 
						
							2006-11-29 01:58:12 +00:00  
				
					
						
							
							
								 
						
							
								6e12a052ff 
								
							 
						 
						
							
							
								
								Fix for PR1022 (folding loads of static initializers) by Dan Gohman.  
							
							... 
							
							
							
							llvm-svn: 32000 
							
						 
						
							2006-11-29 01:38:07 +00:00  
				
					
						
							
							
								 
						
							
								90f4238c38 
								
							 
						 
						
							
							
								
								add a hook to allow targets to hack on inline asms to lower them to llvm  
							
							... 
							
							
							
							when they want to.
llvm-svn: 31997 
							
						 
						
							2006-11-29 01:12:32 +00:00  
				
					
						
							
							
								 
						
							
								20350c4025 
								
							 
						 
						
							
							
								
								Change MachineInstr ctor's to take a TargetInstrDescriptor reference instead  
							
							... 
							
							
							
							of opcode and number of operands.
llvm-svn: 31947 
							
						 
						
							2006-11-27 23:37:22 +00:00  
				
					
						
							
							
								 
						
							
								6c38f0bb07 
								
							 
						 
						
							
							
								
								For PR950:  
							
							... 
							
							
							
							The long awaited CAST patch. This introduces 12 new instructions into LLVM
to replace the cast instruction. Corresponding changes throughout LLVM are
provided. This passes llvm-test, llvm/test, and SPEC CPUINT2000 with the
exception of 175.vpr which fails only on a slight floating point output
difference.
llvm-svn: 31931 
							
						 
						
							2006-11-27 01:05:10 +00:00  
				
					
						
							
							
								 
						
							
								d9436b6837 
								
							 
						 
						
							
							
								
								For PR950:  
							
							... 
							
							
							
							First in a series of patches to convert SetCondInst into ICmpInst and
FCmpInst using only two opcodes and having the instructions contain their
predicate value. Nothing uses these classes yet. More patches to follow.
llvm-svn: 31867 
							
						 
						
							2006-11-20 01:22:35 +00:00  
				
					
						
							
							
								 
						
							
								30d08801ef 
								
							 
						 
						
							
							
								
								remove dead #include  
							
							... 
							
							
							
							llvm-svn: 31753 
							
						 
						
							2006-11-15 17:51:15 +00:00  
				
					
						
							
							
								 
						
							
								d5e604dbb2 
								
							 
						 
						
							
							
								
								commentate  
							
							... 
							
							
							
							llvm-svn: 31627 
							
						 
						
							2006-11-10 04:41:34 +00:00  
				
					
						
							
							
								 
						
							
								fdff938a7e 
								
							 
						 
						
							
							
								
								For PR950:  
							
							... 
							
							
							
							This patch converts the old SHR instruction into two instructions,
AShr (Arithmetic) and LShr (Logical). The Shr instructions now are not
dependent on the sign of their operands.
llvm-svn: 31542 
							
						 
						
							2006-11-08 06:47:33 +00:00  
				
					
						
							
							
								 
						
							
								de46e48420 
								
							 
						 
						
							
							
								
								For PR786:  
							
							... 
							
							
							
							Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.
llvm-svn: 31380 
							
						 
						
							2006-11-02 20:25:50 +00:00  
				
					
						
							
							
								 
						
							
								7eb55b395f 
								
							 
						 
						
							
							
								
								For PR950:  
							
							... 
							
							
							
							Replace the REM instruction with UREM, SREM and FREM.
llvm-svn: 31369 
							
						 
						
							2006-11-02 01:53:59 +00:00  
				
					
						
							
							
								 
						
							
								55402d4403 
								
							 
						 
						
							
							
								
								Allow the getRegForInlineAsmConstraint method to return a register class with  
							
							... 
							
							
							
							no fixes physreg.  Treat this as permission to use any register in the register
class.  When this happens and it is safe, allow the llvm register allcoator to
allocate the register instead of doing it at isel time.  This eliminates a ton
of copies around common inline asms.  For example:
int test2(int Y, int X) {
  asm("foo %0, %1" : "=r"(X): "r"(X));
  return X;
}
now compiles to:
_test2:
        foo r3, r4
        blr
instead of:
_test2:
        mr r2, r4
        foo r2, r2
        mr r3, r2
        blr
GCC produces:
_test2:
        foo r4, r4
        mr r3,r4
        blr
llvm-svn: 31366 
							
						 
						
							2006-11-02 01:41:49 +00:00  
				
					
						
							
							
								 
						
							
								fe43befeda 
								
							 
						 
						
							
							
								
								Compile CodeGen/PowerPC/fp-branch.ll to:  
							
							... 
							
							
							
							_intcoord_cond_next55:
LBB1_3: ;cond_next55
        lis r2, ha16(LCPI1_0)
        lfs f0, lo16(LCPI1_0)(r2)
        fcmpu cr0, f1, f0
        blt cr0, LBB1_2 ;cond_next62.exitStub
LBB1_1: ;bb72.exitStub
        li r3, 1
        blr
LBB1_2: ;cond_next62.exitStub
        li r3, 0
        blr
instead of:
_intcoord_cond_next55:
LBB1_3: ;cond_next55
        lis r2, ha16(LCPI1_0)
        lfs f0, lo16(LCPI1_0)(r2)
        fcmpu cr0, f1, f0
        bge cr0, LBB1_1 ;bb72.exitStub
LBB1_4: ;cond_next55
        lis r2, ha16(LCPI1_0)
        lfs f0, lo16(LCPI1_0)(r2)
        fcmpu cr0, f1, f0
        bnu cr0, LBB1_2 ;cond_next62.exitStub
LBB1_1: ;bb72.exitStub
        li r3, 1
        blr
LBB1_2: ;cond_next62.exitStub
        li r3, 0
        blr
llvm-svn: 31330 
							
						 
						
							2006-10-31 23:06:00 +00:00  
				
					
						
							
							
								 
						
							
								427301fdae 
								
							 
						 
						
							
							
								
								look through isunordered to inline it into branch blocks.  
							
							... 
							
							
							
							llvm-svn: 31328 
							
						 
						
							2006-10-31 22:37:42 +00:00  
				
					
						
							
							
								 
						
							
								6f043b90ea 
								
							 
						 
						
							
							
								
								TargetLowering::isOperandValidForConstraint  
							
							... 
							
							
							
							llvm-svn: 31319 
							
						 
						
							2006-10-31 19:41:18 +00:00  
				
					
						
							
							
								 
						
							
								968f803928 
								
							 
						 
						
							
							
								
								Turn an assert into an error message.  This is commonly triggered when  
							
							... 
							
							
							
							we don't support a specific constraint yet.  When this happens, print the
unsupported constraint.
llvm-svn: 31310 
							
						 
						
							2006-10-31 07:33:13 +00:00  
				
					
						
							
							
								 
						
							
								84a28d4e76 
								
							 
						 
						
							
							
								
								Lower jumptable to BR_JT. The legalizer can lower it to a BRIND or let the target custom lower it.  
							
							... 
							
							
							
							llvm-svn: 31293 
							
						 
						
							2006-10-30 08:00:44 +00:00  
				
					
						
							
							
								 
						
							
								e60ae823e8 
								
							 
						 
						
							
							
								
								fix Generic/2006-10-29-Crash.ll  
							
							... 
							
							
							
							llvm-svn: 31281 
							
						 
						
							2006-10-29 21:01:20 +00:00  
				
					
						
							
							
								 
						
							
								f31b9ef458 
								
							 
						 
						
							
							
								
								Fix a load folding issue that Evan noticed: there is no need to export values  
							
							... 
							
							
							
							used by comparisons in the main block.
llvm-svn: 31279 
							
						 
						
							2006-10-29 18:23:37 +00:00  
				
					
						
							
							
								 
						
							
								bba52191fa 
								
							 
						 
						
							
							
								
								split critical edges more carefully and intelligently.  In particular, critical  
							
							... 
							
							
							
							edges whose destinations are not phi nodes don't bother us.  Also, share
split edges, since the split edge can't have a phi.  This significantly
reduces the complexity of generated code in some cases.
llvm-svn: 31274 
							
						 
						
							2006-10-28 19:22:10 +00:00  
				
					
						
							
							
								 
						
							
								3e6b1c6157 
								
							 
						 
						
							
							
								
								Split *all* critical edges before isel.  This resolves issues with spill code  
							
							... 
							
							
							
							being inserted on unsplit critical edges, which introduces (sometimes large
amounts of) partially dead spill code.
This also fixes PR925 + CodeGen/Generic/switch-crit-edge-constant.ll
llvm-svn: 31260 
							
						 
						
							2006-10-28 17:04:37 +00:00  
				
					
						
							
							
								 
						
							
								84a035056e 
								
							 
						 
						
							
							
								
								Fix a bug in merged condition handling (CodeGen/Generic/2006-10-27-CondFolding.ll).  
							
							... 
							
							
							
							Add many fewer CFG edges and PHI node entries.  If there is a switch which has
the same block as multiple destinations, only add that block once as a successor/phi
node (in the jumptable case)
llvm-svn: 31242 
							
						 
						
							2006-10-27 23:50:33 +00:00  
				
					
						
							
							
								 
						
							
								b9392fb635 
								
							 
						 
						
							
							
								
								remove debug code  
							
							... 
							
							
							
							llvm-svn: 31233 
							
						 
						
							2006-10-27 21:58:03 +00:00  
				
					
						
							
							
								 
						
							
								f1b54fd7a5 
								
							 
						 
						
							
							
								
								Codegen cond&cond with two branches.  This compiles (f.e.) PowerPC/and-branch.ll to:  
							
							... 
							
							
							
							cmpwi cr0, r4, 4
        bgt cr0, LBB1_2 ;UnifiedReturnBlock
LBB1_3: ;entry
        cmplwi cr0, r3, 0
        bne cr0, LBB1_2 ;UnifiedReturnBlock
instead of:
        cmpwi cr7, r4, 4
        mfcr r2
        addic r4, r3, -1
        subfe r3, r4, r3
        rlwinm r2, r2, 30, 31, 31
        or r2, r2, r3
        cmplwi cr0, r2, 0
        bne cr0, LBB1_2 ;UnifiedReturnBlock
LBB1_1: ;cond_true
llvm-svn: 31232 
							
						 
						
							2006-10-27 21:54:23 +00:00  
				
					
						
							
							
								 
						
							
								ed0110b949 
								
							 
						 
						
							
							
								
								Turn conditions like x<Y|z==q  into multiple blocks.  
							
							... 
							
							
							
							This compiles Regression/CodeGen/X86/or-branch.ll into:
_foo:
        subl $12, %esp
        call L_bar$stub
        movl 20(%esp), %eax
        movl 16(%esp), %ecx
        cmpl $5, %eax
        jl LBB1_1       #cond_true
LBB1_3: #entry
        testl %ecx, %ecx
        jne LBB1_2      #UnifiedReturnBlock
LBB1_1: #cond_true
        call L_bar$stub
        addl $12, %esp
        ret
LBB1_2: #UnifiedReturnBlock
        addl $12, %esp
        ret
instead of:
_foo:
        subl $12, %esp
        call L_bar$stub
        movl 20(%esp), %eax
        movl 16(%esp), %ecx
        cmpl $4, %eax
        setg %al
        testl %ecx, %ecx
        setne %cl
        testb %cl, %al
        jne LBB1_2      #UnifiedReturnBlock
LBB1_1: #cond_true
        call L_bar$stub
        addl $12, %esp
        ret
LBB1_2: #UnifiedReturnBlock
        addl $12, %esp
        ret
And on ppc to:
        cmpwi cr0, r29, 5
        blt cr0, LBB1_1 ;cond_true
LBB1_3: ;entry
        cmplwi cr0, r30, 0
        bne cr0, LBB1_2 ;UnifiedReturnBlock
instead of:
        cmpwi cr7, r4, 4
        mfcr r2
        addic r4, r3, -1
        subfe r30, r4, r3
        rlwinm r29, r2, 30, 31, 31
        and r2, r29, r30
        cmplwi cr0, r2, 0
        bne cr0, LBB1_2 ;UnifiedReturnBlock
llvm-svn: 31230 
							
						 
						
							2006-10-27 21:36:01 +00:00  
				
					
						
							
							
								 
						
							
								7e80b0b31e 
								
							 
						 
						
							
							
								
								For PR950:  
							
							... 
							
							
							
							Make necessary changes to support DIV -> [SUF]Div. This changes llvm to
have three division instructions: signed, unsigned, floating point. The
bytecode and assembler are bacwards compatible, however.
llvm-svn: 31195 
							
						 
						
							2006-10-26 06:15:43 +00:00  
				
					
						
							
							
								 
						
							
								61bcf9154d 
								
							 
						 
						
							
							
								
								visitSwitchCase knows how to insert conditional branches well.  Change  
							
							... 
							
							
							
							visitBr to just call visitSwitchCase, eliminating duplicate logic.
llvm-svn: 31167 
							
						 
						
							2006-10-24 18:07:37 +00:00  
				
					
						
							
							
								 
						
							
								963ddad31a 
								
							 
						 
						
							
							
								
								Generalize CaseBlock a bit more:  
							
							... 
							
							
							
							Rename LHSBB/RHSBB to TrueBB/FalseBB.  Allow the RHS value to be null,
in which case the LHS is treated as a bool.
llvm-svn: 31166 
							
						 
						
							2006-10-24 17:57:59 +00:00  
				
					
						
							
							
								 
						
							
								3f179d24c6 
								
							 
						 
						
							
							
								
								generalize 'CaseBlock'.  It really allows any comparison to be inserted.  
							
							... 
							
							
							
							llvm-svn: 31161 
							
						 
						
							2006-10-24 17:03:35 +00:00  
				
					
						
							
							
								 
						
							
								4c931502cc 
								
							 
						 
						
							
							
								
								Minor tweak.  Instead of generating:  
							
							... 
							
							
							
							movl 32(%esp), %eax
        cmpl $1, %eax
        je LBB1_1       #bb
LBB1_4: #entry
        cmpl $2, %eax
        je LBB1_2       #bb2
        jmp LBB1_3      #UnifiedReturnBlock
LBB1_1: #bb
notice that we would miss the fall through and emit this instead:
        movl 32(%esp), %eax
        cmpl $2, %eax
        je LBB1_2       #bb2
LBB1_4: #entry
        cmpl $1, %eax
        jne LBB1_3      #UnifiedReturnBlock
LBB1_1: #bb
llvm-svn: 31130 
							
						 
						
							2006-10-23 18:38:22 +00:00  
				
					
						
							
							
								 
						
							
								76a7bc8c55 
								
							 
						 
						
							
							
								
								Fix phi node updating for switches lowered to linear sequences of branches.  
							
							... 
							
							
							
							llvm-svn: 31125 
							
						 
						
							2006-10-22 23:00:53 +00:00  
				
					
						
							
							
								 
						
							
								4c3ef4782d 
								
							 
						 
						
							
							
								
								disable this code for now, it's not yet safely updating phi nodes  
							
							... 
							
							
							
							llvm-svn: 31124 
							
						 
						
							2006-10-22 22:47:10 +00:00  
				
					
						
							
							
								 
						
							
								6d6fc26257 
								
							 
						 
						
							
							
								
								Implement PR964 and Regression/CodeGen/Generic/SwitchLowering.ll  
							
							... 
							
							
							
							llvm-svn: 31119 
							
						 
						
							2006-10-22 21:36:53 +00:00  
				
					
						
							
							
								 
						
							
								e0fc4dfc22 
								
							 
						 
						
							
							
								
								For PR950:  
							
							... 
							
							
							
							This patch implements the first increment for the Signless Types feature.
All changes pertain to removing the ConstantSInt and ConstantUInt classes
in favor of just using ConstantInt.
llvm-svn: 31063 
							
						 
						
							2006-10-20 07:07:24 +00:00  
				
					
						
							
							
								 
						
							
								be96e1cd09 
								
							 
						 
						
							
							
								
								Partially in response to PR926: insert the newly created machine basic  
							
							... 
							
							
							
							blocks into the basic block list when lowering the switch inst. into a
binary tree of if-then statements. This allows the "visitSwitchCase" func
to allow for fall-through behavior.
llvm-svn: 31057 
							
						 
						
							2006-10-19 21:46:38 +00:00  
				
					
						
							
							
								 
						
							
								dcb2b83886 
								
							 
						 
						
							
							
								
								Pass AliasAnalysis thru to DAGCombiner.  
							
							... 
							
							
							
							llvm-svn: 30984 
							
						 
						
							2006-10-16 20:52:31 +00:00  
				
					
						
							
							
								 
						
							
								ab51cf2e78 
								
							 
						 
						
							
							
								
								Merge ISD::TRUNCSTORE to ISD::STORE. Switch to using StoreSDNode.  
							
							... 
							
							
							
							llvm-svn: 30945 
							
						 
						
							2006-10-13 21:14:26 +00:00  
				
					
						
							
							
								 
						
							
								a6bbf33cbf 
								
							 
						 
						
							
							
								
								Jimptables working again on alpha.  
							
							... 
							
							
							
							As a bonus, use the GOT node instead of the AlphaISD::GOT for internal stuff.
llvm-svn: 30873 
							
						 
						
							2006-10-11 04:29:42 +00:00  
				
					
						
							
							
								 
						
							
								6df349676e 
								
							 
						 
						
							
							
								
								add two helper methods.  
							
							... 
							
							
							
							llvm-svn: 30869 
							
						 
						
							2006-10-11 03:58:02 +00:00  
				
					
						
							
							
								 
						
							
								e71fe34d75 
								
							 
						 
						
							
							
								
								Reflects ISD::LOAD / ISD::LOADX / LoadSDNode changes.  
							
							... 
							
							
							
							llvm-svn: 30844 
							
						 
						
							2006-10-09 20:57:25 +00:00  
				
					
						
							
							
								 
						
							
								9d75324ddf 
								
							 
						 
						
							
							
								
								jump tables handle pic  
							
							... 
							
							
							
							llvm-svn: 30776 
							
						 
						
							2006-10-06 22:32:29 +00:00  
				
					
						
							
							
								 
						
							
								df9ac47e5e 
								
							 
						 
						
							
							
								
								Make use of getStore().  
							
							... 
							
							
							
							llvm-svn: 30759 
							
						 
						
							2006-10-05 23:01:46 +00:00  
				
					
						
							
							
								 
						
							
								f80dfa83a0 
								
							 
						 
						
							
							
								
								Fix some typos that can cause a flag value to have more than one use.  
							
							... 
							
							
							
							llvm-svn: 30727 
							
						 
						
							2006-10-04 22:23:53 +00:00  
				
					
						
							
							
								 
						
							
								a9caf95591 
								
							 
						 
						
							
							
								
								refactor critical edge breaking out into the SplitCritEdgesForPHIConstants method.  
							
							... 
							
							
							
							This is a baby step towards fixing PR925.
llvm-svn: 30643 
							
						 
						
							2006-09-28 06:17:10 +00:00  
				
					
						
							
							
								 
						
							
								c19ef92403 
								
							 
						 
						
							
							
								
								Comments on JumpTableness  
							
							... 
							
							
							
							llvm-svn: 30615 
							
						 
						
							2006-09-26 20:02:30 +00:00  
				
					
						
							
							
								 
						
							
								783a4a9d86 
								
							 
						 
						
							
							
								
								Add support for other relocation bases to jump tables, as well as custom asm directives  
							
							... 
							
							
							
							llvm-svn: 30593 
							
						 
						
							2006-09-24 19:45:58 +00:00  
				
					
						
							
							
								 
						
							
								77c0757f8b 
								
							 
						 
						
							
							
								
								PIC jump table entries are always 32-bit. This fixes PIC jump table support on X86-64.  
							
							... 
							
							
							
							llvm-svn: 30590 
							
						 
						
							2006-09-24 05:22:38 +00:00  
				
					
						
							
							
								 
						
							
								c50458fb90 
								
							 
						 
						
							
							
								
								absolute addresses must match pointer size  
							
							... 
							
							
							
							llvm-svn: 30461 
							
						 
						
							2006-09-18 17:59:35 +00:00  
				
					
						
							
							
								 
						
							
								84cc1f7cb8 
								
							 
						 
						
							
							
								
								If LSR went through a lot of trouble to put constants (e.g. the addr of a global  
							
							... 
							
							
							
							in a specific BB, don't undo this!).  This allows us to compile
CodeGen/X86/loop-hoist.ll into:
_foo:
        xorl %eax, %eax
***     movl L_Arr$non_lazy_ptr, %ecx
        movl 4(%esp), %edx
LBB1_1: #cond_true
        movl %eax, (%ecx,%eax,4)
        incl %eax
        cmpl %edx, %eax
        jne LBB1_1      #cond_true
LBB1_2: #return
        ret
instead of:
_foo:
        xorl %eax, %eax
        movl 4(%esp), %ecx
LBB1_1: #cond_true
***     movl L_Arr$non_lazy_ptr, %edx
        movl %eax, (%edx,%eax,4)
        incl %eax
        cmpl %ecx, %eax
        jne LBB1_1      #cond_true
LBB1_2: #return
        ret
This was noticed in 464.h264ref.  This doesn't usually affect PPC,
but strikes X86 all the time.
llvm-svn: 30290 
							
						 
						
							2006-09-13 06:02:42 +00:00  
				
					
						
							
							
								 
						
							
								2e0dfb0b16 
								
							 
						 
						
							
							
								
								This code was trying too hard.  By eliminating redundant edges in the CFG  
							
							... 
							
							
							
							due to switch cases going to the same place, it make #pred != #phi entries,
breaking live interval analysis.
This fixes 458.sjeng on x86 with llc.
llvm-svn: 30236 
							
						 
						
							2006-09-10 06:36:57 +00:00  
				
					
						
							
							
								 
						
							
								f0359b343a 
								
							 
						 
						
							
							
								
								Implement the fpowi now by lowering to a libcall  
							
							... 
							
							
							
							llvm-svn: 30225 
							
						 
						
							2006-09-09 06:03:30 +00:00  
				
					
						
							
							
								 
						
							
								707339a57b 
								
							 
						 
						
							
							
								
								Fix CodeGen/Generic/2006-09-06-SwitchLowering.ll, a bug where SDIsel inserted  
							
							... 
							
							
							
							too many phi operands when lowering a switch to branches in some cases.
llvm-svn: 30142 
							
						 
						
							2006-09-07 01:59:34 +00:00  
				
					
						
							
							
								 
						
							
								af23f9b5f6 
								
							 
						 
						
							
							
								
								Completely eliminate def&use operands.  Now a register operand is EITHER a  
							
							... 
							
							
							
							def operand or a use operand.
llvm-svn: 30109 
							
						 
						
							2006-09-05 02:31:13 +00:00  
				
					
						
							
							
								 
						
							
								3d27be1333 
								
							 
						 
						
							
							
								
								s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|  
							
							... 
							
							
							
							llvm-svn: 29911 
							
						 
						
							2006-08-27 12:54:02 +00:00  
				
					
						
							
							
								 
						
							
								65879caf07 
								
							 
						 
						
							
							
								
								minor changes.  
							
							... 
							
							
							
							llvm-svn: 29740 
							
						 
						
							2006-08-16 22:57:46 +00:00  
				
					
						
							
							
								 
						
							
								bd8877744b 
								
							 
						 
						
							
							
								
								eliminate use of getNode that takes vector of valuetypes.  
							
							... 
							
							
							
							llvm-svn: 29687 
							
						 
						
							2006-08-14 23:53:35 +00:00  
				
					
						
							
							
								 
						
							
								c24a1d3093 
								
							 
						 
						
							
							
								
								Start eliminating temporary vectors used to create DAG nodes.  Instead, pass  
							
							... 
							
							
							
							in the start of an array and a count of operands where applicable.  In many
cases, the number of operands is known, so this static array can be allocated
on the stack, avoiding the heap.  In many other cases, a SmallVector can be
used, which has the same benefit in the common cases.
I updated a lot of code calling getNode that takes a vector, but ran out of
time.  The rest of the code should be updated, and these methods should be
removed.
We should also do the same thing to eliminate the methods that take a
vector of MVT::ValueTypes.
It would be extra nice to convert the dagiselemitter to avoid creating vectors
for operands when calling getTargetNode.
llvm-svn: 29566 
							
						 
						
							2006-08-08 02:23:42 +00:00  
				
					
						
							
							
								 
						
							
								524c1a21f2 
								
							 
						 
						
							
							
								
								Work around a GCC 3.3.5 bug noticed by a user.  
							
							... 
							
							
							
							llvm-svn: 29490 
							
						 
						
							2006-08-03 00:18:59 +00:00  
				
					
						
							
							
								 
						
							
								29e635d3c9 
								
							 
						 
						
							
							
								
								Final polish on machine pass registries.  
							
							... 
							
							
							
							llvm-svn: 29471 
							
						 
						
							2006-08-02 12:30:23 +00:00  
				
					
						
							
							
								 
						
							
								17c67efe8a 
								
							 
						 
						
							
							
								
								Now that the ISel is available, it's possible to create a default instruction  
							
							... 
							
							
							
							scheduler creator.
llvm-svn: 29452 
							
						 
						
							2006-08-01 19:14:14 +00:00  
				
					
						
							
							
								 
						
							
								03593f72db 
								
							 
						 
						
							
							
								
								1. Change use of "Cache" to "Default".  
							
							... 
							
							
							
							2. Added argument to instruction scheduler creators so the creators can do
special things.
3. Repaired target hazard code.
4. Misc.
More to follow.
llvm-svn: 29450 
							
						 
						
							2006-08-01 18:29:48 +00:00  
				
					
						
							
							
								 
						
							
								95eda5b1f3 
								
							 
						 
						
							
							
								
								Introducing plugable register allocators and instruction schedulers.  
							
							... 
							
							
							
							llvm-svn: 29434 
							
						 
						
							2006-08-01 14:21:23 +00:00  
				
					
						
							
							
								 
						
							
								6ae6ac1216 
								
							 
						 
						
							
							
								
								PIC jump table entries are always 32-bit even in 64-bit mode.  
							
							... 
							
							
							
							llvm-svn: 29422 
							
						 
						
							2006-08-01 01:03:13 +00:00  
				
					
						
							
							
								 
						
							
								efc312a5c7 
								
							 
						 
						
							
							
								
								Code cleanups, per review  
							
							... 
							
							
							
							llvm-svn: 29347 
							
						 
						
							2006-07-27 16:46:58 +00:00  
				
					
						
							
							
								 
						
							
								787565024a 
								
							 
						 
						
							
							
								
								Support jump tables when in PIC relocation model  
							
							... 
							
							
							
							llvm-svn: 29318 
							
						 
						
							2006-07-27 01:13:04 +00:00  
				
					
						
							
							
								 
						
							
								b030532910 
								
							 
						 
						
							
							
								
								Mems can be in the output list also.  This is the second half of a fix for  
							
							... 
							
							
							
							PR833
llvm-svn: 29224 
							
						 
						
							2006-07-20 19:02:21 +00:00  
				
					
						
							
							
								 
						
							
								996795b0dd 
								
							 
						 
						
							
							
								
								Use hidden visibility to make symbols in an anonymous namespace get  
							
							... 
							
							
							
							dropped.  This shrinks libllvmgcc.dylib another 67K
llvm-svn: 28975 
							
						 
						
							2006-06-28 23:17:24 +00:00  
				
					
						
							
							
								 
						
							
								ef9e07d3f0 
								
							 
						 
						
							
							
								
								Consistency. EXTRACT_ELEMENT index operand should have ptr type.  
							
							... 
							
							
							
							llvm-svn: 28795 
							
						 
						
							2006-06-15 08:11:54 +00:00  
				
					
						
							
							
								 
						
							
								32d92e004d 
								
							 
						 
						
							
							
								
								Make sure to update the CFG correctly if a switch only has a default dest.  
							
							... 
							
							
							
							This fixes CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll
llvm-svn: 28755 
							
						 
						
							2006-06-12 18:25:29 +00:00  
				
					
						
							
							
								 
						
							
								c03a9259c0 
								
							 
						 
						
							
							
								
								Fix X86/inline-asm.ll:test2, a case where an input value was implicitly  
							
							... 
							
							
							
							truncated.
llvm-svn: 28733 
							
						 
						
							2006-06-08 18:27:11 +00:00  
				
					
						
							
							
								 
						
							
								705948d742 
								
							 
						 
						
							
							
								
								Fix Regression/CodeGen/X86/inline-asm.ll, a case where inline asm causes  
							
							... 
							
							
							
							implement extension of a register.
llvm-svn: 28731 
							
						 
						
							2006-06-08 18:22:48 +00:00  
				
					
						
							
							
								 
						
							
								21dee4e0b2 
								
							 
						 
						
							
							
								
								Make CALL node consistent with RET node. Signness of value has type MVT::i32  
							
							... 
							
							
							
							instead of MVT::i1. Either is fine except MVT::i32 is probably a legal type
for most (if not all) platforms while MVT::i1 is not.
llvm-svn: 28511 
							
						 
						
							2006-05-26 23:13:20 +00:00  
				
					
						
							
							
								 
						
							
								a2e9953c54 
								
							 
						 
						
							
							
								
								Change RET node to include signness information of the return values. e.g.  
							
							... 
							
							
							
							RET chain, value1, sign1, value2, sign2
llvm-svn: 28509 
							
						 
						
							2006-05-26 23:09:09 +00:00  
				
					
						
							
							
								 
						
							
								4582771f3f 
								
							 
						 
						
							
							
								
								CALL node change: now including signness of every argument.  
							
							... 
							
							
							
							llvm-svn: 28461 
							
						 
						
							2006-05-25 00:55:32 +00:00  
				
					
						
							
							
								 
						
							
								ac4f66ff24 
								
							 
						 
						
							
							
								
								-enable-unsafe-fp-math implies -enable-finite-only-fp-math  
							
							... 
							
							
							
							llvm-svn: 28437 
							
						 
						
							2006-05-23 18:18:46 +00:00  
				
					
						
							
							
								 
						
							
								df1d439849 
								
							 
						 
						
							
							
								
								Fix missing include  
							
							... 
							
							
							
							llvm-svn: 28435 
							
						 
						
							2006-05-23 13:43:15 +00:00  
				
					
						
							
							
								 
						
							
								1c5b7d12df 
								
							 
						 
						
							
							
								
								Incorrect SETCC CondCode used for FP comparisons.  
							
							... 
							
							
							
							llvm-svn: 28433 
							
						 
						
							2006-05-23 06:40:47 +00:00  
				
					
						
							
							
								 
						
							
								7949c2e8b2 
								
							 
						 
						
							
							
								
								Fix the result of the call to use a correct vbitconvert.  There is no need to  
							
							... 
							
							
							
							use getPackedTypeBreakdown at all here.
llvm-svn: 28365 
							
						 
						
							2006-05-17 20:49:36 +00:00  
				
					
						
							
							
								 
						
							
								938155ca57 
								
							 
						 
						
							
							
								
								Correct a previous patch which broke CodeGen/PowerPC/vec_call.ll  
							
							... 
							
							
							
							llvm-svn: 28364 
							
						 
						
							2006-05-17 20:43:21 +00:00  
				
					
						
							
							
								 
						
							
								751cd7653d 
								
							 
						 
						
							
							
								
								Fixed a LowerCallTo and LowerArguments bug. They were introducing illegal  
							
							... 
							
							
							
							VBIT_VECTOR nodes. There were some confusion about the semantics of
getPackedTypeBreakdown(). e.g. for <4 x f32> it returns 1 and v4f32, not 4,
and f32.
llvm-svn: 28352 
							
						 
						
							2006-05-17 18:16:39 +00:00  
				
					
						
							
							
								 
						
							
								b77ba73a29 
								
							 
						 
						
							
							
								
								Add support for calls that pass and return legal vectors.  
							
							... 
							
							
							
							llvm-svn: 28340 
							
						 
						
							2006-05-16 23:39:44 +00:00  
				
					
						
							
							
								 
						
							
								aaa23d953f 
								
							 
						 
						
							
							
								
								Add a new ISD::CALL node, make the default impl of TargetLowering::LowerCallTo  
							
							... 
							
							
							
							produce it.
llvm-svn: 28338 
							
						 
						
							2006-05-16 22:53:20 +00:00  
				
					
						
							
							
								 
						
							
								3d82699605 
								
							 
						 
						
							
							
								
								Add a chain to FORMAL_ARGUMENTS.  This is a minimal port of the X86 backend,  
							
							... 
							
							
							
							it doesn't currently use/maintain the chain properly.  Also, make the
X86ISelLowering.cpp file 80-col clean.
llvm-svn: 28320 
							
						 
						
							2006-05-16 06:45:34 +00:00  
				
					
						
							
							
								 
						
							
								957cb6733a 
								
							 
						 
						
							
							
								
								Move function-live-in-handling code from the sdisel code to the scheduler.  
							
							... 
							
							
							
							This code should be emitted after legalize, so it can't be in sdisel.
Note that the EmitFunctionEntryCode hook should be updated to operate on the
DAG.  The X86 backend is the only one currently using this hook.
llvm-svn: 28315 
							
						 
						
							2006-05-16 06:10:58 +00:00  
				
					
						
							
							
								 
						
							
								d1915cfa6f 
								
							 
						 
						
							
							
								
								Revert an un-intended change  
							
							... 
							
							
							
							llvm-svn: 28278 
							
						 
						
							2006-05-13 05:53:47 +00:00  
				
					
						
							
							
								 
						
							
								53cdb2f2b0 
								
							 
						 
						
							
							
								
								Remove dead vars  
							
							... 
							
							
							
							llvm-svn: 28255 
							
						 
						
							2006-05-12 18:06:45 +00:00  
				
					
						
							
							
								 
						
							
								d38c22bdd3 
								
							 
						 
						
							
							
								
								Refactor scheduler code. Move register-reduction list scheduler to a  
							
							... 
							
							
							
							separate file. Added an initial implementation of top-down register pressure
reduction list scheduler.
llvm-svn: 28226 
							
						 
						
							2006-05-11 23:55:42 +00:00  
				
					
						
							
							
								 
						
							
								d7a19102d1 
								
							 
						 
						
							
							
								
								Make emission of jump tables a bit less conservative; they are now required  
							
							... 
							
							
							
							to be only 31.25% dense, rather than 75% dense.
llvm-svn: 28165 
							
						 
						
							2006-05-08 16:51:36 +00:00  
				
					
						
							
							
								 
						
							
								21cd99024a 
								
							 
						 
						
							
							
								
								When inserting casts, be careful of where we put them.  We cannot insert  
							
							... 
							
							
							
							a cast immediately before a PHI node.
This fixes Regression/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll
llvm-svn: 28143 
							
						 
						
							2006-05-06 09:10:37 +00:00  
				
					
						
							
							
								 
						
							
								3e3f2c63c3 
								
							 
						 
						
							
							
								
								More aggressively sink GEP offsets into loops.  For example, before we  
							
							... 
							
							
							
							generated:
        movl 8(%esp), %eax
        movl %eax, %edx
        addl $4316, %edx
        cmpb $1, %cl
        ja LBB1_2       #cond_false
LBB1_1: #cond_true
        movl L_QuantizationTables720$non_lazy_ptr, %ecx
        movl %ecx, (%edx)
        movl L_QNOtoQuantTableShift720$non_lazy_ptr, %edx
        movl %edx, 4460(%eax)
        ret
...
Now we generate:
        movl 8(%esp), %eax
        cmpb $1, %cl
        ja LBB1_2       #cond_false
LBB1_1: #cond_true
        movl L_QuantizationTables720$non_lazy_ptr, %ecx
        movl %ecx, 4316(%eax)
        movl L_QNOtoQuantTableShift720$non_lazy_ptr, %ecx
        movl %ecx, 4460(%eax)
        ret
... which uses one fewer register.
llvm-svn: 28129 
							
						 
						
							2006-05-05 21:17:49 +00:00  
				
					
						
							
							
								 
						
							
								7a3ecf7993 
								
							 
						 
						
							
							
								
								Sink noop copies into the basic block that uses them.  This reduces the number  
							
							... 
							
							
							
							of cross-block live ranges, and allows the bb-at-a-time selector to always
coallesce these away, at isel time.
This reduces the load on the coallescer and register allocator.  For example
on a codec on X86, we went from:
   1643 asm-printer           - Number of machine instrs printed
    419 liveintervals         - Number of loads/stores folded into instructions
   1144 liveintervals         - Number of identity moves eliminated after coalescing
   1022 liveintervals         - Number of interval joins performed
    282 liveintervals         - Number of intervals after coalescing
   1304 liveintervals         - Number of original intervals
     86 regalloc              - Number of times we had to backtrack
1.90232 regalloc              - Ratio of intervals processed over total intervals
     40 spiller               - Number of values reused
    182 spiller               - Number of loads added
    121 spiller               - Number of stores added
    132 spiller               - Number of register spills
      6 twoaddressinstruction - Number of instructions commuted to coalesce
    360 twoaddressinstruction - Number of two-address instructions
to:
   1636 asm-printer           - Number of machine instrs printed
    403 liveintervals         - Number of loads/stores folded into instructions
   1155 liveintervals         - Number of identity moves eliminated after coalescing
   1033 liveintervals         - Number of interval joins performed
    279 liveintervals         - Number of intervals after coalescing
   1312 liveintervals         - Number of original intervals
     76 regalloc              - Number of times we had to backtrack
1.88998 regalloc              - Ratio of intervals processed over total intervals
      1 spiller               - Number of copies elided
     41 spiller               - Number of values reused
    191 spiller               - Number of loads added
    114 spiller               - Number of stores added
    128 spiller               - Number of register spills
      4 twoaddressinstruction - Number of instructions commuted to coalesce
    356 twoaddressinstruction - Number of two-address instructions
On this testcase, this change provides a modest reduction in spill code,
regalloc iterations, and total instructions emitted.  It increases the number
of register coallesces.
llvm-svn: 28115 
							
						 
						
							2006-05-05 01:04:50 +00:00  
				
					
						
							
							
								 
						
							
								df4883971e 
								
							 
						 
						
							
							
								
								Finish up the initial jump table implementation by allowing jump tables to  
							
							... 
							
							
							
							not be 100% dense.  Increase the minimum threshold for the number of cases
in a switch statement from 4 to 6 in order to create a jump table.
llvm-svn: 28079 
							
						 
						
							2006-05-03 03:48:02 +00:00  
				
					
						
							
							
								 
						
							
								20a631fde7 
								
							 
						 
						
							
							
								
								Refactor TargetMachine, pushing handling of TargetData into the target-specific subclasses.  This has one caller-visible change: getTargetData() now returns a pointer instead of a reference.  
							
							... 
							
							
							
							This fixes PR 759.
llvm-svn: 28074 
							
						 
						
							2006-05-03 01:29:57 +00:00  
				
					
						
							
							
								 
						
							
								c5e8ce8b8c 
								
							 
						 
						
							
							
								
								Remove the temporary option: -no-isel-fold-inflight  
							
							... 
							
							
							
							llvm-svn: 28012 
							
						 
						
							2006-04-28 18:54:11 +00:00  
				
					
						
							
							
								 
						
							
								d43c5c6046 
								
							 
						 
						
							
							
								
								TargetLowering::LowerArguments should return a VBIT_CONVERT of  
							
							... 
							
							
							
							FORMAL_ARGUMENTS SDOperand in the return result vector.
llvm-svn: 28009 
							
						 
						
							2006-04-28 05:25:15 +00:00  
				
					
						
							
							
								 
						
							
								51ab4498e7 
								
							 
						 
						
							
							
								
								Added a temporary option -no-isel-fold-inflight to control whether a "inflight"  
							
							... 
							
							
							
							node can be folded.
llvm-svn: 28003 
							
						 
						
							2006-04-28 02:09:19 +00:00  
				
					
						
							
							
								 
						
							
								3784f3c57c 
								
							 
						 
						
							
							
								
								Insert a VBIT_CONVERT between a FORMAL_ARGUMENT node and its vector uses  
							
							... 
							
							
							
							(VAND, VADD, etc.). Legalizer will assert otherwise.
llvm-svn: 27991 
							
						 
						
							2006-04-27 08:29:42 +00:00  
				
					
						
							
							
								 
						
							
								9618df1190 
								
							 
						 
						
							
							
								
								Don't forget return void.  
							
							... 
							
							
							
							llvm-svn: 27974 
							
						 
						
							2006-04-25 23:03:35 +00:00  
				
					
						
							
							
								 
						
							
								866b4b4d45 
								
							 
						 
						
							
							
								
								Fix the updating of the machine CFG when a PHI node was in a successor of  
							
							... 
							
							
							
							the jump table's range check block.  This re-enables 100% dense jump tables
by default on PPC & x86
llvm-svn: 27952 
							
						 
						
							2006-04-23 06:26:20 +00:00  
				
					
						
							
							
								 
						
							
								ecb1dafd3d 
								
							 
						 
						
							
							
								
								Turn of jump tables for a bit, there are still some issues to work out with  
							
							... 
							
							
							
							updating the machine CFG.
llvm-svn: 27949 
							
						 
						
							2006-04-22 23:51:56 +00:00  
				
					
						
							
							
								 
						
							
								4ca2ea5b43 
								
							 
						 
						
							
							
								
								JumpTable support!  What this represents is working asm and jit support for  
							
							... 
							
							
							
							x86 and ppc for 100% dense switch statements when relocations are non-PIC.
This support will be extended and enhanced in the coming days to support
PIC, and less dense forms of jump tables.
llvm-svn: 27947 
							
						 
						
							2006-04-22 18:53:45 +00:00  
				
					
						
							
							
								 
						
							
								b21d3bfd1f 
								
							 
						 
						
							
							
								
								The BFS scheduler is apparently nondeterminstic (causes many llvmgcc bootstrap  
							
							... 
							
							
							
							miscompares).  Switch RISC targets to use the list-td scheduler, which isn't.
llvm-svn: 27933 
							
						 
						
							2006-04-21 17:16:16 +00:00  
				
					
						
							
							
								 
						
							
								d3b504ae10 
								
							 
						 
						
							
							
								
								Implement support for the formal_arguments node.  To get this, targets shouldcustom legalize it and remove their XXXTargetLowering::LowerArguments overload  
							
							... 
							
							
							
							llvm-svn: 27604 
							
						 
						
							2006-04-12 16:20:43 +00:00  
				
					
						
							
							
								 
						
							
								02274a5265 
								
							 
						 
						
							
							
								
								Add code generator support for VSELECT  
							
							... 
							
							
							
							llvm-svn: 27542 
							
						 
						
							2006-04-08 22:22:57 +00:00  
				
					
						
							
							
								 
						
							
								098c01e94e 
								
							 
						 
						
							
							
								
								Codegen shufflevector as VVECTOR_SHUFFLE  
							
							... 
							
							
							
							llvm-svn: 27529 
							
						 
						
							2006-04-08 04:15:24 +00:00  
				
					
						
							
							
								 
						
							
								aa3185f12e 
								
							 
						 
						
							
							
								
								Stub out shufflevector  
							
							... 
							
							
							
							llvm-svn: 27514 
							
						 
						
							2006-04-08 01:19:25 +00:00  
				
					
						
							
							
								 
						
							
								4a2413a590 
								
							 
						 
						
							
							
								
								Make a vector live across blocks have the correct Vec type.  This fixes  
							
							... 
							
							
							
							CodeGen/X86/2006-04-04-CrossBlockCrash.ll
llvm-svn: 27436 
							
						 
						
							2006-04-05 06:54:42 +00:00  
				
					
						
							
							
								 
						
							
								a9c59156be 
								
							 
						 
						
							
							
								
								Intrinsics that just load from memory can be treated like loads: they don't  
							
							... 
							
							
							
							have to serialize against each other.  This allows us to schedule lvx's
across each other, for example.
llvm-svn: 27346 
							
						 
						
							2006-04-02 03:41:14 +00:00  
				
					
						
							
							
								 
						
							
								ef598059f2 
								
							 
						 
						
							
							
								
								Add a new -view-legalize-dags command line option  
							
							... 
							
							
							
							llvm-svn: 27342 
							
						 
						
							2006-04-02 03:07:27 +00:00  
				
					
						
							
							
								 
						
							
								bec582f4cd 
								
							 
						 
						
							
							
								
								Prefer larger register classes over smaller ones when a register occurs in  
							
							... 
							
							
							
							multiple register classes.  This fixes PowerPC/2006-04-01-FloatDoubleExtend.ll
llvm-svn: 27334 
							
						 
						
							2006-04-02 00:24:45 +00:00  
				
					
						
							
							
								 
						
							
								ba38035e21 
								
							 
						 
						
							
							
								
								Make sure to pass enough values to phi nodes when we are dealing with  
							
							... 
							
							
							
							decimated vectors.  This fixes UnitTests/Vector/sumarray-dbl.c
llvm-svn: 27280 
							
						 
						
							2006-03-31 02:12:18 +00:00  
				
					
						
							
							
								 
						
							
								5fe1f54c17 
								
							 
						 
						
							
							
								
								Significantly improve handling of vectors that are live across basic blocks,  
							
							... 
							
							
							
							handling cases where the vector elements need promotion, expansion, and when
the vector type itself needs to be decimated.
llvm-svn: 27278 
							
						 
						
							2006-03-31 02:06:56 +00:00  
				
					
						
							
							
								 
						
							
								67271869a8 
								
							 
						 
						
							
							
								
								Bug fixes: handle constantexpr insert/extract element operations  
							
							... 
							
							
							
							Handle constantpacked vectors with constantexpr elements.
This fixes CodeGen/Generic/vector-constantexpr.ll
llvm-svn: 27241 
							
						 
						
							2006-03-29 00:11:43 +00:00  
				
					
						
							
							
								 
						
							
								67a636c587 
								
							 
						 
						
							
							
								
								More bulletproofing of llvm.dbg.declare.  
							
							... 
							
							
							
							llvm-svn: 27224 
							
						 
						
							2006-03-28 13:45:20 +00:00  
				
					
						
							
							
								 
						
							
								e55d171ccd 
								
							 
						 
						
							
							
								
								Tblgen doesn't like multiple SDNode<> definitions that map to the sameenum value.  Split them into separate enums.  
							
							... 
							
							
							
							llvm-svn: 27201 
							
						 
						
							2006-03-28 00:40:33 +00:00  
				
					
						
							
							
								 
						
							
								d387cc5cde 
								
							 
						 
						
							
							
								
								Reactivate llvm.dbg.declare.  
							
							... 
							
							
							
							llvm-svn: 27192 
							
						 
						
							2006-03-27 23:31:10 +00:00  
				
					
						
							
							
								 
						
							
								5bb1d90afd 
								
							 
						 
						
							
							
								
								Disable dbg_declare, it currently breaks the CFE build  
							
							... 
							
							
							
							llvm-svn: 27182 
							
						 
						
							2006-03-27 21:36:03 +00:00  
				
					
						
							
							
								 
						
							
								ed728c1291 
								
							 
						 
						
							
							
								
								SelectionDAGISel can now natively handle Switch instructions, in the same  
							
							... 
							
							
							
							manner that the LowerSwitch LLVM to LLVM pass does: emitting a binary
search tree of basic blocks.  The new approach has several advantages:
it is faster, it generates significantly smaller code in many cases, and
it paves the way for implementing dense switch tables as a jump table by
handling switches directly in the instruction selector.
This functionality is currently only enabled on x86, but should be safe for
every target.  In anticipation of making it the default, the cfg is now
properly updated in the x86, ppc, and sparc select lowering code.
llvm-svn: 27156 
							
						 
						
							2006-03-27 01:32:24 +00:00  
				
					
						
							
							
								 
						
							
								7092888bcc 
								
							 
						 
						
							
							
								
								Bullet proof against undefined args produced by upgrading ols-style debug info.  
							
							... 
							
							
							
							llvm-svn: 27155 
							
						 
						
							2006-03-26 22:46:27 +00:00  
				
					
						
							
							
								 
						
							
								313229c74b 
								
							 
						 
						
							
							
								
								fix inverted conditional  
							
							... 
							
							
							
							llvm-svn: 27089 
							
						 
						
							2006-03-24 22:49:42 +00:00  
				
					
						
							
							
								 
						
							
								53f1ecc560 
								
							 
						 
						
							
							
								
								Rename for truth in advertising.  
							
							... 
							
							
							
							llvm-svn: 27063 
							
						 
						
							2006-03-24 09:50:27 +00:00  
				
					
						
							
							
								 
						
							
								d96b09a7b9 
								
							 
						 
						
							
							
								
								Lower target intrinsics into an INTRINSIC node  
							
							... 
							
							
							
							llvm-svn: 27035 
							
						 
						
							2006-03-24 02:22:33 +00:00  
				
					
						
							
							
								 
						
							
								a8bdac875d 
								
							 
						 
						
							
							
								
								Handle new forms of llvm.dbg intrinsics.  
							
							... 
							
							
							
							llvm-svn: 26988 
							
						 
						
							2006-03-23 18:06:46 +00:00  
				
					
						
							
							
								 
						
							
								b893d04a67 
								
							 
						 
						
							
							
								
								Fix a typo  
							
							... 
							
							
							
							llvm-svn: 26965 
							
						 
						
							2006-03-22 22:20:49 +00:00  
				
					
						
							
							
								 
						
							
								2f4119a608 
								
							 
						 
						
							
							
								
								Implement simple support for vector casting.  This can currently only handle  
							
							... 
							
							
							
							casts between legal vector types.
llvm-svn: 26961 
							
						 
						
							2006-03-22 20:09:35 +00:00  
				
					
						
							
							
								 
						
							
								7c0cd8cafc 
								
							 
						 
						
							
							
								
								add some trivial support for extractelement.  
							
							... 
							
							
							
							llvm-svn: 26928 
							
						 
						
							2006-03-21 20:44:12 +00:00  
				
					
						
							
							
								 
						
							
								672a42d731 
								
							 
						 
						
							
							
								
								Add a hacky workaround for crashes due to vectors live across blocks.  
							
							... 
							
							
							
							Note that this code won't work for vectors that aren't legal on the
target.  Improvements coming.
llvm-svn: 26925 
							
						 
						
							2006-03-21 19:20:37 +00:00  
				
					
						
							
							
								 
						
							
								29b2301460 
								
							 
						 
						
							
							
								
								implement basic support for INSERT_VECTOR_ELT.  
							
							... 
							
							
							
							llvm-svn: 26849 
							
						 
						
							2006-03-19 01:17:20 +00:00  
				
					
						
							
							
								 
						
							
								f4e1a53647 
								
							 
						 
						
							
							
								
								Rename ConstantVec -> BUILD_VECTOR and VConstant -> VBUILD_VECTOR.  Allow*BUILD_VECTOR to take variable inputs.  
							
							... 
							
							
							
							llvm-svn: 26847 
							
						 
						
							2006-03-19 00:52:58 +00:00  
				
					
						
							
							
								 
						
							
								c16b05e67d 
								
							 
						 
						
							
							
								
								implement vector.ll:test_undef  
							
							... 
							
							
							
							llvm-svn: 26845 
							
						 
						
							2006-03-19 00:20:20 +00:00  
				
					
						
							
							
								 
						
							
								32206f54c6 
								
							 
						 
						
							
							
								
								Change the structure of lowering vector stuff.  Note: This breaks some  
							
							... 
							
							
							
							things.
llvm-svn: 26840 
							
						 
						
							2006-03-18 01:44:44 +00:00  
				
					
						
							
							
								 
						
							
								bb01d4f272 
								
							 
						 
						
							
							
								
								Remove BRTWOWAY*  
							
							... 
							
							
							
							Make the PPC backend not dependent on BRTWOWAY_CC and make the branch
selector smarter about the code it generates, fixing a case in the
readme.
llvm-svn: 26814 
							
						 
						
							2006-03-17 01:40:33 +00:00  
				
					
						
							
							
								 
						
							
								7ececaad83 
								
							 
						 
						
							
							
								
								Fix a problem fully scalarizing values.  
							
							... 
							
							
							
							llvm-svn: 26811 
							
						 
						
							2006-03-16 23:05:19 +00:00  
				
					
						
							
							
								 
						
							
								8471b15706 
								
							 
						 
						
							
							
								
								Add support for CopyFromReg from vector values.  Note: this doesn't support  
							
							... 
							
							
							
							illegal vector types yet!
llvm-svn: 26799 
							
						 
						
							2006-03-16 19:57:50 +00:00  
				
					
						
							
							
								 
						
							
								49409cb925 
								
							 
						 
						
							
							
								
								Teach CreateRegForValue how to handle vector types.  
							
							... 
							
							
							
							llvm-svn: 26798 
							
						 
						
							2006-03-16 19:51:18 +00:00  
				
					
						
							
							
								 
						
							
								4024c00ce7 
								
							 
						 
						
							
							
								
								add support for vector->vector casts  
							
							... 
							
							
							
							llvm-svn: 26788 
							
						 
						
							2006-03-15 22:19:46 +00:00  
				
					
						
							
							
								 
						
							
								acb6e34277 
								
							 
						 
						
							
							
								
								Handle the removal of the debug chain.  
							
							... 
							
							
							
							llvm-svn: 26729 
							
						 
						
							2006-03-13 13:07:37 +00:00  
				
					
						
							
							
								 
						
							
								38280c0020 
								
							 
						 
						
							
							
								
								Added a parameter to control whether Constant::getStringValue() would chop  
							
							... 
							
							
							
							off the result string at the first null terminator.
llvm-svn: 26704 
							
						 
						
							2006-03-10 23:52:03 +00:00  
				
					
						
							
							
								 
						
							
								d3ef6c290a 
								
							 
						 
						
							
							
								
								scrape out bits of llvm-db  
							
							... 
							
							
							
							llvm-svn: 26701 
							
						 
						
							2006-03-10 22:48:19 +00:00  
				
					
						
							
							
								 
						
							
								5255d04357 
								
							 
						 
						
							
							
								
								Simplify the interface to the schedulers, to not pass the selected heuristicin.  
							
							... 
							
							
							
							llvm-svn: 26692 
							
						 
						
							2006-03-10 07:49:12 +00:00  
				
					
						
							
							
								 
						
							
								213209a248 
								
							 
						 
						
							
							
								
								remove dbg_declare, it's not used yet.  
							
							... 
							
							
							
							llvm-svn: 26659 
							
						 
						
							2006-03-09 20:02:42 +00:00  
				
					
						
							
							
								 
						
							
								2698f0de7a 
								
							 
						 
						
							
							
								
								Get rid of the multiple copies of getStringValue.  Now a Constant:: method.  
							
							... 
							
							
							
							llvm-svn: 26616 
							
						 
						
							2006-03-08 18:11:07 +00:00  
				
					
						
							
							
								 
						
							
								543832d39d 
								
							 
						 
						
							
							
								
								Change the interface for getting a target HazardRecognizer to be more clean.  
							
							... 
							
							
							
							llvm-svn: 26608 
							
						 
						
							2006-03-08 04:25:59 +00:00  
				
					
						
							
							
								 
						
							
								47639dbb93 
								
							 
						 
						
							
							
								
								Hoist the HazardRecognizer out of the ScheduleDAGList.cpp file to where  
							
							... 
							
							
							
							targets can implement them.  Make the top-down scheduler non-g5-specific.
Remove the old testing hazard recognizer.
llvm-svn: 26569 
							
						 
						
							2006-03-06 00:22:00 +00:00  
				
					
						
							
							
								 
						
							
								98ecb8ec61 
								
							 
						 
						
							
							
								
								Split the list scheduler into top-down and bottom-up pieces.  The priority  
							
							... 
							
							
							
							function of the top-down scheduler are completely bogus currently, and
having (future) PPC specific in this file is also wrong, but this is a
small incremental step.
llvm-svn: 26552 
							
						 
						
							2006-03-05 21:10:33 +00:00  
				
					
						
							
							
								 
						
							
								5c1ba2ac08 
								
							 
						 
						
							
							
								
								Codegen copysign[f] into a FCOPYSIGN node  
							
							... 
							
							
							
							llvm-svn: 26542 
							
						 
						
							2006-03-05 05:09:38 +00:00  
				
					
						
							
							
								 
						
							
								3bf916ddd9 
								
							 
						 
						
							
							
								
								Add more vector NodeTypes: VSDIV, VUDIV, VAND, VOR, and VXOR.  
							
							... 
							
							
							
							llvm-svn: 26504 
							
						 
						
							2006-03-03 07:01:07 +00:00  
				
					
						
							
							
								 
						
							
								ad3c974a77 
								
							 
						 
						
							
							
								
								remove the read/write port/io intrinsics.  
							
							... 
							
							
							
							llvm-svn: 26479 
							
						 
						
							2006-03-03 00:19:58 +00:00  
				
					
						
							
							
								 
						
							
								093c159efb 
								
							 
						 
						
							
							
								
								Split memcpy/memset/memmove intrinsics into i32/i64 versions, resolving  
							
							... 
							
							
							
							PR709, and paving the way for future progress.
llvm-svn: 26476 
							
						 
						
							2006-03-03 00:00:25 +00:00  
				
					
						
							
							
								 
						
							
								b97aab4371 
								
							 
						 
						
							
							
								
								Vector ops lowering.  
							
							... 
							
							
							
							llvm-svn: 26436 
							
						 
						
							2006-03-01 01:09:54 +00:00  
				
					
						
							
							
								 
						
							
								9fed5b6122 
								
							 
						 
						
							
							
								
								Add support for output memory constraints.  
							
							... 
							
							
							
							llvm-svn: 26410 
							
						 
						
							2006-02-27 23:45:39 +00:00  
				
					
						
							
							
								 
						
							
								83c22e0d75 
								
							 
						 
						
							
							
								
								Get VC++ building again.  
							
							... 
							
							
							
							llvm-svn: 26351 
							
						 
						
							2006-02-24 02:52:40 +00:00  
				
					
						
							
							
								 
						
							
								dcf785bf46 
								
							 
						 
						
							
							
								
								Implement (most of) selection of inline asm memory operands.  
							
							... 
							
							
							
							llvm-svn: 26350 
							
						 
						
							2006-02-24 02:13:54 +00:00  
				
					
						
							
							
								 
						
							
								7ef7a64ebb 
								
							 
						 
						
							
							
								
								Lower C_Memory operands.  
							
							... 
							
							
							
							llvm-svn: 26346 
							
						 
						
							2006-02-24 01:11:24 +00:00  
				
					
						
							
							
								 
						
							
								e7c0ffb3a0 
								
							 
						 
						
							
							
								
								Fix an endianness problem on big-endian targets with expanded operands  
							
							... 
							
							
							
							to inline asms.  Mark some methods const.
llvm-svn: 26334 
							
						 
						
							2006-02-23 20:06:57 +00:00  
				
					
						
							
							
								 
						
							
								571d9647c6 
								
							 
						 
						
							
							
								
								Record all of the expanded registers in the DAG and machine instr, fixing  
							
							... 
							
							
							
							several bugs in inline asm expanded operands.
llvm-svn: 26332 
							
						 
						
							2006-02-23 19:21:04 +00:00  
				
					
						
							
							
								 
						
							
								b1124f3c76 
								
							 
						 
						
							
							
								
								This fixes a couple of problems with expansion  
							
							... 
							
							
							
							llvm-svn: 26318 
							
						 
						
							2006-02-22 23:09:03 +00:00  
				
					
						
							
							
								 
						
							
								6f87d18be9 
								
							 
						 
						
							
							
								
								Change a whole bunch of code to be built around RegsForValue instead of  
							
							... 
							
							
							
							a single register number.  This fully implements promotion for inline asms,
expand is close but not quite right yet.
llvm-svn: 26316 
							
						 
						
							2006-02-22 22:37:12 +00:00  
				
					
						
							
							
								 
						
							
								7ad77dfc2a 
								
							 
						 
						
							
							
								
								split register class handling from explicit physreg handling.  
							
							... 
							
							
							
							llvm-svn: 26308 
							
						 
						
							2006-02-22 00:56:39 +00:00  
				
					
						
							
							
								 
						
							
								5c79f98f15 
								
							 
						 
						
							
							
								
								Adjust to changes in getRegForInlineAsmConstraint prototype  
							
							... 
							
							
							
							llvm-svn: 26306 
							
						 
						
							2006-02-21 23:12:12 +00:00  
				
					
						
							
							
								 
						
							
								c3dcf5a4d7 
								
							 
						 
						
							
							
								
								Dumb bug. Code sees a memcpy from X+c so it increments src offset. But it  
							
							... 
							
							
							
							turns out not to point to a constant string but it forgot change the offset
back.
llvm-svn: 26242 
							
						 
						
							2006-02-16 23:11:42 +00:00  
				
					
						
							
							
								 
						
							
								42c01c8d39 
								
							 
						 
						
							
							
								
								If the false case is the current basic block, then this is a self loop.  
							
							... 
							
							
							
							We do not want to emit "Loop: ... brcond Out; br Loop", as it adds an extra
instruction in the loop.  Instead, invert the condition and emit
"Loop: ... br!cond Loop; br Out.
Generalize the fix by moving it from PPCDAGToDAGISel to SelectionDAGLowering.
llvm-svn: 26231 
							
						 
						
							2006-02-16 08:27:56 +00:00  
				
					
						
							
							
								 
						
							
								93e4865d4b 
								
							 
						 
						
							
							
								
								Remove an unused function parameter.  
							
							... 
							
							
							
							llvm-svn: 26221 
							
						 
						
							2006-02-15 22:12:35 +00:00  
				
					
						
							
							
								 
						
							
								6781b6e62e 
								
							 
						 
						
							
							
								
								Turn a memcpy from string constant into a series of stores of constant values.  
							
							... 
							
							
							
							llvm-svn: 26219 
							
						 
						
							2006-02-15 21:59:04 +00:00  
				
					
						
							
							
								 
						
							
								e2038bdeee 
								
							 
						 
						
							
							
								
								Lower memcpy with small constant size operand into a series of load / store  
							
							... 
							
							
							
							ops.
llvm-svn: 26195 
							
						 
						
							2006-02-15 01:54:51 +00:00  
				
					
						
							
							
								 
						
							
								0451499b3c 
								
							 
						 
						
							
							
								
								Doh again!  
							
							... 
							
							
							
							llvm-svn: 26188 
							
						 
						
							2006-02-14 23:05:54 +00:00  
				
					
						
							
							
								 
						
							
								db2a7a736a 
								
							 
						 
						
							
							
								
								Keep to < 80 cols  
							
							... 
							
							
							
							llvm-svn: 26177 
							
						 
						
							2006-02-14 20:12:38 +00:00  
				
					
						
							
							
								 
						
							
								038521ef76 
								
							 
						 
						
							
							
								
								Missed a break so memcpy cases fell through to memset. Doh.  
							
							... 
							
							
							
							llvm-svn: 26176 
							
						 
						
							2006-02-14 19:45:56 +00:00  
				
					
						
							
							
								 
						
							
								d502610604 
								
							 
						 
						
							
							
								
								Fixed a build breakage.  
							
							... 
							
							
							
							llvm-svn: 26175 
							
						 
						
							2006-02-14 09:11:59 +00:00  
				
					
						
							
							
								 
						
							
								4b40a42653 
								
							 
						 
						
							
							
								
								Rename maxStoresPerMemSet to maxStoresPerMemset, etc.  
							
							... 
							
							
							
							llvm-svn: 26174 
							
						 
						
							2006-02-14 08:38:30 +00:00  
				
					
						
							
							
								 
						
							
								81fcea8aa2 
								
							 
						 
						
							
							
								
								Expand memset dst, c, size to a series of stores if size falls below the  
							
							... 
							
							
							
							target specific theshold, e.g. 16 for x86.
llvm-svn: 26171 
							
						 
						
							2006-02-14 08:22:34 +00:00  
				
					
						
							
							
								 
						
							
								1784a9d267 
								
							 
						 
						
							
							
								
								now that libcalls don't suck, we can remove this hack  
							
							... 
							
							
							
							llvm-svn: 26164 
							
						 
						
							2006-02-14 05:39:35 +00:00  
				
					
						
							
							
								 
						
							
								390c63e9d9 
								
							 
						 
						
							
							
								
								Rename to better reflect usage (current and planned.)  
							
							... 
							
							
							
							llvm-svn: 26145 
							
						 
						
							2006-02-13 12:50:39 +00:00  
				
					
						
							
							
								 
						
							
								5995d0160c 
								
							 
						 
						
							
							
								
								Reorg for integration with gcc4.  Old style debug info will not be passed though  
							
							... 
							
							
							
							to SelIDAG.
llvm-svn: 26115 
							
						 
						
							2006-02-11 01:01:30 +00:00  
				
					
						
							
							
								 
						
							
								f9adce90bf 
								
							 
						 
						
							
							
								
								Get rid of some memory leaks identified by Valgrind  
							
							... 
							
							
							
							llvm-svn: 25960 
							
						 
						
							2006-02-04 06:49:00 +00:00  
				
					
						
							
							
								 
						
							
								3b48431333 
								
							 
						 
						
							
							
								
								Add initial support for immediates.  This allows us to compile this:  
							
							... 
							
							
							
							int %rlwnm(int %A, int %B) {
  %C = call int asm "rlwnm $0, $1, $2, $3, $4", "=r,r,r,n,n"(int %A, int %B, int 4, int 17)
  ret int %C
}
into:
_rlwnm:
        or r2, r3, r3
        or r3, r4, r4
        rlwnm r2, r2, r3, 4, 17    ;; note the immediates :)
        or r3, r2, r2
        blr
llvm-svn: 25955 
							
						 
						
							2006-02-04 02:26:14 +00:00  
				
					
						
							
							
								 
						
							
								65ad53feb3 
								
							 
						 
						
							
							
								
								Initial early support for non-register operands, like immediates  
							
							... 
							
							
							
							llvm-svn: 25952 
							
						 
						
							2006-02-04 02:16:44 +00:00  
				
					
						
							
							
								 
						
							
								f68fd20286 
								
							 
						 
						
							
							
								
								remove some #ifdef'd out code, which should properly be in the dag combiner anyway.  
							
							... 
							
							
							
							llvm-svn: 25941 
							
						 
						
							2006-02-03 20:13:59 +00:00  
				
					
						
							
							
								 
						
							
								7f5880b1c7 
								
							 
						 
						
							
							
								
								Implement matching constraints.  We can now say things like this:  
							
							... 
							
							
							
							%C = call int asm "xyz $0, $1, $2, $3", "=r,r,r,0"(int %A, int %B, int 4)
and get:
xyz r2, r3, r4, r2
note that the r2's are pinned together.  Yaay for 2-address instructions.
2342 ----------------------------------------------------------------------
llvm-svn: 25893 
							
						 
						
							2006-02-02 00:25:23 +00:00  
				
					
						
							
							
								 
						
							
								1558fc64f9 
								
							 
						 
						
							
							
								
								Implement simple register assignment for inline asms.  This allows us to compile:  
							
							... 
							
							
							
							int %test(int %A, int %B) {
  %C = call int asm "xyz $0, $1, $2", "=r,r,r"(int %A, int %B)
  ret int %C
}
into:
 (0x8906130, LLVM BB @0x8902220):
        %r2 = OR4 %r3, %r3
        %r3 = OR4 %r4, %r4
        INLINEASM <es:xyz $0, $1, $2>, %r2<def>, %r2, %r3
        %r3 = OR4 %r2, %r2
        BLR
which asmprints as:
_test:
        or r2, r3, r3
        or r3, r4, r4
        xyz $0, $1, $2      ;; need to print the operands now :)
        or r3, r2, r2
        blr
llvm-svn: 25878 
							
						 
						
							2006-02-01 18:59:47 +00:00  
				
					
						
							
							
								 
						
							
								3a5ed55187 
								
							 
						 
						
							
							
								
								adjust to changes in InlineAsm interface.  Fix a few minor bugs.  
							
							... 
							
							
							
							llvm-svn: 25865 
							
						 
						
							2006-02-01 01:28:23 +00:00  
				
					
						
							
							
								 
						
							
								2e56e89452 
								
							 
						 
						
							
							
								
								Handle physreg input/outputs.  We now compile this:  
							
							... 
							
							
							
							int %test_cpuid(int %op) {
        %B = alloca int
        %C = alloca int
        %D = alloca int
        %A = call int asm "cpuid", "=eax,==ebx,==ecx,==edx,eax"(int* %B, int* %C, int* %D, int %op)
        %Bv = load int* %B
        %Cv = load int* %C
        %Dv = load int* %D
        %x = add int %A, %Bv
        %y = add int %x, %Cv
        %z = add int %y, %Dv
        ret int %z
}
to this:
_test_cpuid:
        sub %ESP, 16
        mov DWORD PTR [%ESP], %EBX
        mov %EAX, DWORD PTR [%ESP + 20]
        cpuid
        mov DWORD PTR [%ESP + 8], %ECX
        mov DWORD PTR [%ESP + 12], %EBX
        mov DWORD PTR [%ESP + 4], %EDX
        mov %ECX, DWORD PTR [%ESP + 12]
        add %EAX, %ECX
        mov %ECX, DWORD PTR [%ESP + 8]
        add %EAX, %ECX
        mov %ECX, DWORD PTR [%ESP + 4]
        add %EAX, %ECX
        mov %EBX, DWORD PTR [%ESP]
        add %ESP, 16
        ret
... note the proper register allocation.  :)
it is unclear to me why the loads aren't folded into the adds.
llvm-svn: 25827 
							
						 
						
							2006-01-31 02:03:41 +00:00  
				
					
						
							
							
								 
						
							
								98ed05c81d 
								
							 
						 
						
							
							
								
								remove method I just added  
							
							... 
							
							
							
							llvm-svn: 25728 
							
						 
						
							2006-01-28 03:43:09 +00:00  
				
					
						
							
							
								 
						
							
								43b867dd3b 
								
							 
						 
						
							
							
								
								add a new callback  
							
							... 
							
							
							
							llvm-svn: 25727 
							
						 
						
							2006-01-28 03:37:03 +00:00  
				
					
						
							
							
								 
						
							
								595ec734fc 
								
							 
						 
						
							
							
								
								Implement Promote for VAARG, and allow it to be custom promoted for people  
							
							... 
							
							
							
							who don't want the default behavior (Alpha).
llvm-svn: 25726 
							
						 
						
							2006-01-28 03:14:31 +00:00  
				
					
						
							
							
								 
						
							
								8c47c3a3b1 
								
							 
						 
						
							
							
								
								Remove TLI.LowerReturnTo, and just let targets custom lower ISD::RET for  
							
							... 
							
							
							
							the same functionality.  This addresses another piece of bug 680.  Next,
on to fixing Alpha VAARG, which I broke last time.
llvm-svn: 25696 
							
						 
						
							2006-01-27 21:09:22 +00:00  
				
					
						
							
							
								 
						
							
								476e67be14 
								
							 
						 
						
							
							
								
								initial selectiondag support for new INLINEASM node.  Note that inline asms  
							
							... 
							
							
							
							with outputs or inputs are not supported yet. :)
llvm-svn: 25664 
							
						 
						
							2006-01-26 22:24:51 +00:00  
				
					
						
							
							
								 
						
							
								e74795cd70 
								
							 
						 
						
							
							
								
								First part of bug 680:  
							
							... 
							
							
							
							Remove TLI.LowerVA* and replace it with SDNodes that are lowered the same
way as everything else.
llvm-svn: 25606 
							
						 
						
							2006-01-25 18:21:52 +00:00  
				
					
						
							
							
								 
						
							
								a6eff8a432 
								
							 
						 
						
							
							
								
								If scheduler choice is the default (-sched=default), use target scheduling  
							
							... 
							
							
							
							preference to determine which scheduler to use. SchedulingForLatency ==
Breadth first; SchedulingForRegPressure == bottom up register reduction list
scheduler.
llvm-svn: 25599 
							
						 
						
							2006-01-25 09:12:57 +00:00  
				
					
						
							
							
								 
						
							
								b8566fa10a 
								
							 
						 
						
							
							
								
								Typo.  
							
							... 
							
							
							
							llvm-svn: 25545 
							
						 
						
							2006-01-23 13:34:04 +00:00  
				
					
						
							
							
								 
						
							
								31272347d4 
								
							 
						 
						
							
							
								
								Skeleton of the list schedule.  
							
							... 
							
							
							
							llvm-svn: 25544 
							
						 
						
							2006-01-23 08:26:10 +00:00  
				
					
						
							
							
								 
						
							
								c1e1d9724d 
								
							 
						 
						
							
							
								
								Factor out more instruction scheduler code to the base class.  
							
							... 
							
							
							
							llvm-svn: 25532 
							
						 
						
							2006-01-23 07:01:07 +00:00  
				
					
						
							
							
								 
						
							
								deda32a786 
								
							 
						 
						
							
							
								
								Fix bugs lowering stackrestore, fixing 2004-08-12-InlinerAndAllocas.c on  
							
							... 
							
							
							
							PPC.
llvm-svn: 25522 
							
						 
						
							2006-01-23 05:22:07 +00:00  
				
					
						
							
							
								 
						
							
								e23928c67f 
								
							 
						 
						
							
							
								
								Fix a bug in a recent refactor that caused a bunch of programs to miscompile  
							
							... 
							
							
							
							or the compiler to crash.
llvm-svn: 25503 
							
						 
						
							2006-01-21 19:12:11 +00:00  
				
					
						
							
							
								 
						
							
								739a6a456e 
								
							 
						 
						
							
							
								
								Do some code refactoring on Jim's scheduler in preparation of the new list  
							
							... 
							
							
							
							scheduler.
llvm-svn: 25493 
							
						 
						
							2006-01-21 02:32:06 +00:00  
				
					
						
							
							
								 
						
							
								222ceabbee 
								
							 
						 
						
							
							
								
								If the target doesn't support f32 natively, insert the FP_EXTEND in target-indep  
							
							... 
							
							
							
							code, so that the LowerReturn code doesn't have to handle it.
llvm-svn: 25482 
							
						 
						
							2006-01-20 18:38:32 +00:00  
				
					
						
							
							
								 
						
							
								e2ee190821 
								
							 
						 
						
							
							
								
								Temporary work around for a libcall insertion bug: If a target doesn't  
							
							... 
							
							
							
							support FSIN/FCOS nodes, do not lower sin/cos to them.
llvm-svn: 25425 
							
						 
						
							2006-01-18 21:50:14 +00:00  
				
					
						
							
							
								 
						
							
								03e95af9f7 
								
							 
						 
						
							
							
								
								Support for the insertelement operation.  
							
							... 
							
							
							
							llvm-svn: 25405 
							
						 
						
							2006-01-17 20:06:42 +00:00  
				
					
						
							
							
								 
						
							
								b4f9a6f110 
								
							 
						 
						
							
							
								
								For PR411:  
							
							... 
							
							
							
							This patch is an incremental step towards supporting a flat symbol table.
It de-overloads the intrinsic functions by providing type-specific intrinsics
and arranging for automatically upgrading from the old overloaded name to
the new non-overloaded name. Specifically:
  llvm.isunordered -> llvm.isunordered.f32, llvm.isunordered.f64
  llvm.sqrt -> llvm.sqrt.f32, llvm.sqrt.f64
  llvm.ctpop -> llvm.ctpop.i8, llvm.ctpop.i16, llvm.ctpop.i32, llvm.ctpop.i64
  llvm.ctlz -> llvm.ctlz.i8, llvm.ctlz.i16, llvm.ctlz.i32, llvm.ctlz.i64
  llvm.cttz -> llvm.cttz.i8, llvm.cttz.i16, llvm.cttz.i32, llvm.cttz.i64
New code should not use the overloaded intrinsic names. Warnings will be
emitted if they are used.
llvm-svn: 25366 
							
						 
						
							2006-01-16 21:12:35 +00:00  
				
					
						
							
							
								 
						
							
								542c3c17a9 
								
							 
						 
						
							
							
								
								Remove some duplicated code  
							
							... 
							
							
							
							llvm-svn: 25313 
							
						 
						
							2006-01-14 03:18:27 +00:00  
				
					
						
							
							
								 
						
							
								2fba8a3aaa 
								
							 
						 
						
							
							
								
								bswap implementation  
							
							... 
							
							
							
							llvm-svn: 25312 
							
						 
						
							2006-01-14 03:14:10 +00:00  
				
					
						
							
							
								 
						
							
								b32664583b 
								
							 
						 
						
							
							
								
								Compile llvm.stacksave/restore into STACKSAVE/STACKRESTORE nodes, and allow  
							
							... 
							
							
							
							targets to custom expand them as they desire.
llvm-svn: 25273 
							
						 
						
							2006-01-13 02:50:02 +00:00  
				
					
						
							
							
								 
						
							
								6c9c250dcd 
								
							 
						 
						
							
							
								
								Add "support" for stacksave/stackrestore to the dag isel  
							
							... 
							
							
							
							llvm-svn: 25268 
							
						 
						
							2006-01-13 02:24:42 +00:00  
				
					
						
							
							
								 
						
							
								2c966e7617 
								
							 
						 
						
							
							
								
								Added selection DAG support for the extractelement operation.  
							
							... 
							
							
							
							llvm-svn: 25179 
							
						 
						
							2006-01-10 19:04:57 +00:00  
				
					
						
							
							
								 
						
							
								219d559824 
								
							 
						 
						
							
							
								
								Applied some recommend changes from sabre.  The dominate one beginning "let the  
							
							... 
							
							
							
							pass manager do it's thing."  Fixes crash when compiling -g files and suppresses
dwarf statements if no debug info is present.
llvm-svn: 25100 
							
						 
						
							2006-01-04 22:28:25 +00:00  
				
					
						
							
							
								 
						
							
								44c07ed61a 
								
							 
						 
						
							
							
								
								enable the gep isel opt  
							
							... 
							
							
							
							llvm-svn: 24910 
							
						 
						
							2005-12-21 19:36:36 +00:00  
				
					
						
							
							
								 
						
							
								803a575616 
								
							 
						 
						
							
							
								
								Lower ConstantAggregateZero into zeros  
							
							... 
							
							
							
							llvm-svn: 24890 
							
						 
						
							2005-12-21 02:43:26 +00:00  
				
					
						
							
							
								 
						
							
								7c462768ed 
								
							 
						 
						
							
							
								
								Added source file/line correspondence for dwarf (PowerPC only at this point.)  
							
							... 
							
							
							
							llvm-svn: 24748 
							
						 
						
							2005-12-16 22:45:29 +00:00  
				
					
						
							
							
								 
						
							
								5d4e61dd87 
								
							 
						 
						
							
							
								
								Don't lump the filename and working dir together  
							
							... 
							
							
							
							llvm-svn: 24697 
							
						 
						
							2005-12-13 17:40:33 +00:00  
				
					
						
							
							
								 
						
							
								9e8b633ec1 
								
							 
						 
						
							
							
								
								Accept and ignore prefetches for now  
							
							... 
							
							
							
							llvm-svn: 24678 
							
						 
						
							2005-12-12 22:51:16 +00:00  
				
					
						
							
							
								 
						
							
								f1a54c0d14 
								
							 
						 
						
							
							
								
								Minor tweak to get isel opt  
							
							... 
							
							
							
							llvm-svn: 24663 
							
						 
						
							2005-12-11 09:05:13 +00:00  
				
					
						
							
							
								 
						
							
								be73d6eece 
								
							 
						 
						
							
							
								
								improve code insertion in two ways:  
							
							... 
							
							
							
							1. Only forward subst offsets into loads and stores, not into arbitrary
   things, where it will likely become a load.
2. If the source is a cast from pointer, forward subst the cast as well,
   allowing us to fold the cast away (improving cases when the cast is
   from an alloca or global).
This hasn't been fully tested, but does appear to further reduce register
pressure and improve code.  Lets let the testers grind on it a bit. :)
llvm-svn: 24640 
							
						 
						
							2005-12-08 08:00:12 +00:00  
				
					
						
							
							
								 
						
							
								ae89d862f5 
								
							 
						 
						
							
							
								
								Fix a crash where ConstantVec nodes were being generated with the wrong  
							
							... 
							
							
							
							type when the target did not support them.  Also teach Legalize how to
expand ConstantVecs.
This allows us to generate
_test:
        lwz r2, 12(r3)
        lwz r4, 8(r3)
        lwz r5, 4(r3)
        lwz r6, 0(r3)
        addi r2, r2, 4
        addi r4, r4, 3
        addi r5, r5, 2
        addi r6, r6, 1
        stw r2, 12(r3)
        stw r4, 8(r3)
        stw r5, 4(r3)
        stw r6, 0(r3)
        blr
For:
void %test(%v4i *%P) {
        %T = load %v4i* %P
        %S = add %v4i %T, <int 1, int 2, int 3, int 4>
        store %v4i %S, %v4i * %P
        ret void
}
On PowerPC.
llvm-svn: 24633 
							
						 
						
							2005-12-07 19:48:11 +00:00  
				
					
						
							
							
								 
						
							
								41b1cdc771 
								
							 
						 
						
							
							
								
								Teach the SelectionDAG ISel how to turn ConstantPacked values into  
							
							... 
							
							
							
							constant nodes with vector types.  Also teach the asm printer how to print
ConstantPacked constant pool entries.  This allows us to generate altivec
code such as the following, which adds a vector constantto a packed float.
LCPI1_0:  <4 x float> < float 0.0e+0, float 0.0e+0, float 0.0e+0, float 1.0e+0 >
        .space  4
        .space  4
        .space  4
        .long   1065353216      ; float 1
        .text
        .align  4
        .globl  _foo
_foo:
        lis r2, ha16(LCPI1_0)
        la r2, lo16(LCPI1_0)(r2)
        li r4, 0
        lvx v0, r4, r2
        lvx v1, r4, r3
        vaddfp v0, v1, v0
        stvx v0, r4, r3
        blr
For the llvm code:
void %foo(<4 x float> * %a) {
entry:
  %tmp1 = load <4 x float> * %a;
  %tmp2 = add <4 x float> %tmp1, < float 0.0, float 0.0, float 0.0, float 1.0 >
  store <4 x float> %tmp2, <4 x float> *%a
  ret void
}
llvm-svn: 24616 
							
						 
						
							2005-12-06 06:18:55 +00:00  
				
					
						
							
							
								 
						
							
								3539778883 
								
							 
						 
						
							
							
								
								Fix the  #1  code quality problem that I have seen on X86 (and it also affects  
							
							... 
							
							
							
							PPC and other targets).  In a particular, consider code like this:
struct Vector3 { double x, y, z; };
struct Matrix3 { Vector3 a, b, c; };
double dot(Vector3 &a, Vector3 &b) {
   return a.x * b.x  +  a.y * b.y  +  a.z * b.z;
}
Vector3 mul(Vector3 &a, Matrix3 &b) {
   Vector3 r;
   r.x = dot( a, b.a );
   r.y = dot( a, b.b );
   r.z = dot( a, b.c );
   return r;
}
void transform(Matrix3 &m, Vector3 *x, int n) {
   for (int i = 0; i < n; i++)
      x[i] = mul( x[i], m );
}
we compile transform to a loop with all of the GEP instructions for indexing
into 'm' pulled out of the loop (9 of them).  Because isel occurs a bb at a time
we are unable to fold the constant index into the loads in the loop, leading to
PPC code that looks like this:
LBB3_1: ; no_exit.preheader
        li r2, 0
        addi r6, r3, 64        ;; 9 values live across the loop body!
        addi r7, r3, 56
        addi r8, r3, 48
        addi r9, r3, 40
        addi r10, r3, 32
        addi r11, r3, 24
        addi r12, r3, 16
        addi r30, r3, 8
LBB3_2: ; no_exit
        lfd f0, 0(r30)
        lfd f1, 8(r4)
        fmul f0, f1, f0
        lfd f2, 0(r3)        ;; no constant indices folded into the loads!
        lfd f3, 0(r4)
        lfd f4, 0(r10)
        lfd f5, 0(r6)
        lfd f6, 0(r7)
        lfd f7, 0(r8)
        lfd f8, 0(r9)
        lfd f9, 0(r11)
        lfd f10, 0(r12)
        lfd f11, 16(r4)
        fmadd f0, f3, f2, f0
        fmul f2, f1, f4
        fmadd f0, f11, f10, f0
        fmadd f2, f3, f9, f2
        fmul f1, f1, f6
        stfd f0, 0(r4)
        fmadd f0, f11, f8, f2
        fmadd f1, f3, f7, f1
        stfd f0, 8(r4)
        fmadd f0, f11, f5, f1
        addi r29, r4, 24
        stfd f0, 16(r4)
        addi r2, r2, 1
        cmpw cr0, r2, r5
        or r4, r29, r29
        bne cr0, LBB3_2 ; no_exit
uh, yuck.  With this patch, we now sink the constant offsets into the loop, producing
this code:
LBB3_1: ; no_exit.preheader
        li r2, 0
LBB3_2: ; no_exit
        lfd f0, 8(r3)
        lfd f1, 8(r4)
        fmul f0, f1, f0
        lfd f2, 0(r3)
        lfd f3, 0(r4)
        lfd f4, 32(r3)       ;; much nicer.
        lfd f5, 64(r3)
        lfd f6, 56(r3)
        lfd f7, 48(r3)
        lfd f8, 40(r3)
        lfd f9, 24(r3)
        lfd f10, 16(r3)
        lfd f11, 16(r4)
        fmadd f0, f3, f2, f0
        fmul f2, f1, f4
        fmadd f0, f11, f10, f0
        fmadd f2, f3, f9, f2
        fmul f1, f1, f6
        stfd f0, 0(r4)
        fmadd f0, f11, f8, f2
        fmadd f1, f3, f7, f1
        stfd f0, 8(r4)
        fmadd f0, f11, f5, f1
        addi r6, r4, 24
        stfd f0, 16(r4)
        addi r2, r2, 1
        cmpw cr0, r2, r5
        or r4, r6, r6
        bne cr0, LBB3_2 ; no_exit
This is much nicer as it reduces register pressure in the loop a lot.  On X86,
this takes the function from having 9 spilled registers to 2.  This should help
some spec programs on X86 (gzip?)
This is currently only enabled with -enable-gep-isel-opt to allow perf testing
tonight.
llvm-svn: 24606 
							
						 
						
							2005-12-05 07:10:48 +00:00  
				
					
						
							
							
								 
						
							
								8782b782cd 
								
							 
						 
						
							
							
								
								dbg.stoppoint returns a value, don't forget to init it  
							
							... 
							
							
							
							llvm-svn: 24583 
							
						 
						
							2005-12-03 18:50:48 +00:00  
				
					
						
							
							
								 
						
							
								1064d6ec43 
								
							 
						 
						
							
							
								
								First chunk of actually generating vector code for packed types.  These  
							
							... 
							
							
							
							changes allow us to generate the following code:
_foo:
        li r2, 0
        lvx v0, r2, r3
        vaddfp v0, v0, v0
        stvx v0, r2, r3
        blr
for this llvm:
void %foo(<4 x float>* %a) {
entry:
        %tmp1 = load <4 x float>* %a
        %tmp2 = add <4 x float> %tmp1, %tmp1
        store <4 x float> %tmp2, <4 x float>* %a
        ret void
}
llvm-svn: 24534 
							
						 
						
							2005-11-30 08:22:07 +00:00  
				
					
						
							
							
								 
						
							
								3fd1b4c9bf 
								
							 
						 
						
							
							
								
								Fix a problem with llvm-ranlib that (on some platforms) caused the archive  
							
							... 
							
							
							
							file to become corrupted due to interactions between mmap'd memory segments
and file descriptors closing. The problem is completely avoiding by using
a third temporary file.
Patch provided by Evan Jones
llvm-svn: 24527 
							
						 
						
							2005-11-30 05:21:10 +00:00  
				
					
						
							
							
								 
						
							
								435b402e1f 
								
							 
						 
						
							
							
								
								Add support for a new STRING and LOCATION node for line number support, patch  
							
							... 
							
							
							
							contributed by Daniel Berlin, with a few cleanups here and there by me.
llvm-svn: 24515 
							
						 
						
							2005-11-29 06:21:05 +00:00  
				
					
						
							
							
								 
						
							
								d37c13154a 
								
							 
						 
						
							
							
								
								Check in code to scalarize arbitrarily wide packed types for some simple  
							
							... 
							
							
							
							vector operations (load, add, sub, mul).
This allows us to codegen:
void %foo(<4 x float> * %a) {
entry:
  %tmp1 = load <4 x float> * %a;
  %tmp2 = add <4 x float> %tmp1, %tmp1
  store <4 x float> %tmp2, <4 x float> *%a
  ret void
}
on ppc as:
_foo:
        lfs f0, 12(r3)
        lfs f1, 8(r3)
        lfs f2, 4(r3)
        lfs f3, 0(r3)
        fadds f0, f0, f0
        fadds f1, f1, f1
        fadds f2, f2, f2
        fadds f3, f3, f3
        stfs f0, 12(r3)
        stfs f1, 8(r3)
        stfs f2, 4(r3)
        stfs f3, 0(r3)
        blr
llvm-svn: 24484 
							
						 
						
							2005-11-22 18:16:00 +00:00  
				
					
						
							
							
								 
						
							
								07890bbec4 
								
							 
						 
						
							
							
								
								Rather than attempting to legalize 1 x float, make sure the SD ISel never  
							
							... 
							
							
							
							generates it.  Make MVT::Vector expand-only, and remove the code in
Legalize that attempts to legalize it.
The plan for supporting N x Type is to continually epxand it in ExpandOp
until it gets down to 2 x Type, where it will be scalarized into a pair of
scalars.
llvm-svn: 24482 
							
						 
						
							2005-11-22 01:29:36 +00:00  
				
					
						
							
							
								 
						
							
								19baba67b5 
								
							 
						 
						
							
							
								
								Unbreak codegen of bools.  This should fix the llc/jit/llc-beta failures  
							
							... 
							
							
							
							from last night.
llvm-svn: 24427 
							
						 
						
							2005-11-19 18:40:42 +00:00  
				
					
						
							
							
								 
						
							
								b2e089c31b 
								
							 
						 
						
							
							
								
								Teach LLVM how to scalarize packed types.  Currently, this only works on  
							
							... 
							
							
							
							packed types with an element count of 1, although more generic support is
coming.  This allows LLVM to turn the following code:
void %foo(<1 x float> * %a) {
entry:
  %tmp1 = load <1 x float> * %a;
  %tmp2 = add <1 x float> %tmp1, %tmp1
  store <1 x float> %tmp2, <1 x float> *%a
  ret void
}
Into:
_foo:
        lfs f0, 0(r3)
        fadds f0, f0, f0
        stfs f0, 0(r3)
        blr
llvm-svn: 24416 
							
						 
						
							2005-11-19 00:36:38 +00:00  
				
					
						
							
							
								 
						
							
								127321b14c 
								
							 
						 
						
							
							
								
								Split out the shift code from visitBinary.  
							
							... 
							
							
							
							llvm-svn: 24412 
							
						 
						
							2005-11-18 07:42:56 +00:00  
				
					
						
							
							
								 
						
							
								f2b62f317c 
								
							 
						 
						
							
							
								
								when debugging lower dbg intrinsics to calls  
							
							... 
							
							
							
							llvm-svn: 24377 
							
						 
						
							2005-11-16 07:22:30 +00:00  
				
					
						
							
							
								 
						
							
								de1b5d6baa 
								
							 
						 
						
							
							
								
								added a chain output  
							
							... 
							
							
							
							llvm-svn: 24306 
							
						 
						
							2005-11-11 22:48:54 +00:00  
				
					
						
							
							
								 
						
							
								01aa56397d 
								
							 
						 
						
							
							
								
								continued readcyclecounter support  
							
							... 
							
							
							
							llvm-svn: 24300 
							
						 
						
							2005-11-11 16:47:30 +00:00  
				
					
						
							
							
								 
						
							
								cd6f0f47f2 
								
							 
						 
						
							
							
								
								Refactor intrinsic lowering stuff out of visitCall  
							
							... 
							
							
							
							llvm-svn: 24261 
							
						 
						
							2005-11-09 19:44:01 +00:00  
				
					
						
							
							
								 
						
							
								41fd6d5d27 
								
							 
						 
						
							
							
								
								Fix CodeGen/X86/shift-folding.ll:test3 on X86  
							
							... 
							
							
							
							llvm-svn: 24256 
							
						 
						
							2005-11-09 16:50:40 +00:00  
				
					
						
							
							
								 
						
							
								b7cad90e55 
								
							 
						 
						
							
							
								
								Avoid creating a token factor node in trivially redundant cases.  This  
							
							... 
							
							
							
							eliminates almost one node per block in common cases.
llvm-svn: 24254 
							
						 
						
							2005-11-09 05:03:03 +00:00  
				
					
						
							
							
								 
						
							
								43535a19b1 
								
							 
						 
						
							
							
								
								Handle GEP's a bit more intelligently.  Fold constant indices early and  
							
							... 
							
							
							
							turn power-of-two multiplies into shifts early to improve compile time.
llvm-svn: 24253 
							
						 
						
							2005-11-09 04:45:33 +00:00  
				
					
						
							
							
								 
						
							
								3ee3e69556 
								
							 
						 
						
							
							
								
								Add the necessary support to the ISel to allow targets to codegen the new  
							
							... 
							
							
							
							alignment information appropriately.  Includes code for PowerPC to support
fixed-size allocas with alignment larger than the stack.  Support for
arbitrarily aligned dynamic allocas coming soon.
llvm-svn: 24224 
							
						 
						
							2005-11-06 09:00:38 +00:00  
				
					
						
							
							
								 
						
							
								6871b23d02 
								
							 
						 
						
							
							
								
								Significantly simplify this code and make it more aggressive.  Instead of having  
							
							... 
							
							
							
							a special case hack for X86, make the hack more general: if an incoming argument
register is not used in any block other than the entry block, don't copy it to
a vreg.  This helps us compile code like this:
%struct.foo = type { int, int, [0 x ubyte] }
int %test(%struct.foo* %X) {
        %tmp1 = getelementptr %struct.foo* %X, int 0, uint 2, int 100
        %tmp = load ubyte* %tmp1                ; <ubyte> [#uses=1]
        %tmp2 = cast ubyte %tmp to int          ; <int> [#uses=1]
        ret int %tmp2
}
to:
_test:
        lbz r3, 108(r3)
        blr
instead of:
_test:
        lbz r2, 108(r3)
        or r3, r2, r2
        blr
The (dead) copy emitted to copy r3 into a vreg for extra-block uses was
increasing the live range of r3 past the load, preventing the coallescing.
This implements CodeGen/PowerPC/reg-coallesce-simple.ll
llvm-svn: 24115 
							
						 
						
							2005-10-30 19:42:35 +00:00  
				
					
						
							
							
								 
						
							
								78afac2ddd 
								
							 
						 
						
							
							
								
								Add the ability to lower return instructions to TargetLowering.  This  
							
							... 
							
							
							
							allows us to lower legal return types to something else, to meet ABI
requirements (such as that i64 be returned in two i32 regs on Darwin/ppc).
llvm-svn: 23802 
							
						 
						
							2005-10-18 23:23:37 +00:00  
				
					
						
							
							
								 
						
							
								0a71a9ac86 
								
							 
						 
						
							
							
								
								Fix Generic/2005-10-18-ZeroSizeStackObject.ll by not requesting a zero  
							
							... 
							
							
							
							sized stack object if either the array size or the type size is zero.
llvm-svn: 23801 
							
						 
						
							2005-10-18 22:14:06 +00:00  
				
					
						
							
							
								 
						
							
								8396a308a7 
								
							 
						 
						
							
							
								
								remove hack  
							
							... 
							
							
							
							llvm-svn: 23797 
							
						 
						
							2005-10-18 22:11:42 +00:00  
				
					
						
							
							
								 
						
							
								bcfebebf22 
								
							 
						 
						
							
							
								
								Enable Nate's excellent DAG combiner work by default.  This allows the  
							
							... 
							
							
							
							removal of a bunch of ad-hoc and crufty code from SelectionDAG.cpp.
llvm-svn: 23682 
							
						 
						
							2005-10-10 16:47:10 +00:00  
				
					
						
							
							
								 
						
							
								6bd8fd09b6 
								
							 
						 
						
							
							
								
								make sure that -view-isel-dags is the input to the isel, not the input to  
							
							... 
							
							
							
							the second phase of dag combining
llvm-svn: 23631 
							
						 
						
							2005-10-05 06:09:10 +00:00  
				
					
						
							
							
								 
						
							
								f8a5e5ae6e 
								
							 
						 
						
							
							
								
								Fix VC++ warnings.  
							
							... 
							
							
							
							llvm-svn: 23579 
							
						 
						
							2005-10-01 03:57:14 +00:00  
				
					
						
							
							
								 
						
							
								6f3b577ee6 
								
							 
						 
						
							
							
								
								Add FP versions of the binary operators, keeping the int and fp worlds seperate.  
							
							... 
							
							
							
							Though I have done extensive testing, it is possible that this will break
things in configs I can't test.  Please let me know if this causes a problem
and I'll fix it ASAP.
llvm-svn: 23504 
							
						 
						
							2005-09-28 22:28:18 +00:00  
				
					
						
							
							
								 
						
							
								0fd8f9fbc9 
								
							 
						 
						
							
							
								
								If the target prefers it, use _setjmp/_longjmp should be used instead of setjmp/longjmp for llvm.setjmp/llvm.longjmp.  
							
							... 
							
							
							
							llvm-svn: 23481 
							
						 
						
							2005-09-27 22:15:53 +00:00  
				
					
						
							
							
								 
						
							
								d4382f0afa 
								
							 
						 
						
							
							
								
								If a function has liveins, and if the target requested that they be plopped  
							
							... 
							
							
							
							into particular vregs, emit copies into the entry MBB.
llvm-svn: 23331 
							
						 
						
							2005-09-13 19:30:54 +00:00  
				
					
						
							
							
								 
						
							
								007c650699 
								
							 
						 
						
							
							
								
								Add an option to the DAG Combiner to enable it for beta runs, and turn on  
							
							... 
							
							
							
							that option for PowerPC's beta.
llvm-svn: 23253 
							
						 
						
							2005-09-07 00:15:36 +00:00  
				
					
						
							
							
								 
						
							
								b0b4ec5655 
								
							 
						 
						
							
							
								
								Don't create zero sized stack objects even for array allocas with a zero  
							
							... 
							
							
							
							number of elements.
llvm-svn: 23219 
							
						 
						
							2005-09-02 18:41:28 +00:00  
				
					
						
							
							
								 
						
							
								b6cde17d29 
								
							 
						 
						
							
							
								
								Fix the release build, noticed by Eric van Riet Paap  
							
							... 
							
							
							
							llvm-svn: 23215 
							
						 
						
							2005-09-02 07:09:28 +00:00  
				
					
						
							
							
								 
						
							
								a66403dbf7 
								
							 
						 
						
							
							
								
								For values that are live across basic blocks and need promotion, use ANY_EXTEND  
							
							... 
							
							
							
							instead of ZERO_EXTEND to eliminate extraneous extensions.  This eliminates
dead zero extensions on formal arguments and other cases on PPC, implementing
the newly tightened up test/Regression/CodeGen/PowerPC/small-arguments.ll test.
llvm-svn: 23205 
							
						 
						
							2005-09-02 00:19:37 +00:00  
				
					
						
							
							
								 
						
							
								975f5c9f46 
								
							 
						 
						
							
							
								
								It is NDEBUG not _NDEBUG  
							
							... 
							
							
							
							llvm-svn: 23186 
							
						 
						
							2005-09-01 18:44:10 +00:00  
				
					
						
							
							
								 
						
							
								075250bda1 
								
							 
						 
						
							
							
								
								Disable this code, which broke many tests last night  
							
							... 
							
							
							
							llvm-svn: 23114 
							
						 
						
							2005-08-27 16:16:51 +00:00  
				
					
						
							
							
								 
						
							
								e7a2998064 
								
							 
						 
						
							
							
								
								Don't copy regs that are only used in the entry block into a vreg.  This  
							
							... 
							
							
							
							changes the code generated for:
short %test(short %A) {
  %B = xor short %A, -32768
  ret short %B
}
to:
_test:
        xori r2, r3, 32768
        xoris r2, r2, 65535
        extsh r3, r2
        blr
instead of:
_test:
        rlwinm r2, r3, 0, 16, 31
        xori r2, r3, 32768
        xoris r2, r2, 65535
        extsh r3, r2
        blr
llvm-svn: 23109 
							
						 
						
							2005-08-26 22:49:59 +00:00  
				
					
						
							
							
								 
						
							
								13d7c252e5 
								
							 
						 
						
							
							
								
								Call the InsertAtEndOfBasicBlock hook if the usesCustomDAGSchedInserter  
							
							... 
							
							
							
							flag is set on an instruction.
llvm-svn: 23098 
							
						 
						
							2005-08-26 20:54:47 +00:00  
				
					
						
							
							
								 
						
							
								99282c7b92 
								
							 
						 
						
							
							
								
								Make -view-isel-dags show the dag before instruction selecting, in case  
							
							... 
							
							
							
							the target isel crashes due to unimplemented features like calls :)
llvm-svn: 22997 
							
						 
						
							2005-08-24 00:34:29 +00:00  
				
					
						
							
							
								 
						
							
								7f9e078d11 
								
							 
						 
						
							
							
								
								Fix a problem where constant expr shifts would not have their shift amount  
							
							... 
							
							
							
							promoted to the right type.  This fixes: IA64/2005-08-22-LegalizerCrash.ll
llvm-svn: 22969 
							
						 
						
							2005-08-22 17:28:31 +00:00  
				
					
						
							
							
								 
						
							
								1a908c8920 
								
							 
						 
						
							
							
								
								Enable critical edge splitting by default  
							
							... 
							
							
							
							llvm-svn: 22863 
							
						 
						
							2005-08-18 17:35:14 +00:00  
				
					
						
							
							
								 
						
							
								c9950c11a9 
								
							 
						 
						
							
							
								
								Add a new beta option for critical edge splitting, to avoid a problem that  
							
							... 
							
							
							
							Nate noticed in yacr2 (and I know occurs in other places as well).
This is still rough, as the critical edge blocks are not intelligently placed
but is added to get some idea to see if this improves performance.
llvm-svn: 22825 
							
						 
						
							2005-08-17 06:37:43 +00:00  
				
					
						
							
							
								 
						
							
								ba28c2733f 
								
							 
						 
						
							
							
								
								Fix a regression on X86, where FP values can be promoted too.  
							
							... 
							
							
							
							llvm-svn: 22822 
							
						 
						
							2005-08-17 06:06:25 +00:00  
				
					
						
							
							
								 
						
							
								33182325f5 
								
							 
						 
						
							
							
								
								Eliminate the RegSDNode class, which 3 nodes (CopyFromReg/CopyToReg/ImplicitDef)  
							
							... 
							
							
							
							used to tack a register number onto the node.
Instead of doing this, make a new node, RegisterSDNode, which is a leaf
containing a register number.  These three operations just become normal
DAG nodes now, instead of requiring special handling.
Note that with this change, it is no longer correct to make illegal
CopyFromReg/CopyToReg nodes.  The legalizer will not touch them, and this
is bad, so don't do it. :)
llvm-svn: 22806 
							
						 
						
							2005-08-16 21:55:35 +00:00  
				
					
						
							
							
								 
						
							
								d47675ed24 
								
							 
						 
						
							
							
								
								Eliminate the SetCCSDNode in favor of a CondCodeSDNode class.  This pulls the  
							
							... 
							
							
							
							CC out of the SetCC operation, making SETCC a standard ternary operation and
CC's a standard DAG leaf.  This will make it possible for other node to use
CC's as operands in the future...
llvm-svn: 22728 
							
						 
						
							2005-08-09 20:20:18 +00:00  
				
					
						
							
							
								 
						
							
								5f4ef3c5a8 
								
							 
						 
						
							
							
								
								Eliminate all remaining tabs and trailing spaces.  
							
							... 
							
							
							
							llvm-svn: 22523 
							
						 
						
							2005-07-27 06:12:32 +00:00  
				
					
						
							
							
								 
						
							
								1ac40a1245 
								
							 
						 
						
							
							
								
								Remove unnecessary FP_EXTEND. This causes worse codegen for SSE.  
							
							... 
							
							
							
							llvm-svn: 22469 
							
						 
						
							2005-07-19 16:50:03 +00:00  
				
					
						
							
							
								 
						
							
								f5473e44a9 
								
							 
						 
						
							
							
								
								Make several cleanups to Andrews varargs change:  
							
							... 
							
							
							
							1. Pass Value*'s into lowering methods so that the proper pointers can be
   added to load/stores from the valist
2. Intrinsics that return void should only return a token chain, not a token
   chain/retval pair.
3. Rename LowerVAArgNext -> LowerVAArg, because VANext is long gone.
llvm-svn: 22338 
							
						 
						
							2005-07-05 19:57:53 +00:00  
				
					
						
							
							
								 
						
							
								2edc1881ac 
								
							 
						 
						
							
							
								
								restore old srcValueNode behavior and try to to work around it  
							
							... 
							
							
							
							llvm-svn: 22315 
							
						 
						
							2005-06-29 18:54:02 +00:00  
				
					
						
							
							
								 
						
							
								8192568fbc 
								
							 
						 
						
							
							
								
								tracking the instructions causing loads and stores provides more information than just the pointer being loaded or stored  
							
							... 
							
							
							
							llvm-svn: 22311 
							
						 
						
							2005-06-29 15:57:19 +00:00  
				
					
						
							
							
								 
						
							
								253145299b 
								
							 
						 
						
							
							
								
								If we support structs as va_list, we must pass pointers to them to va_copy  
							
							... 
							
							
							
							See last commit for LangRef, this implements it on all targets.
llvm-svn: 22273 
							
						 
						
							2005-06-22 21:04:42 +00:00  
				
					
						
							
							
								 
						
							
								9144ec4764 
								
							 
						 
						
							
							
								
								core changes for varargs  
							
							... 
							
							
							
							llvm-svn: 22254 
							
						 
						
							2005-06-18 18:34:52 +00:00  
				
					
						
							
							
								 
						
							
								e4f71d036f 
								
							 
						 
						
							
							
								
								Fix construction of ioport intrinsics, fixing X86/io.llx and io-port.llx  
							
							... 
							
							
							
							llvm-svn: 22026 
							
						 
						
							2005-05-14 13:56:55 +00:00  
				
					
						
							
							
								 
						
							
								96c262e24b 
								
							 
						 
						
							
							
								
								Eliminate special purpose hacks for dynamic_stack_alloc.  
							
							... 
							
							
							
							llvm-svn: 22015 
							
						 
						
							2005-05-14 07:29:57 +00:00  
				
					
						
							
							
								 
						
							
								29dcc71d83 
								
							 
						 
						
							
							
								
								LowerOperation takes a dag  
							
							... 
							
							
							
							llvm-svn: 22004 
							
						 
						
							2005-05-14 05:50:48 +00:00  
				
					
						
							
							
								 
						
							
								cbefe72fb2 
								
							 
						 
						
							
							
								
								Align doubles on 8-byte boundaries if possible.  
							
							... 
							
							
							
							llvm-svn: 21993 
							
						 
						
							2005-05-13 23:14:17 +00:00  
				
					
						
							
							
								 
						
							
								2e77db6af6 
								
							 
						 
						
							
							
								
								Add an isTailCall flag to LowerCallTo  
							
							... 
							
							
							
							llvm-svn: 21958 
							
						 
						
							2005-05-13 18:50:42 +00:00  
				
					
						
							
							
								 
						
							
								d0b0ecca3f 
								
							 
						 
						
							
							
								
								Emit function entry code after lowering hte arguments.  
							
							... 
							
							
							
							llvm-svn: 21931 
							
						 
						
							2005-05-13 07:33:32 +00:00  
				
					
						
							
							
								 
						
							
								0220b2952f 
								
							 
						 
						
							
							
								
								Allow targets to emit code into the entry block of each function  
							
							... 
							
							
							
							llvm-svn: 21930 
							
						 
						
							2005-05-13 07:23:21 +00:00  
				
					
						
							
							
								 
						
							
								111778e665 
								
							 
						 
						
							
							
								
								Pass calling convention to use into lower call to  
							
							... 
							
							
							
							llvm-svn: 21900 
							
						 
						
							2005-05-12 19:56:57 +00:00  
				
					
						
							
							
								 
						
							
								490769c5b6 
								
							 
						 
						
							
							
								
								wrap long line  
							
							... 
							
							
							
							llvm-svn: 21870 
							
						 
						
							2005-05-11 18:57:06 +00:00  
				
					
						
							
							
								 
						
							
								2d8b55c476 
								
							 
						 
						
							
							
								
								The semantics of cast X to bool are a comparison against zero, not a truncation!  
							
							... 
							
							
							
							llvm-svn: 21833 
							
						 
						
							2005-05-09 22:17:13 +00:00