Anton Korobeynikov 
							
						 
					 
					
						
						
							
						
						8b0a8c84da 
					 
					
						
						
							
							Implement aliases. This fixes PR1017 and it's dependent bugs. CFE part  
						
						... 
						
						
						
						will follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36435  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-25 14:27:10 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						24a3cc4c83 
					 
					
						
						
							
							Fix for PR1306.  
						
						... 
						
						
						
						- A register def / use now implicitly affects sub-register liveness but does
not affect liveness information of super-registers.
- Def of a larger register (if followed by a use later) is treated as
read/mod/write of a smaller register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36434  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-25 07:30:23 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						92efbfcd2d 
					 
					
						
						
							
							Clean up.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36431  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-25 07:18:20 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ea84c5ee95 
					 
					
						
						
							
							support for >4G stack frames  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36425  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-25 04:30:24 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a401b1e1c5 
					 
					
						
						
							
							support > 4G stack objects  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36422  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-25 04:20:54 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6266c18ea1 
					 
					
						
						
							
							allow support for 64-bit stack objects  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36420  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-25 04:08:28 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						964dd86054 
					 
					
						
						
							
							Be more careful about folding op(x, undef) when we have vector operands.  
						
						... 
						
						
						
						This fixes CodeGen/X86/2007-04-24-VectorCrash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36413  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-25 00:00:45 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						95b3955034 
					 
					
						
						
							
							Assertion when using a 1-element vector for an add operation. Get the  
						
						... 
						
						
						
						real vector type in this case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36402  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-24 21:13:23 +00:00 
						 
				 
			
				
					
						
							
							
								Scott Michel 
							
						 
					 
					
						
						
							
						
						f147a8d56e 
					 
					
						
						
							
							Use '-1U' where '-1UL' is obvious overkill, eliminating gcc warnings about  
						
						... 
						
						
						
						tests always being true in the process.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36387  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-24 01:24:20 +00:00 
						 
				 
			
				
					
						
							
							
								Dale Johannesen 
							
						 
					 
					
						
						
							
						
						00d56b96e5 
					 
					
						
						
							
							modify per review commentary  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36383  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-23 23:33:31 +00:00 
						 
				 
			
				
					
						
							
							
								Dale Johannesen 
							
						 
					 
					
						
						
							
						
						19f5469be4 
					 
					
						
						
							
							make EmitAlignment work the way Chris says it should  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36368  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-23 19:58:54 +00:00 
						 
				 
			
				
					
						
							
							
								Christopher Lamb 
							
						 
					 
					
						
						
							
						
						95c218a83e 
					 
					
						
						
							
							PR400 phase 2. Propagate attributed load/store information through DAGs.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36356  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-22 23:15:30 +00:00 
						 
				 
			
				
					
						
							
							
								Lauro Ramos Venancio 
							
						 
					 
					
						
						
							
						
						2c5c111b6c 
					 
					
						
						
							
							X86 TLS: Implement review feedback.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36318  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-21 20:56:26 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						c67bdc288a 
					 
					
						
						
							
							Revert Christopher Lamb's load/store alignment changes.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36309  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-21 18:36:27 +00:00 
						 
				 
			
				
					
						
							
							
								Christopher Lamb 
							
						 
					 
					
						
						
							
						
						2330e4d4c4 
					 
					
						
						
							
							add support for alignment attributes on load/store instructions  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36301  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-21 08:16:25 +00:00 
						 
				 
			
				
					
						
							
							
								Lauro Ramos Venancio 
							
						 
					 
					
						
						
							
						
						0d3b67809c 
					 
					
						
						
							
							Allow the lowering of ISD::GLOBAL_OFFSET_TABLE.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36290  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-20 23:02:39 +00:00 
						 
				 
			
				
					
						
							
							
								Lauro Ramos Venancio 
							
						 
					 
					
						
						
							
						
						b3a0417cad 
					 
					
						
						
							
							Implement "general dynamic", "initial exec" and "local exec" TLS models for  
						
						... 
						
						
						
						X86 32 bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36283  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-20 21:38:10 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						f44c72817e 
					 
					
						
						
							
							VarInfo::UsedBlocks is no longer used. Remove.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36250  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-18 05:04:38 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						61a4c072b9 
					 
					
						
						
							
							allow SRL to simplify its operands, as it doesn't demand all bits as input.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36245  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-18 03:06:49 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ec06e9a670 
					 
					
						
						
							
							When replacing a node in SimplifyDemandedBits, if the old node used any  
						
						... 
						
						
						
						single-use nodes, they will be dead soon.  Make sure to remove them before
