Chris Lattner 
							
						 
					 
					
						
						
							
						
						c6fd6cd65c 
					 
					
						
						
							
							Move MaskedValueIsZero from the DAGCombiner to the TargetLowering interface,making isMaskedValueZeroForTargetNode simpler, and useable from other partsof the compiler.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25803  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-30 04:09:27 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5c413bc451 
					 
					
						
						
							
							pass the address of MaskedValueIsZero into isMaskedValueZeroForTargetNode,  
						
						... 
						
						
						
						to permit recursion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25799  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-30 03:49:37 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						03d5e877fd 
					 
					
						
						
							
							eliminate uses of SelectionDAG::getBR2Way_CC  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25767  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-29 06:00:45 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						61af66e687 
					 
					
						
						
							
							Add a missing case to the dag combiner.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25723  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-28 01:06:30 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						2c2c6c61f1 
					 
					
						
						
							
							Add explicit #includes of <iostream>  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25515  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-22 23:41:00 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						a148d9811a 
					 
					
						
						
							
							Get rid of code in the DAGCombiner that is duplicated in SelectionDAG.cpp  
						
						... 
						
						
						
						Now all constant folding in the code generator is in one place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25426  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-18 22:35:16 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4090aee72e 
					 
					
						
						
							
							Fix a backwards conditional that caused an inf loop in some cases.  This  
						
						... 
						
						
						
						fixes: test/Regression/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25419  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-18 19:13:41 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						bf40c4bfe1 
					 
					
						
						
							
							Disable two transformations that contribute to bus errors on SparcV8.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25339  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-15 18:58:59 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4aafb4ff92 
					 
					
						
						
							
							Add a simple missing fold to produce this:  
						
						... 
						
						
						
						subfic r3, r2, 33
instead of this:
        subfic r2, r2, 32
        addi r3, r2, 1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25255  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-12 20:22:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						af551bcf6b 
					 
					
						
						
							
							Don't create rotate instructions in unsupported types, because we don't have  
						
						... 
						
						
						
						promote/expand code yet.  This fixes the 177.mesa failure on PPC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25250  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-12 18:57:33 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						35ef913ec2 
					 
					
						
						
							
							Add bswap, rotl, and rotr nodes  
						
						... 
						
						
						
						Add dag combiner code to recognize rotl, rotr
Add ppc code to match rotl
Targets should add rotl/rotr patterns if they have them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25222  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-11 21:21:00 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						6907708c23 
					 
					
						
						
							
							Revert the previous check-in. Leave shl x, 1 along for target to deal with.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25121  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-06 01:56:02 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						da95a84a11 
					 
					
						
						
							
							fold (shl x, 1) -> (add x, x)  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25120  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-06 01:06:31 +00:00 
						 
				 
			
				
					
						
							
							
								Jim Laskey 
							
						 
					 
					
						
						
							
						
						abf6d1784b 
					 
					
						
						
							
							Added initial support for DEBUG_LABEL allowing debug specific labels to be  
						
						... 
						
						
						
						inserted in the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25104  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-05 01:25:28 +00:00 
						 
				 
			
				
					
						
							
							
								Jim Laskey 
							
						 
					 
					
						
						
							
						
						5bf6f25b4a 
					 
					
						
						
							
							Add unique id to debug location for debug label use (work in progress.)  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25096  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-04 15:04:11 +00:00 
						 
				 
			
				
					
						
							
							
								Jim Laskey 
							
						 
					 
					
						
						
							
						
						d6e8d41340 
					 
					
						
						
							
							Remove redundant debug locations.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24995  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-23 20:08:28 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c33baaafb6 
					 
					
						
						
							
							Simplify store(bitconv(x)) to store(x).  This allows us to compile this:  
						
						... 
						
						
						
						void bar(double Y, double *X) {
  *X = Y;
}
to this:
bar:
        save -96, %o6, %o6
        st %i1, [%i2+4]
        st %i0, [%i2]
        restore %g0, %g0, %g0
        retl
        nop
