Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								32a5f02598
								
							
						 | 
						
							
							
								
								Know some simple identities.  This improves codegen for (1LL << N).
							
							
							
							
							
							
							
							llvm-svn: 19698 
							
						 | 
						
							2005-01-19 17:29:49 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								a9d53f9fb9
								
							
						 | 
						
							
							
								
								Keep track of the retval type as well.
							
							
							
							
							
							
							
							llvm-svn: 19670 
							
						 | 
						
							2005-01-18 19:26:36 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								b07e2d2084
								
							
						 | 
						
							
							
								
								Allow setcc operations to have nonbool types.
							
							
							
							
							
							
							
							llvm-svn: 19656 
							
						 | 
						
							2005-01-18 02:52:03 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								2b4b79581d
								
							
						 | 
						
							
							
								
								Fix the completely broken FP constant folds for setcc's.
							
							
							
							
							
							
							
							llvm-svn: 19651 
							
						 | 
						
							2005-01-18 02:11:55 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								16f64df93a
								
							
						 | 
						
							
							
								
								Refactor code into a new method.
							
							
							
							
							
							
							
							llvm-svn: 19635 
							
						 | 
						
							2005-01-17 17:15:02 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								4e550ebb38
								
							
						 | 
						
							
							
								
								Add assertions.
							
							
							
							
							
							
							
							llvm-svn: 19596 
							
						 | 
						
							2005-01-16 02:23:22 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								0fe7776da5
								
							
						 | 
						
							
							
								
								Eliminate unneeded extensions.
							
							
							
							
							
							
							
							llvm-svn: 19577 
							
						 | 
						
							2005-01-16 00:17:20 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								630d1937bf
								
							
						 | 
						
							
							
								
								Print extra type for nodes with extra type info.
							
							
							
							
							
							
							
							llvm-svn: 19575 
							
						 | 
						
							2005-01-15 21:11:37 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								09d1b3d01d
								
							
						 | 
						
							
							
								
								Common code factored out.
							
							
							
							
							
							
							
							llvm-svn: 19572 
							
						 | 
						
							2005-01-15 07:14:32 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								1001c6e2cd
								
							
						 | 
						
							
							
								
								Add new SIGN_EXTEND_INREG, ZERO_EXTEND_INREG, and FP_ROUND_INREG operators.
							
							
							
							
							
							
							
							llvm-svn: 19568 
							
						 | 
						
							2005-01-15 06:17:04 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								3b8e719d1d
								
							
						 | 
						
							
							
								
								Adjust to CopyFromReg changes, implement deletion of truncating/extending
							
							
							
							
							
							
							
							stores/loads.
llvm-svn: 19562 
							
						 | 
						
							2005-01-14 22:38:01 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								39c6744c9f
								
							
						 | 
						
							
							
								
								Start implementing truncating stores and extending loads.
							
							
							
							
							
							
							
							llvm-svn: 19559 
							
						 | 
						
							2005-01-14 22:08:15 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								e727af06c8
								
							
						 | 
						
							
							
								
								Add new ImplicitDef node, rename CopyRegSDNode class to RegSDNode.
							
							
							
							
							
							
							
							llvm-svn: 19535 
							
						 | 
						
							2005-01-13 20:50:02 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								4b1be0dfeb
								
							
						 | 
						
							
							
								
								Print new node.
							
							
							
							
							
							
							
							llvm-svn: 19526 
							
						 | 
						
							2005-01-13 17:59:10 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								4dfd2cfc0c
								
							
						 | 
						
							
							
								
								Do not fold (zero_ext (sign_ext V)) -> (sign_ext V), they are not the same.
							
							
							
							
							
							
							
							This fixes llvm-test/SingleSource/Regression/C/casts.c