processing other nodes.  This implements CodeGen/X86/shl_elim.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36244  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-18 03:05:22 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0a16a1f738 
					 
					
						
						
							
							fix a pasto  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36242  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-18 03:01:40 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						faf05bbaea 
					 
					
						
						
							
							Don't populate TryAgainList when coalescing only physical registers with virtual registers.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36240  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-18 02:30:19 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						3fefc182a0 
					 
					
						
						
							
							Increment use count of new virtuals created during PHI elimination.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36233  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-18 00:36:11 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						8c7d2d56bf 
					 
					
						
						
							
							Fix a bug in my previous patch, grabbing the shift amount width from the  
						
						... 
						
						
						
						wrong operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36223  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-17 22:53:02 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						895c4ab564 
					 
					
						
						
							
							Fold (x << c1)>> c2 into a single shift if the bits shifted out aren't used.  
						
						... 
						
						
						
						This compiles:
int baz(long long a) { return (short)(((int)(a >>24)) >> 9); }
into:
_baz:
        srwi r2, r3, 1
        extsh r3, r2
        blr
on PPC, instead of:
_baz:
        slwi r2, r3, 8
        srwi r2, r2, 9
        extsh r3, r2
        blr
GCC produces:
_baz:
        srwi r10,r4,24
        insrwi r10,r3,24,0
        srawi r9,r3,24
        srawi r3,r10,9
        extsh r3,r3
        blr
This implements CodeGen/PowerPC/shl_elim.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36221  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-17 21:14:16 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						20b0abc24f 
					 
					
						
						
							
							Copy coalescing change to prevent a physical register from being pin to a  
						
						... 
						
						
						
						long live interval that has low usage density.
1. Change order of coalescing to join physical registers with virtual
   registers first before virtual register intervals become too long.
2. Check size and usage density to determine if it's worthwhile to join.
3. If joining is aborted, assign virtual register live interval allocation
   preference field to the physical register.
4. Register allocator should try to allocate to the preferred register
   first (if available) to create identify moves that can be eliminated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36218  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-17 20:32:26 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						e52eef8e9a 
					 
					
						
						
							
							Add a register allocation preference field; add a method to compute size of a live interval.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36216  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-17 20:25:11 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						38b7ca6651 
					 
					
						
						
							
							Keep track of number of uses within the function per virtual register.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36214  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-17 20:22:11 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						95a5e0507e 
					 
					
						
						
							
							SIGN_EXTEND_INREG does not demand its top bits.  Give SimplifyDemandedBits  
						
						... 
						
						
						
						a chance to hack on it.  This compiles:
int baz(long long a) { return (short)(((int)(a >>24)) >> 9); }
into:
_baz:
        slwi r2, r3, 8
        srwi r2, r2, 9
        extsh r3, r2
        blr
instead of:
_baz:
        srwi r2, r4, 24
        rlwimi r2, r3, 8, 0, 23
        srwi r2, r2, 9
        extsh r3, r2
        blr
