Chris Lattner 
							
						 
					 
					
						
						
							
						
						3e104b1116 
					 
					
						
						
							
							Codegen shufflevector as VVECTOR_SHUFFLE  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27529  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-04-08 04:15:24 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						c04766a228 
					 
					
						
						
							
							1. If both vector operands of a vector_shuffle are undef, turn it into an undef.  
						
						... 
						
						
						
						2. A shuffle mask element can also be an undef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27472  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-04-06 23:20:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						e44be60ee9 
					 
					
						
						
							
							Do not create ZEXTLOAD's unless we are before legalize or the operation is  
						
						... 
						
						
						
						legal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27402  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-04-04 17:39:18 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						97c2073270 
					 
					
						
						
							
							Add a missing check, this fixes UnitTests/Vector/sumarray.c  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27375  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-04-03 17:29:28 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a4c5d8c6b4 
					 
					
						
						
							
							Add a missing check, which broke a bunch of vector tests.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27374  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-04-03 17:21:50 +00:00 
						 
				 
			
				
					
						
							
							
								Andrew Lenharth 
							
						 
					 
					
						
						
							
						
						cf4fb61f6c 
					 
					
						
						
							
							back this out  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27367  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-04-03 03:16:50 +00:00 
						 
				 
			
				
					
						
							
							
								Andrew Lenharth 
							
						 
					 
					
						
						
							
						
						50a0d426e8 
					 
					
						
						
							
							This should be a win of every arch  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27364  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-04-02 21:42:45 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						350bec0fb9 
					 
					
						
						
							
							Add a little dag combine to compile this:  
						
						... 
						
						
						
						int %AreSecondAndThirdElementsBothNegative(<4 x float>* %in) {
entry:
        %tmp1 = load <4 x float>* %in           ; <<4 x float>> [#uses=1]
        %tmp = tail call int %llvm.ppc.altivec.vcmpgefp.p( int 1, <4 x float> < float 0x7FF8000000000000, float 0.000000e+00, float 0.000000e+00, float 0x7FF8000000000000 >, <4 x float> %tmp1 )           ; <int> [#uses=1]
        %tmp = seteq int %tmp, 0                ; <bool> [#uses=1]
        %tmp3 = cast bool %tmp to int           ; <int> [#uses=1]
        ret int %tmp3
}
into this:
_AreSecondAndThirdElementsBothNegative:
        mfspr r2, 256
        oris r4, r2, 49152
        mtspr 256, r4
        li r4, lo16(LCPI1_0)
        lis r5, ha16(LCPI1_0)
        lvx v0, 0, r3
        lvx v1, r5, r4
        vcmpgefp. v0, v1, v0
        mfcr r3, 2
        rlwinm r3, r3, 27, 31, 31
        mtspr 256, r2
        blr
instead of this:
_AreSecondAndThirdElementsBothNegative:
        mfspr r2, 256
        oris r4, r2, 49152
        mtspr 256, r4
        li r4, lo16(LCPI1_0)
        lis r5, ha16(LCPI1_0)
        lvx v0, 0, r3
        lvx v1, r5, r4
        vcmpgefp. v0, v1, v0
        mfcr r3, 2
        rlwinm r3, r3, 27, 31, 31
        xori r3, r3, 1
        cntlzw r3, r3
        srwi r3, r3, 5
        mtspr 256, r2
        blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27356  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-04-02 06:11:11 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						edab1b9133 
					 
					
						
						
							
							Constant fold all of the vector binops.  This allows us to compile this:  
						
						... 
						
						
						
						"vector unsigned char mergeLowHigh = (vector unsigned char)
( 8, 9, 10, 11, 16, 17, 18, 19, 12, 13, 14, 15, 20, 21, 22, 23 );
vector unsigned char mergeHighLow = vec_xor( mergeLowHigh, vec_splat_u8(8));"
aka:
void %test2(<16 x sbyte>* %P) {
  store <16 x sbyte> cast (<4 x int> xor (<4 x int> cast (<16 x ubyte> < ubyte 8, ubyte 9, ubyte 10, ubyte 11, ubyte 16, ubyte 17, ubyte 18, ubyte 19, ubyte 12, ubyte 13, ubyte 14, ubyte 15, ubyte 20, ubyte 21, ubyte 22, ubyte 23 > to <4 x int>), <4 x int> cast (<16 x sbyte> < sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8 > to <4 x int>)) to <16 x sbyte>), <16 x sbyte> * %P
  ret void
}
into this:
_test2:
        mfspr r2, 256
        oris r4, r2, 32768
        mtspr 256, r4
        li r4, lo16(LCPI2_0)
        lis r5, ha16(LCPI2_0)
        lvx v0, r5, r4
        stvx v0, 0, r3
        mtspr 256, r2
        blr
instead of this:
_test2:
        mfspr r2, 256
        oris r4, r2, 49152
        mtspr 256, r4
        li r4, lo16(LCPI2_0)
        lis r5, ha16(LCPI2_0)
        vspltisb v0, 8
        lvx v1, r5, r4
        vxor v0, v1, v0
        stvx v0, 0, r3
        mtspr 256, r2
        blr
... which occurs here:
http://developer.apple.com/hardware/ve/calcspeed.html 
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27343  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-04-02 03:25:57 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6258fb2592 
					 
					
						
						
							
							Implement constant folding of bit_convert of arbitrary constant vbuild_vector nodes.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27341  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-04-02 02:53:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f1d0c623c6 
					 
					
						
						
							
							Delete identity shuffles, implementing CodeGen/Generic/vector-identity-shuffle.ll  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27317  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-31 22:16:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						29cd7db310 
					 
					
						
						
							
							Remove dead *extloads.  This allows us to codegen vector.ll:test_extract_elt  
						
						... 
						
						
						
						to:
test_extract_elt:
        alloc r3 = ar.pfs,0,1,0,0
        adds r8 = 12, r32
        ;;
        ldfs f8 = [r8]
        mov ar.pfs = r3
        br.ret.sptk.many rp
instead of:
test_extract_elt:
        alloc r3 = ar.pfs,0,1,0,0
        adds r8 = 28, r32
        adds r9 = 24, r32
        adds r10 = 20, r32
        adds r11 = 16, r32
        ;;
        ldfs f6 = [r8]
        ;;
        ldfs f6 = [r9]
        adds r8 = 12, r32
        adds r9 = 8, r32
        adds r14 = 4, r32
        ;;
        ldfs f6 = [r10]
        ;;
        ldfs f6 = [r11]
        ldfs f8 = [r8]
        ;;
        ldfs f6 = [r9]
        ;;
        ldfs f6 = [r14]
        ;;
        ldfs f6 = [r32]
        mov ar.pfs = r3
        br.ret.sptk.many rp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27297  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-31 18:10:41 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						e4b953939c 
					 
					
						
						
							
							Delete dead loads in the dag.  This allows us to compile  
						
						... 
						
						
						
						vector.ll:test_extract_elt2 into:
_test_extract_elt2:
        lfd f1, 32(r3)
        blr
instead of:
_test_extract_elt2:
        lfd f0, 56(r3)
        lfd f0, 48(r3)
        lfd f0, 40(r3)
        lfd f1, 32(r3)
        lfd f0, 24(r3)
        lfd f0, 16(r3)
        lfd f0, 8(r3)
        lfd f0, 0(r3)
        blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27296  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-31 18:06:18 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						cef896e50c 
					 
					
						
						
							
							When building a VVECTOR_SHUFFLE node from extract_element operations, make  
						
						... 
						
						
						
						sure to build it as SHUFFLE(X, undef, mask), not SHUFFLE(X, X, mask).
The later is not canonical form, and prevents the PPC splat pattern from
matching.  For a particular splat, we go from generating this:
	li r10, lo16(LCPI1_0)
	lis r11, ha16(LCPI1_0)
	lvx v3, r11, r10
	vperm v3, v2, v2, v3
to generating:
	vspltw v3, v2, 3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27236  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-28 22:19:47 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						66445d3e0a 
					 
					
						
						
							
							Canonicalize VECTOR_SHUFFLE(X, X, Y) -> VECTOR_SHUFFLE(X,undef,Y')  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27235  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-28 22:11:53 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						d7648c8934 
					 
					
						
						
							
							Turn a series of extract_element's feeding a build_vector into a  
						
						... 
						
						
						
						vector_shuffle node.  For this:
void test(__m128 *res, __m128 *A, __m128 *B) {
  *res = _mm_unpacklo_ps(*A, *B);
}
we now produce this code:
_test:
        movl 8(%esp), %eax
        movaps (%eax), %xmm0
        movl 12(%esp), %eax
        unpcklps (%eax), %xmm0
        movl 4(%esp), %eax
        movaps %xmm0, (%eax)
        ret
instead of this:
_test:
        subl $76, %esp
        movl 88(%esp), %eax
        movaps (%eax), %xmm0
        movaps %xmm0, (%esp)
        movaps %xmm0, 32(%esp)
        movss 4(%esp), %xmm0
        movss 32(%esp), %xmm1
        unpcklps %xmm0, %xmm1
        movl 84(%esp), %eax
        movaps (%eax), %xmm0
        movaps %xmm0, 16(%esp)
        movaps %xmm0, 48(%esp)
        movss 20(%esp), %xmm0
        movss 48(%esp), %xmm2
        unpcklps %xmm0, %xmm2
        unpcklps %xmm1, %xmm2
        movl 80(%esp), %eax
        movaps %xmm2, (%eax)
        addl $76, %esp
        ret
GCC produces this (with -fomit-frame-pointer):
_test:
        subl    $12, %esp
        movl    20(%esp), %eax
        movaps  (%eax), %xmm0
        movl    24(%esp), %eax
        unpcklps        (%eax), %xmm0
        movl    16(%esp), %eax
        movaps  %xmm0, (%eax)
        addl    $12, %esp
        ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27233  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-28 20:28:38 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4fbdd59f4f 
					 
					
						
						
							
							Don't crash on X^X if X is a vector.  Instead, produce a vector of zeros.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27229  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-28 19:11:05 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6ea2dee6f6 
					 
					
						
						
							
							Don't call SimplifyDemandedBits on vectors  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27128  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-25 22:19:00 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ca24244234 
					 
					
						
						
							
							fold insertelement(buildvector) -> buildvector if the inserted element # is  
						
						... 
						
						
						
						a constant.  This implements test_constant_insert in CodeGen/Generic/vector.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26851  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-19 01:27:56 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						81e8097377 
					 
					
						
						
							
							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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26814  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-17 01:40:33 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ac0f8f2929 
					 
					
						
						
							
							make sure dead token factor nodes are removed by the dag combiner.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26731  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-13 18:37:30 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						947c28935d 
					 
					
						
						
							
							Fold X+Y -> X|Y when safe.  This implements:  
						
						... 
						
						
						
						Regression/CodeGen/PowerPC/and_add.ll
a case that occurs with dynamic allocas of constant size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26727  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-13 06:51:27 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						79dbea5ab4 
					 
					
						
						
							
							add a couple of missing folds  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26724  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-13 06:26:26 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						cac7059d0f 
					 
					
						
						
							
							Reinstate this now that the offending opposite xform has been removed.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26548  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-05 19:53:55 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						9176b0169c 
					 
					
						
						
							
							Back out fold (shl (add x, c1), c2) -> (add (shl x, c2), c1<<c2) for now.  
						
						... 
						
						
						
						It's causing an infinite loop compiling ldecod on x86 / Darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26544  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-05 07:30:16 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						12d830346b 
					 
					
						
						
							
							Add some simple copysign folds  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26543  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-05 05:30:57 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a1deca3cd6 
					 
					
						
						
							
							fold (mul (add x, c1), c2) -> (add (mul x, c2), c1*c2)  
						
						... 
						
						
						
						fold (shl (add x, c1), c2) -> (add (shl x, c2), c1<<c2)
This allows us to compile CodeGen/PowerPC/addi-reassoc.ll into:
_test1:
        slwi r2, r4, 4
        add r2, r2, r3
        lwz r3, 36(r2)
        blr
_test2:
        mulli r2, r4, 5
        add r2, r2, r3
        lbz r2, 11(r2)
        extsb r3, r2
        blr
instead of:
_test1:
        addi r2, r4, 2
        slwi r2, r2, 4
        add r2, r3, r2
        lwz r3, 4(r2)
        blr
_test2:
        addi r2, r4, 2
        mulli r2, r2, 5
        add r2, r3, r2
        lbz r2, 1(r2)
        extsb r3, r2
        blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26535  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-04 23:33:26 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						1ec05d1bb4 
					 
					
						
						
							
							Fix CodeGen/Generic/2006-03-01-dagcombineinfloop.ll, an infinite loop  
						
						... 
						
						
						
						in the dag combiner on 176.gcc on x86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26459  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-01 21:47:21 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b2742f4a26 
					 
					
						
						
							
							Fix a typo evan noticed  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26454  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-01 19:55:35 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						2466472a2b 
					 
					
						
						
							
							Add support for target-specific dag combines  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26443  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-01 04:53:38 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5750df9d69 
					 
					
						
						
							
							Add a new AddToWorkList method, start using it  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26441  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-01 04:03:14 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0b1a85f110 
					 
					
						
						
							
							Pull shifts by a constant through multiplies (a form of reassociation),  
						
						... 
						
						
						
						implementing Regression/CodeGen/X86/mul-shift-reassoc.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26440  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-01 03:44:24 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						860771d2d8 
					 
					
						
						
							
							Vector ops lowering.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26436  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-03-01 01:09:54 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						35a9f5a241 
					 
					
						
						
							
							Compile:  
						
						... 
						
						
						
						unsigned foo4(unsigned short *P) { return *P & 255; }
unsigned foo5(short *P) { return *P & 255; }
to:
_foo4:
        lbz r3,1(r3)
        blr
_foo5:
        lbz r3,1(r3)
        blr
not:
_foo4:
        lhz r2, 0(r3)
        rlwinm r3, r2, 0, 24, 31
        blr
_foo5:
        lhz r2, 0(r3)
        rlwinm r3, r2, 0, 24, 31
        blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26419  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-28 06:49:37 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						15045b6973 
					 
					
						
						
							
							Fold "and (LOAD P), 255" -> zextload.  This allows us to compile:  
						
						... 
						
						
						
						unsigned foo3(unsigned *P) { return *P & 255; }
as:
_foo3:
        lbz r3, 3(r3)
        blr
instead of:
_foo3:
        lwz r2, 0(r3)
        rlwinm r3, r2, 0, 24, 31
        blr
and:
unsigned short foo2(float a) { return a; }
as:
_foo2:
        fctiwz f0, f1
        stfd f0, -8(r1)
        lhz r3, -2(r1)
        blr
instead of:
_foo2:
        fctiwz f0, f1
        stfd f0, -8(r1)
        lwz r2, -4(r1)
        rlwinm r3, r2, 0, 16, 31
        blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26417  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-28 06:35:35 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						71d9ebcbc1 
					 
					
						
						
							
							fold (sra (sra x, c1), c2) -> (sra x, c1+c2)  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26416  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-28 06:23:04 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						2d2536c9d7 
					 
					
						
						
							
							remove some completed notes  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26390  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-27 00:39:31 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7d20d39009 
					 
					
						
						
							
							Fix a problem Nate and Duraid reported where simplifying nodes can cause  
						
						... 
						
						
						
						them to get ressurected, in which case, deleting the undead nodes is
unfriendly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26291  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-20 06:51:04 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						b0d04a7dea 
					 
					
						
						
							
							Add checks to make sure we don't create bogus extend nodes, and fix a bug  
						
						... 
						
						
						
						where we were doing exactly that which was causing failures on x86 and
alpha.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26284  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-18 02:40:58 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						012f241987 
					 
					
						
						
							
							Fix a tricky issue in the SimplifyDemandedBits code where CombineTo wasn't  
						
						... 
						
						
						
						exactly the API we wanted to call into.  This fixes the crash on crafty last
night.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26269  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-17 21:58:01 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						fb7217bea3 
					 
					
						
						
							
							Clean up DemandedBitsAreZero interface  
						
						... 
						
						
						
						Make more use of the new mask helpers in valuetypes.h
Combine (sra (srl x, c1), c1) -> sext_inreg if legal
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26263  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-17 19:54:08 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						cd6a6ed0a9 
					 
					
						
						
							
							Don't expand sdiv by power of two before legalize, since it will likely  
						
						... 
						
						
						
						generate illegal nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26261  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-17 07:26:20 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						551bf3f800 
					 
					
						
						
							
							kill ADD_PARTS & SUB_PARTS and replace them with fancy new ADDC, ADDE, SUBC  
						
						... 
						
						
						
						and SUBE nodes that actually expose what's going on and allow for
significant simplifications in the targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26255  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-17 05:43:56 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						368e18d56a 
					 
					
						
						
							
							Rework the SelectionDAG-based implementations of SimplifyDemandedBits  
						
						... 
						
						
						
						and ComputeMaskedBits to match the new improved versions in instcombine.
Tested against all of multisource/benchmarks on ppc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26238  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-16 21:11:51 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						8f4880be66 
					 
					
						
						
							
							Lowering of sdiv X, pow2 was broken, this fixes it.  This patch is written  
						
						... 
						
						
						
						by Nate, I'm just committing it for him.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26230  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-16 08:02:36 +00:00 
						 
				 
			
				
					
						
							
							
								Jim Laskey 
							
						 
					 
					
						
						
							
						
						d0e58e36a9 
					 
					
						
						
							
							Should not combine ISD::LOCATIONs until we have scheme to remove from  
						
						... 
						
						
						
						MachineDebugInfo tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26216  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-15 19:34:44 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						3391bcd434 
					 
					
						
						
							
							Compile this:  
						
						... 
						
						
						
						xori r6, r2, 1
        rlwinm r6, r6, 0, 31, 31
        cmpwi cr0, r6, 0
        bne cr0, LBB1_3 ; endif
to this:
        rlwinm r6, r2, 0, 31, 31
        cmpwi cr0, r6, 0
        beq cr0, LBB1_3 ; endif
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26047  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-08 02:13:15 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						be71442292 
					 
					
						
						
							
							Back out previous commit, it isn't safe.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26006  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-05 08:23:00 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						bab9239d05 
					 
					
						
						
							
							fold c1 << (x + c2) into (c1 << c2) << x.  fix a warning.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26005  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-05 08:07:24 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						c031e33b68 
					 
					
						
						
							
							Handle urem by shifted powers of 2.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26001  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-02-05 07:36:48 +00:00