llvm-svn: 19519 
							
						 | 
						
							2005-01-12 18:51:15 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								40e7982c2c
								
							
						 | 
						
							
							
								
								New method
							
							
							
							
							
							
							
							llvm-svn: 19517 
							
						 | 
						
							2005-01-12 18:37:47 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								844277fb1e
								
							
						 | 
						
							
							
								
								Print new operations.
							
							
							
							
							
							
							
							llvm-svn: 19464 
							
						 | 
						
							2005-01-11 05:57:01 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								a86fa4455b
								
							
						 | 
						
							
							
								
								shift X, 0 -> X
							
							
							
							
							
							
							
							llvm-svn: 19453 
							
						 | 
						
							2005-01-11 04:25:13 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								9e4c76123c
								
							
						 | 
						
							
							
								
								Split out SDNode::getOperationName into its own method.
							
							
							
							
							
							
							
							llvm-svn: 19443 
							
						 | 
						
							2005-01-10 23:25:25 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								41b764144d
								
							
						 | 
						
							
							
								
								Implement a couple of more simplifications.  This lets us codegen:
							
							
							
							
							
							
							
							int test2(int * P, int* Q, int A, int B) {
        return P+A == P;
}
into:
test2:
        movl 4(%esp), %eax
        movl 12(%esp), %eax
        shll $2, %eax
        cmpl $0, %eax
        sete %al
        movzbl %al, %eax
        ret
instead of:
test2:
        movl 4(%esp), %eax
        movl 12(%esp), %ecx
        leal (%eax,%ecx,4), %ecx
        cmpl %eax, %ecx
        sete %al
        movzbl %al, %eax
        ret
ICC is producing worse code:
test2:
        movl      4(%esp), %eax                                 #8.5
        movl      12(%esp), %edx                                #8.5
        lea       (%edx,%edx), %ecx                             #9.9
        addl      %ecx, %ecx                                    #9.9
        addl      %eax, %ecx                                    #9.9
        cmpl      %eax, %ecx                                    #9.16
        movl      $0, %eax                                      #9.16
        sete      %al                                           #9.16
        ret                                                     #9.16
as is GCC (looks like our old code):
test2:
        movl    4(%esp), %edx
        movl    12(%esp), %eax
        leal    (%edx,%eax,4), %ecx
        cmpl    %edx, %ecx
        sete    %al
        movzbl  %al, %eax
        ret
llvm-svn: 19430
							
						 | 
						
							2005-01-10 02:03:02 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								00c231baa7
								
							
						 | 
						
							
							
								
								Fix incorrect constant folds, fixing Stepanov after the SHR patch.
							
							
							
							
							
							
							
							llvm-svn: 19429 
							
						 | 
						
							2005-01-10 01:16:03 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								0966a75e76
								
							
						 | 
						
							
							
								
								Constant fold shifts, turning this loop:
							
							
							
							
							
							
							
							.LBB_Z5test0PdS__3:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        movl $16000, %ecx
        sarl $3, %ecx
        cmpl %eax, %ecx
        fstpl 16(%esp)
        #FP_REG_KILL
        jg .LBB_Z5test0PdS__3   # no_exit.1
into:
.LBB_Z5test0PdS__3:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        cmpl $2000, %eax
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__3   # no_exit.1
llvm-svn: 19427
							
						 | 
						
							2005-01-10 00:07:15 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								fde3a212e2
								
							
						 | 
						
							
							
								
								Add some folds for == and != comparisons.  This allows us to
							
							
							
							
							
							
							
							codegen this loop in stepanov:
