| 
							
							
								 Chris Lattner | 1e7ceaf0a0 | test commit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19735 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-21 23:38:56 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | a93ec3ebfb | Unary token factor nodes are unneeded. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19727 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-21 18:01:22 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 17eee18f40 | implement add_parts/sub_parts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19714 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-20 18:50:55 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 39908e0ce0 | Know some identities about tokenfactor nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19699 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-19 18:01:40 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 88218ef706 | Know some simple identities.  This improves codegen for (1LL << N). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19698 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-19 17:29:49 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 4a9b4f1943 | Keep track of the retval type as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19670 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-18 19:26:36 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | f30b73b1c6 | Allow setcc operations to have nonbool types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19656 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-18 02:52:03 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 6e4e7652d8 | Fix the completely broken FP constant folds for setcc's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19651 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-18 02:11:55 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 068a81e9fc | Refactor code into a new method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19635 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-17 17:15:02 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 7636512f59 | Add assertions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19596 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-16 02:23:22 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 950aa3ca2c | Eliminate unneeded extensions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19577 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-16 00:17:20 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 8a389bb376 | Print extra type for nodes with extra type info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19575 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-15 21:11:37 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 4ea6924444 | Common code factored out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19572 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-15 07:14:32 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 859157daee | Add new SIGN_EXTEND_INREG, ZERO_EXTEND_INREG, and FP_ROUND_INREG operators. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19568 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-15 06:17:04 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 69a52155d2 | Adjust to CopyFromReg changes, implement deletion of truncating/extending stores/loads.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19562 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-14 22:38:01 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 2ee743ff9b | Start implementing truncating stores and extending loads. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19559 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-14 22:08:15 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 18c2f13e0f | Add new ImplicitDef node, rename CopyRegSDNode class to RegSDNode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19535 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-13 20:50:02 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 282c5cae89 | Print new node. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19526 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-13 17:59:10 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 2f0ca79a75 | 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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19519 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-12 18:51:15 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 5c88456227 | New method git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19517 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-12 18:37:47 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 4c633e82f6 | Print new operations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19464 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-11 05:57:01 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | a8d9cc8705 | shift X, 0 -> X git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19453 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-11 04:25:13 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | d75f19fa42 | Split out SDNode::getOperationName into its own method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19443 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-10 23:25:25 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 68dc310942 | 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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19430 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-10 02:03:02 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 87ae6ae41c | Fix incorrect constant folds, fixing Stepanov after the SHR patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19429 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-10 01:16:03 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 8136d1f8cb | 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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19427 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-10 00:07:15 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 5cdcc58d51 | 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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19425 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-09 20:52:51 +00:00 |  | 
			
				
					| 
							
							
								 Jeff Cohen | fd161e964a | Fix VC++ compilation error git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19423 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-09 20:41:56 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | ea946cdb1b | Print the DAG out more like a DAG in nested format. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19422 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-09 20:38:33 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 49d24716a4 | Print out nodes sorted by their address to make it easier to find them in a list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19421 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-09 20:26:36 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | abd2182875 | 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!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19419 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-09 20:09:57 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | ae0aacb833 | Add support for FP->INT conversions and back. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19369 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-08 08:08:56 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 623f70dd4c | 1ULL << 64 is undefined, don't do it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19365 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-08 06:24:30 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 7c68ec6b70 | Fix a pointer invalidation problem.  This fixes Generic/badarg6.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19361 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-07 23:32:00 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 5351e9b172 | Fold conditional branches on constants away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19360 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-07 22:49:57 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 4287d5e355 | Fix a thinko in the reassociation code, fixing Generic/badlive.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19359 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-07 22:44:09 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | fd8c39b773 | Simplify: truncate ({zero|sign}_extend (X)) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19353 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-07 21:56:24 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 0e12e6e041 | Implement RemoveDeadNodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19345 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-07 21:09:16 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | c3aae25116 | Complete rewrite of the SelectionDAG class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19327 91177308-0d34-0410-b5e6-96231b3b80d8 | 2005-01-07 07:46:32 +00:00 |  | 
			
				
					| 
							
							
								 Reid Spencer | 954da37bb4 | Add #include <iostream> since Value.h does not #include it any more. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14622 91177308-0d34-0410-b5e6-96231b3b80d8 | 2004-07-04 12:19:56 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | f70c22b019 | Rename Type::PrimitiveID to TypeId and ::getPrimitiveID() to ::getTypeID() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14201 91177308-0d34-0410-b5e6-96231b3b80d8 | 2004-06-17 18:19:28 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | e25738cab6 | Finegrainify namespacification git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13948 91177308-0d34-0410-b5e6-96231b3b80d8 | 2004-06-02 04:28:06 +00:00 |  | 
			
				
					| 
							
							
								 Brian Gaeke | d0fde30ce8 | Put all LLVM code into the llvm namespace, as per bug 109. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903 91177308-0d34-0410-b5e6-96231b3b80d8 | 2003-11-11 22:41:34 +00:00 |  | 
			
				
					| 
							
							
								 John Criswell | b576c94c15 | Added LLVM project notice to the top of every C++ source file. Header files will be on the way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298 91177308-0d34-0410-b5e6-96231b3b80d8 | 2003-10-20 19:43:21 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 7dc97ff180 | Add a bunch of new node types, etc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7875 91177308-0d34-0410-b5e6-96231b3b80d8 | 2003-08-15 04:53:16 +00:00 |  | 
			
				
					| 
							
							
								 Chris Lattner | 78ec311bd5 | Initial checkin of SelectionDAG implementation.  This is still rough and unfinished
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7717 91177308-0d34-0410-b5e6-96231b3b80d8 | 2003-08-11 14:57:33 +00:00 |  |