instead of this:
bar:
        save -104, %o6, %o6
        st %i1, [%i6+-4]
        st %i0, [%i6+-8]
        ldd [%i6+-8], %f0
        std  %f0, [%i2]
        restore %g0, %g0, %g0
        retl
        nop
on sparcv8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24983  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-23 05:48:07 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5710410dea 
					 
					
						
						
							
							fold (conv (load x)) -> (load (conv*)x).  
						
						... 
						
						
						
						This allows us to compile this:
void foo(double);
void bar(double *X) { foo(*X); }
To this:
bar:
        save -96, %o6, %o6
        ld [%i0+4], %o1
        ld [%i0], %o0
        call foo
        nop
        restore %g0, %g0, %g0
        retl
        nop
instead of this:
bar:
        save -104, %o6, %o6
        ldd [%i0], %f0
        std %f0, [%i6+-8]
        ld [%i6+-4], %o1
        ld [%i6+-8], %o0
        call foo
        nop
        restore %g0, %g0, %g0
        retl
        nop
on SparcV8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24982  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-23 05:44:41 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c8547d856d 
					 
					
						
						
							
							Fold bitconv(bitconv(x)) -> x.  We now compile this:  
						
						... 
						
						
						
						void foo(double);
void bar(double X) { foo(X); }
to this:
bar:
        save -96, %o6, %o6
        or %g0, %i0, %o0
        or %g0, %i1, %o1
        call foo
        nop
        restore %g0, %g0, %g0
        retl
        nop
instead of this:
bar:
        save -112, %o6, %o6
        st %i1, [%i6+-4]
        st %i0, [%i6+-8]
        ldd [%i6+-8], %f0
        std %f0, [%i6+-16]
        ld [%i6+-12], %o1
        ld [%i6+-16], %o0
        call foo
        nop
        restore %g0, %g0, %g0
        retl
        nop
on V8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24981  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-23 05:37:50 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						94683777ae 
					 
					
						
						
							
							constant fold bits_convert in getNode and in the dag combiner for fp<->int  
						
						... 
						
						
						
						conversions.  This allows V8 to compiles this:
void %test() {
        call float %test2( float 1.000000e+00, float 2.000000e+00, double 3.000000e+00, double* null )
        ret void
}
into:
test:
        save -96, %o6, %o6
        sethi 0, %o3
        sethi 1049088, %o2
        sethi 1048576, %o1
        sethi 1040384, %o0
        or %g0, %o3, %o4
        call test2
        nop
        restore %g0, %g0, %g0
        retl
        nop
instead of:
test:
        save -112, %o6, %o6
        sethi 0, %o4
        sethi 1049088, %l0
        st %o4, [%i6+-12]
        st %l0, [%i6+-16]
        ld [%i6+-12], %o3
        ld [%i6+-16], %o2
        sethi 1048576, %o1
        sethi 1040384, %o0
        call test2
        nop
        restore %g0, %g0, %g0
        retl
        nop
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24980  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-23 05:30:37 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						3a03ebb377 
					 
					
						
						
							
							* Fix a GlobalAddress lowering bug.  
						
						... 
						
						
						
						* Teach DAG combiner about X86ISD::SETCC by adding a TargetLowering hook.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24921  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-21 23:05:39 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						d0f6d18aa8 
					 
					
						
						
							
							Don't create SEXTLOAD/ZEXTLOAD instructions that the target doesn't support  
						
						... 
						
						
						
						if after legalize.  This fixes IA64 failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24725  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-15 19:02:38 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						d4771840fd 
					 
					
						
						
							
							When folding loads into ops, immediately replace uses of the op with the  
						
						... 
						
						
						
						load.  This reduces number of worklist iterations and avoid missing optimizations