no_exit.i:              ; preds = %entry, %no_exit.i, %then.i, %_Z5checkd.exit
        %i.0.0 = phi int [ 0, %entry ], [ %i.0.0, %no_exit.i ], [ %inc.0, %_Z5checkd.exit ], [ %inc.012, %then.i ]              ; <int> [#uses=3]
        %indvar = phi uint [ %indvar.next, %no_exit.i ], [ 0, %entry ], [ 0, %then.i ], [ 0, %_Z5checkd.exit ]          ; <uint> [#uses=3]
        %result_addr.i.0 = phi double [ %tmp.4.i.i, %no_exit.i ], [ 0.000000e+00, %entry ], [ 0.000000e+00, %then.i ], [ 0.000000e+00, %_Z5checkd.exit ]          ; <double> [#uses=1]
        %first_addr.0.i.2.rec = cast uint %indvar to int                ; <int> [#uses=1]
        %first_addr.0.i.2 = getelementptr [2000 x double]* %data, int 0, uint %indvar           ; <double*> [#uses=1]
        %inc.i.rec = add int %first_addr.0.i.2.rec, 1           ; <int> [#uses=1]
        %inc.i = getelementptr [2000 x double]* %data, int 0, int %inc.i.rec            ; <double*> [#uses=1]
        %tmp.3.i.i = load double* %first_addr.0.i.2             ; <double> [#uses=1]
        %tmp.4.i.i = add double %result_addr.i.0, %tmp.3.i.i            ; <double> [#uses=2]
        %tmp.2.i = seteq double* %inc.i, getelementptr ([2000 x double]* %data, int 0, int 2000)                ; <bool> [#uses=1]
        %indvar.next = add uint %indvar, 1              ; <uint> [#uses=1]
        br bool %tmp.2.i, label %_Z10accumulateIPddET0_T_S2_S1_.exit, label %no_exit.i
To this:
.LBB_Z4testIPddEvT_S1_T0__1:    # no_exit.i
        fldl data(,%eax,8)
        fldl 16(%esp)
        faddp %st(1)
        fstpl 16(%esp)
        incl %eax
        movl %eax, %ecx
        shll $3, %ecx
        cmpl $16000, %ecx
        #FP_REG_KILL
        jne .LBB_Z4testIPddEvT_S1_T0__1 # no_exit.i
instead of this:
.LBB_Z4testIPddEvT_S1_T0__1:    # no_exit.i
        fldl data(,%eax,8)
        fldl 16(%esp)
        faddp %st(1)
        fstpl 16(%esp)
        incl %eax
        leal data(,%eax,8), %ecx
        leal data+16000, %edx
        cmpl %edx, %ecx
        #FP_REG_KILL
        jne .LBB_Z4testIPddEvT_S1_T0__1 # no_exit.i
llvm-svn: 19425
							
						 | 
						
							2005-01-09 20:52:51 +00:00 | 
						
					
				
					
						
							
							
								 
								Jeff Cohen
							
						 | 
						
							
							
							
							
							
								
							
							
								7d1670da3f
								
							
						 | 
						
							
							
								
								Fix VC++ compilation error
							
							
							
							
							
							
							
							llvm-svn: 19423 
							
						 | 
						
							2005-01-09 20:41:56 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								e6f7882c27
								
							
						 | 
						
							
							
								
								Print the DAG out more like a DAG in nested format.
							
							
							
							
							
							
							
							llvm-svn: 19422 
							
						 | 
						
							2005-01-09 20:38:33 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								1270acc1ce
								
							
						 | 
						
							
							
								
								Print out nodes sorted by their address to make it easier to find them in a list.
							
							
							
							
							
							
							
							llvm-svn: 19421 
							
						 | 
						
							2005-01-09 20:26:36 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								3d5d5022d5
								
							
						 | 
						
							
							
								
								Add a simple transformation.  This allows us to compile one of the inner
							
							
							
							
							
							
							
							loops in stepanov to this:
.LBB_Z5test0PdS__2:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        cmpl $2000, %eax
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__2
instead of this:
.LBB_Z5test0PdS__2:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        movl $data, %ecx
        movl %ecx, %edx
        addl $16000, %edx
        subl %ecx, %edx
        movl %edx, %ecx
        sarl $2, %ecx
        shrl $29, %ecx
        addl %ecx, %edx
        sarl $3, %edx
        cmpl %edx, %eax
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__2
The old instruction selector produced:
.LBB_Z5test0PdS__2:     # no_exit.1
        fldl 24(%esp)
        faddl data(,%eax,8)
        fstl 24(%esp)
        movl %eax, %ecx
        incl %ecx
        incl %eax
        leal data+16000, %edx
        movl $data, %edi
        subl %edi, %edx
        movl %edx, %edi
        sarl $2, %edi
        shrl $29, %edi
        addl %edi, %edx
        sarl $3, %edx
        cmpl %edx, %ecx
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__2   # no_exit.1
Which is even worse!
llvm-svn: 19419
							
						 | 
						
							2005-01-09 20:09:57 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								2a6db3c351
								
							
						 | 
						
							
							
								
								Add support for FP->INT conversions and back.
							
							
							
							
							
							
							
							llvm-svn: 19369 
							
						 | 
						
							2005-01-08 08:08:56 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								9a97e4d5b6
								
							
						 | 
						
							
							
								
								1ULL << 64 is undefined, don't do it.
							
							
							
							
							
							
							
							llvm-svn: 19365 
							
						 | 
						
							2005-01-08 06:24:30 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								e0f1fe181a
								
							
						 | 
						
							
							
								
								Fix a pointer invalidation problem.  This fixes Generic/badarg6.ll
							
							
							
							
							
							
							
							llvm-svn: 19361 
							
						 | 
						
							2005-01-07 23:32:00 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								5c66e45b92
								
							
						 | 
						
							
							
								
								Fold conditional branches on constants away.
							
							
							
							
							
							
							
							llvm-svn: 19360 
							
						 | 
						
							2005-01-07 22:49:57 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								cda3efa6e5
								
							
						 | 
						
							
							
								
								Fix a thinko in the reassociation code, fixing Generic/badlive.ll
							
							
							
							
							
							
							
							llvm-svn: 19359 
							
						 | 
						
							2005-01-07 22:44:09 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								4d5ba99283
								
							
						 | 
						
							
							
								
								Simplify: truncate ({zero|sign}_extend (X))
							
							
							
							
							
							
							
							llvm-svn: 19353 
							
						 | 
						
							2005-01-07 21:56:24 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								9c667933c1
								
							
						 | 
						
							
							
								
								Implement RemoveDeadNodes
							
							
							
							
							
							
							
							llvm-svn: 19345 
							
						 | 
						
							2005-01-07 21:09:16 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								061a1ea9e3
								
							
						 | 
						
							
							
								
								Complete rewrite of the SelectionDAG class.
							
							
							
							
							
							
							
							llvm-svn: 19327 
							
						 | 
						
							2005-01-07 07:46:32 +00:00 | 
						
					
				
					
						
							
							
								 
								Reid Spencer
							
						 | 
						
							
							
							
							
							
								
							
							
								eb04d9bcb4
								
							
						 | 
						
							
							
								
								Add #include <iostream> since Value.h does not #include it any more.
							
							
							
							
							
							
							
							llvm-svn: 14622 
							
						 | 
						
							2004-07-04 12:19:56 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								6b7275996c
								
							
						 | 
						
							
							
								
								Rename Type::PrimitiveID to TypeId and ::getPrimitiveID() to ::getTypeID()
							
							
							
							
							
							
							
							llvm-svn: 14201 
							
						 | 
						
							2004-06-17 18:19:28 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								560b5e42ab
								
							
						 | 
						
							
							
								
								Finegrainify namespacification
							
							
							
							
							
							
							
							llvm-svn: 13948 
							
						 | 
						
							2004-06-02 04:28:06 +00:00 | 
						
					
				
					
						
							
							
								 
								Brian Gaeke
							
						 | 
						
							
							
							
							
							
								
							
							
								960707c335
								
							
						 | 
						
							
							
								
								Put all LLVM code into the llvm namespace, as per bug 109.
							
							
							
							
							
							
							
							llvm-svn: 9903 
							
						 | 
						
							2003-11-11 22:41:34 +00:00 | 
						
					
				
					
						
							
							
								 
								John Criswell
							
						 | 
						
							
							
							
							
							
								
							
							
								482202a601
								
							
						 | 
						
							
							
								
								Added LLVM project notice to the top of every C++ source file.
							
							
							
							
							
							
							
							Header files will be on the way.
llvm-svn: 9298 
							
						 | 
						
							2003-10-20 19:43:21 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								e81de41edf
								
							
						 | 
						
							
							
								
								Add a bunch of new node types, etc
							
							
							
							
							
							
							
							llvm-svn: 7875 
							
						 | 
						
							2003-08-15 04:53:16 +00:00 | 
						
					
				
					
						
							
							
								 
								Chris Lattner
							
						 | 
						
							
							
							
							
							
								
							
							
								600d308853
								
							
						 | 
						
							
							
								
								Initial checkin of SelectionDAG implementation.  This is still rough and
							
							
							
							
							
							
							
							unfinished
llvm-svn: 7717 
							
						 | 
						
							2003-08-11 14:57:33 +00:00 |