This implements CodeGen/PowerPC/sign_ext_inreg1.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36212  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-17 19:03:21 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						9a9203b894 
					 
					
						
						
							
							Fix problems in the PartSet lowering having to do with incorrect bit width.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36180  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-16 22:21:14 +00:00 
						 
				 
			
				
					
						
							
							
								Anton Korobeynikov 
							
						 
					 
					
						
						
							
						
						bed2946a96 
					 
					
						
						
							
							Removed tabs everywhere except autogenerated & external files. Add make  
						
						... 
						
						
						
						target for tabs checking.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36146  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-16 18:10:23 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						1c35968d4d 
					 
					
						
						
							
							disable switch lowering using shift/and.  It still breaks ppc bootstrap for  
						
						... 
						
						
						
						some reason.  :(  Will investigate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36011  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-14 19:39:41 +00:00 
						 
				 
			
				
					
						
							
							
								Anton Korobeynikov 
							
						 
					 
					
						
						
							
						
						e01017bba4 
					 
					
						
						
							
							Fix PR1325: Case range optimization was performed in the case it  
						
						... 
						
						
						
						shouldn't. Also fix some "latent" bug on 64-bit platforms
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35990  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-14 13:25:55 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						3ff981749b 
					 
					
						
						
							
							disable shift/and lowering to work around PR1325 for now.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35985  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-14 02:26:56 +00:00 
						 
				 
			
				
					
						
							
							
								Anton Korobeynikov 
							
						 
					 
					
						
						
							
						
						8085bcfdca 
					 
					
						
						
							
							Fix PR1323 : we haven't updated phi nodes in good manner :)  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35963  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-13 06:53:51 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						df41353497 
					 
					
						
						
							
							Make sure intrinsics that are lowered to functions make the function weak  
						
						... 
						
						
						
						linkage so we only end up with one of them in a program. These are, after
all overloaded and templatish in nature.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35956  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-12 21:53:38 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						eeedcb6905 
					 
					
						
						
							
							Fix bugs in generated code for part_select and part_set so that llc doesn't  
						
						... 
						
						
						
						barf when CBE is run with a program that contains these intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35946  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-12 13:30:14 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						37958093c6 
					 
					
						
						
							
							Fix a bug in PartSet. The replacement value needs to be zext or trunc to  
						
						... 
						
						
						
						the size of the value, not just zext. Also, give better names to two BBs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35945  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-12 12:46:33 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						3a508c94a6 
					 
					
						
						
							
							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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35944  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-12 06:00:20 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4829b1c6ab 
					 
					
						
						
							
							fold noop vbitconvert instructions  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35943  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-12 05:58:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c2941779c3 
					 
					
						
						
							
							Fix weirdness handling single element vectors.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35941  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-12 04:44:28 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						f75b874957 
					 
					
						
						
							
							For PR1284:  
						
						... 
						
						
						
						Implement the "part_set" intrinsic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35938  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-12 02:48:46 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c24bbaddf8 
					 
					
						
						
							
							fix an infinite loop compiling ldecod, notice by JeffC.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35910  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-11 16:51:53 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						1eba01e9a0 
					 
					
						
						
							
							Fix this harder.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35888  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-11 06:50:51 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c56a81dff1 
					 
					
						
						
							
							don't create shifts by zero, fix some problems with my previous patch  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35887  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-11 06:43:25 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						20a35c3fa5 
					 
					
						
						
							
							Teach the codegen to turn [aez]ext (setcc) -> selectcc of 1/0, which often  
						
						... 
						
						
						
						allows other simplifications.  For example, this compiles:
int isnegative(unsigned int X) {
   return !(X < 2147483648U);
}
Into this code:
x86:
        movl 4(%esp), %eax
        shrl $31, %eax
        ret
arm:
        mov r0, r0, lsr #31 
        bx lr
thumb:
        lsr r0, r0, #31 
        bx lr
instead of:
x86:
        cmpl $0, 4(%esp)
        sets %al
        movzbl %al, %eax
        ret
arm:
        mov r3, #0 
        cmp r0, #0 
        movlt r3, #1 
        mov r0, r3
        bx lr
thumb:
        mov r2, #1 
        mov r1, #0 
        cmp r0, #0 
        blt LBB1_2      @entry
LBB1_1: @entry
        cpy r2, r1
LBB1_2: @entry
        cpy r0, r2
        bx lr
Testcase here: test/CodeGen/Generic/ispositive.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35883  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-11 05:32:27 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						1982ef20c4 
					 
					
						
						
							
							Codegen integer abs more efficiently using the trick from the PPC CWG.  This  
						
						... 
						
						
						
						improves codegen on many architectures.  Tests committed as CodeGen/*/iabs.ll
X86 Old:			X86 New:
_test:				_test:
   movl 4(%esp), %ecx		   movl 4(%esp), %eax
   movl %ecx, %eax		   movl %eax, %ecx
   negl %eax			   sarl $31, %ecx
   testl %ecx, %ecx		   addl %ecx, %eax
   cmovns %ecx, %eax		   xorl %ecx, %eax
   ret				   ret
PPC Old:			PPC New:
_test:				_test:
   cmpwi cr0, r3, -1		   srawi r2, r3, 31
   neg r2, r3			   add r3, r3, r2
   bgt cr0, LBB1_2 ;		   xor r3, r3, r2
LBB1_1: ;			   blr
   mr r3, r2
LBB1_2: ;
   blr
ARM Old:			ARM New:
_test:				_test:
   rsb r3, r0, #0 		   add r3, r0, r0, asr #31 
   cmp r0, #0 			   eor r0, r3, r0, asr #31 
   movge r3, r0			   bx lr
   mov r0, r3
   bx lr
Thumb Old:			Thumb New:
_test:				_test:
   neg r2, r0			   asr r2, r0, #31 
   cmp r0, #0 			   add r0, r0, r2
   bge LBB1_2			   eor r0, r2
LBB1_1: @			   bx lr
   cpy r0, r2
LBB1_2: @
   bx lr
Sparc Old:			Sparc New:
test:				test:
   save -96, %o6, %o6		   save -96, %o6, %o6
   sethi 0, %l0			   sra %i0, 31, %l0
   sub %l0, %i0, %l0		   add %i0, %l0, %l1
   subcc %i0, -1, %l1		   xor %l1, %l0, %i0
   bg .BB1_2			   restore %g0, %g0, %g0
   nop				   retl
.BB1_1:				   nop
   or %g0, %l0, %i0
.BB1_2:
   restore %g0, %g0, %g0
   retl
   nop
It also helps alpha/ia64 :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35881  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-11 05:11:38 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						18da072088 
					 
					
						
						
							
							For PR1146:  
						
						... 
						
						
						
						Put the parameter attributes in their own ParamAttr name space. Adjust the
rest of llvm as a result.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35877  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-11 02:44:20 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c6eb6d7255 
					 
					
						
						
							
							apparently some people commit without building the tree, or they forget to  
						
						... 
						
						
						
						commit a LOT of files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35858  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-10 03:20:39 +00:00 
						 
				 
			
				
					
						
							
							
								Jeff Cohen 
							
						 
					 
					
						
						
							
						
						2da8da46ba 
					 
					
						
						
							
							No longer needed.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35850  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-09 23:42:32 +00:00