depending on folding of things into sext_inreg nodes (which aren't supported by
all targets).
Tested by Regression/CodeGen/X86/extend.ll:test2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24712  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-14 19:25:30 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ad25d4e2df 
					 
					
						
						
							
							Fix the (zext (zextload)) case to trigger, similarly for sign extends.  
						
						... 
						
						
						
						Allow (zext (truncate)) to apply after legalize if the target supports
AND (which all do).
This compiles
short %foo() {
        %tmp.0 = load ubyte* %X         ; <ubyte> [#uses=1]
        %tmp.3 = cast ubyte %tmp.0 to short             ; <short> [#uses=1]
        ret short %tmp.3
}
to:
_foo:
        movzbl _X, %eax
        ret
instead of:
_foo:
        movzbl _X, %eax
        movzbl %al, %eax
        ret
thanks to Evan for pointing this out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24709  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-14 19:05:06 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						00cb95c9be 
					 
					
						
						
							
							Fix a miscompilation in crafty due to a recent patch  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24706  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-14 07:58:38 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						110dec2000 
					 
					
						
						
							
							Fold (zext (load x) to (zextload x).  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24702  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-14 02:19:23 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						cc2210b4fa 
					 
					
						
						
							
							Only transform (sext (truncate x)) -> (sextinreg x) if before legalize or  
						
						... 
						
						
						
						if the target supports the resultant sextinreg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24632  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-07 18:02:05 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b14ab8a10d 
					 
					
						
						
							
							Teach the dag combiner to turn a truncate/sign_extend pair into a sextinreg  
						
						... 
						
						
						
						when the types match up.  This allows the X86 backend to compile:
sbyte %toggle_value(sbyte* %tmp.1) {
        %tmp.2 = load sbyte* %tmp.1
        ret sbyte %tmp.2
}
to this:
_toggle_value:
        mov %EAX, DWORD PTR [%ESP + 4]
        movsx %EAX, BYTE PTR [%EAX]
        ret
instead of this:
_toggle_value:
        mov %EAX, DWORD PTR [%ESP + 4]
        movsx %EAX, BYTE PTR [%EAX]
        movsx %EAX, %AL
        ret
noticed in Shootout/objinst.
-Chris
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24630  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-12-07 07:11:03 +00:00 
						 
				 
			
				
					
						
							
							
								Jeff Cohen 
							
						 
					 
					
						
						
							
						
						06d9b4ab24 
					 
					
						
						
							
							Fix operator precedence bug caught by VC++.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24318  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-11-12 00:59:01 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						de202b3cda 
					 
					
						
						
							
							Switch the allnodes list from a vector of pointers to an ilist of nodes.This eliminates the vector, allows constant time removal of a node froma graph, and makes iteration over the all nodes list stable when adding  
						
						... 
						
						
						
						nodes to the graph.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24263  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-11-09 23:47:37 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						5dc7e861f8 
					 
					
						
						
							
							Fix a crash that Andrew noticed, and add a pair of braces to unfconfuse  
						
						... 
						
						
						
						XCode's indenting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24159  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-11-02 18:42:59 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7c22575e32 
					 
					
						
						
							
							Fix a source of undefined behavior when dealing with 64-bit types. This  
						
						... 
						
						
						
						may fix PR652.  Thanks to Andrew for tracking down the problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24145  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-11-02 01:47:04 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						3e6099b05f 
					 
					
						
						
							
							Codegen mul by negative power of two with a shift and negate.  
						
						... 
						
						
						
						This implements test/Regression/CodeGen/PowerPC/mul-neg-power-2.ll,
producing:
_foo:
        slwi r2, r3, 1
        subfic r3, r2, 63
        blr
instead of:
_foo:
        mulli r2, r3, -2
        addi r3, r2, 63
        blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24106  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-30 06:41:49 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						fe7f046de8 
					 
					
						
						
							
							Fix DSE to not nuke dead stores unless they redundant store is the same  
						
						... 
						
						
						
						VT as the killing one.  Fix fixes PR491
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24034  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-27 07:10:34 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						731d348166 
					 
					
						
						
							
							Add a simple xform that is useful for bitfield operations.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24029  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-27 05:06:38 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a158eee313 
					 
					
						
						
							
							Clear a bit in this file that was causing a miscompilation of 178.galgel.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23980  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-25 18:57:30 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						e9936d14b8 
					 
					
						
						
							
							BuildSDIV and BuildUDIV only work for i32/i64, but they don't check that  
						
						... 
						
						
						
						the input is that type, this caused a failure on gs on X86 last night.
Move the hard checks into Build[US]Div since that is where decisions like
this should be made.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23881  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-22 18:50:15 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c8597ca698 
					 
					
						
						
							
							add a case missing from the dag combiner that exposed the failure on  
						
						... 
						
						
						
						2005-10-21-longlonggtu.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23875  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-21 21:23:25 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						4d38567689 
					 
					
						
						
							
							Fix a typo in the dag combiner, so that this can work on i64 targets  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23856  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-21 01:51:45 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						405e3ecb56 
					 
					
						
						
							
							Invert the TargetLowering flag that controls divide by consant expansion.  
						
						... 
						
						
						
						Add a new flag to TargetLowering indicating if the target has really cheap
  signed division by powers of two, make ppc use it.  This will probably go
  away in the future.
Implement some more ISD::SDIV folds in the dag combiner
Remove now dead code in the x86 backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23853  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-21 00:02:42 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						c6a454e8d5 
					 
					
						
						
							
							Fix a couple bugs in the const div stuff where we'd generate MULHS/MULHU  
						
						... 
						
						
						
						for types that aren't legal, and fail a divisor is less than zero
comparison, which would cause us to drop a subtract.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23846  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-20 17:45:03 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f75f2a0a02 
					 
					
						
						
							
							don't use llabs with apparently VC++ doesn't have  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23845  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-20 17:01:00 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						6957523b9d 
					 
					
						
						
							
							Move the target constant divide optimization up into the dag combiner, so  
						
						... 
						
						
						
						that the nodes can be folded with other nodes, and we can not duplicate
code in every backend.  Alpha will probably want this too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23835  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-20 02:15:44 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						40c62d5069 
					 
					
						
						
							
							Fold (select C, load A, load B) -> load (select C, A, B).  This happens quite  
						
						... 
						
						
						
						a lot throughout many programs.  In particular, specfp triggers it a bunch for
constant FP nodes when you have code like  cond ? 1.0 : -1.0.
If the PPC ISel exposed the loads implicit in pic references to external globals,
we would be able to eliminate a load in cases like this as well:
%X = external global int
%Y = external global int
int* %test4(bool %C) {
        %G = select bool %C, int* %X, int* %Y
        ret int* %G
}
Note that this breaks things that use SrcValue's (see the fixme), but since nothing
uses them yet, this is ok.
Also, simplify some code to use hasOneUse() on an SDOperand instead of hasNUsesOfValue directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23781  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-18 06:04:22 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						a0e221dc75 
					 
					
						
						
							
							Implement some feedback from Chris re: constant canonicalization  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23777  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-18 00:28:13 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						11af4eaa6d 
					 
					
						
						
							
							fold fmul X, +2.0 -> fadd X, X;  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23774  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-17 20:40:11 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						854077d3a5 
					 
					
						
						
							
							add a trivial fold  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23764  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-17 01:07:11 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						750dbd5950 
					 
					
						
						
							
							Fix this logic.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23756  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-15 22:35:40 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						85d63bbff7 
					 
					
						
						
							
							Add a case we were missing that was causing us to fail CodeGen/PowerPC/rlwinm.ll:test3  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23755  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-15 22:18:08 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						216def8ecf 
					 
					
						
						
							
							fold sext_in_reg, sext_in_reg where both have the same VT.  This was  
						
						... 
						
						
						
						popping up in Fourinarow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23722  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-14 01:29:07 +00:00