Chris Lattner 
							
						 
					 
					
						
						
							
						
						ef847df087 
					 
					
						
						
							
							print and fold BRCONDTWOWAY correctly  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21165  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-09 03:27:28 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						485df9b84b 
					 
					
						
						
							
							canonicalize a bunch of operations involving fneg  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21160  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-09 03:02:46 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5a6bace3ab 
					 
					
						
						
							
							If a target zero or sign extends the result of its setcc, allow folding of  
						
						... 
						
						
						
						this into sign/zero extension instructions later.
On PPC, for example, this testcase:
%G = external global sbyte
implementation
void %test(int %X, int %Y) {
  %C = setlt int %X, %Y
  %D = cast bool %C to sbyte
  store sbyte %D, sbyte* %G
  ret void
}
Now codegens to:
        cmpw cr0, r3, r4
        li r3, 1
        li r4, 0
        blt .LBB_test_2 ;
.LBB_test_1:    ;
        or r3, r4, r4
.LBB_test_2:    ;
        addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb")
        lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2)
        stb r3, 0(r2)
instead of:
        cmpw cr0, r3, r4
        li r3, 1
        li r4, 0
        blt .LBB_test_2 ;
.LBB_test_1:    ;
        or r3, r4, r4
.LBB_test_2:    ;
***     rlwinm r3, r3, 0, 31, 31
        addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb")
        lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2)
        stb r3, 0(r2)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21148  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-07 19:43:53 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						2467392c59 
					 
					
						
						
							
							Remove somethign I had for testing  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21144  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-07 18:58:54 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						67255a1d17 
					 
					
						
						
							
							This patch does two things.  First, it canonicalizes 'X >= C' -> 'X > C-1'  
						
						... 
						
						
						
						(likewise for <= >=u >=u).
Second, it implements a special case hack to turn 'X gtu SINTMAX' -> 'X lt 0'
On powerpc, for example, this changes this:
        lis r2, 32767
        ori r2, r2, 65535
        cmplw cr0, r3, r2
        bgt .LBB_test_2
into:
        cmpwi cr0, r3, 0
        blt .LBB_test_2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21142  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-07 18:14:58 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						8e8bd656b3 
					 
					
						
						
							
							Fix a really scary bug that Nate found where we weren't deleting the right  
						
						... 
						
						
						
						elements auto of the autoCSE maps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21128  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-07 00:30:13 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						1867054643 
					 
					
						
						
							
							Add MULHU and MULHS nodes for the high part of an (un)signed 32x32=64b  
						
						... 
						
						
						
						multiply.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21102  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-05 22:36:56 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ff9fd0a99c 
					 
					
						
						
							
							print fneg/fabs  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21008  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-02 04:58:41 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5b359c6c4f 
					 
					
						
						
							
							fix some bugs in the implementation of SHL_PARTS and friends.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21004  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-02 04:00:59 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						41be951a47 
					 
					
						
						
							
							Print some new nodes  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21001  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-02 03:30:42 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						fc1b1dad88 
					 
					
						
						
							
							Add ISD::UNDEF node  
						
						... 
						
						
						
						Teach the SelectionDAG code how to expand and promote it
Have PPC32 LowerCallTo generate ISD::UNDEF for int arg regs used up by fp
  arguments, but not shadowing their value.  This allows us to do the right
  thing with both fixed and vararg floating point arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20988  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-01 22:34:39 +00:00 
						 
				 
			
				
					
						
							
							
								Andrew Lenharth 
							
						 
					 
					
						
						
							
						
						95762124a1 
					 
					
						
						
							
							PCMarker support for DAG and Alpha  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20965  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-03-31 21:24:06 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ee639f1760 
					 
					
						
						
							
							Fix a bug where we would incorrectly do a sign ext instead of a zero ext  
						
						... 
						
						
						
						because we were checking the wrong thing.  Thanks to andrew for pointing
this out!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20554  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-03-10 20:55:51 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						14723c264d 
					 
					
						
						
							
							constant fold FP_ROUND_INREG, ZERO_EXTEND_INREG, and SIGN_EXTEND_INREG  
						
						... 
						
						
						
						This allows the alpha backend to compile:
bool %test(uint %P) {
        %c = seteq uint %P, 0
        ret bool %c
}
into:
test:
        ldgp $29, 0($27)
        ZAP $16,240,$0
        CMPEQ $0,0,$0
        AND $0,1,$0
        ret $31,($26),1
instead of:
test:
        ldgp $29, 0($27)
        ZAP $16,240,$0
        ldiq $1,0
        ZAP $1,240,$1
        CMPEQ $0,$1,$0
        AND $0,1,$0
        ret $31,($26),1
... and fixes PR534.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20534  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-03-09 18:37:12 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						d8658616cf 
					 
					
						
						
							
							Don't rely on doubles comparing identical to each other, which doesn't work  
						
						... 
						
						
						
						for 0.0 and -0.0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20230  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-02-17 20:17:32 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b48da39536 
					 
					
						
						
							
							Remove the 3 HACK HACK HACKs I put in before, fixing them properly with  
						
						... 
						
						
						
						the new TLI that is available.
Implement support for handling out of range shifts.  This allows us to
compile this code (a 64-bit rotate):
unsigned long long f3(unsigned long long x) {
  return (x << 32) | (x >> (64-32));
}
into this:
f3:
        mov %EDX, DWORD PTR [%ESP + 4]
        mov %EAX, DWORD PTR [%ESP + 8]
        ret
GCC produces this:
$ gcc t.c -masm=intel -O3 -S -o - -fomit-frame-pointer
..
f3:
        push    %ebx
        mov     %ebx, DWORD PTR [%esp+12]
        mov     %ecx, DWORD PTR [%esp+8]
        mov     %eax, %ebx
        mov     %edx, %ecx
        pop     %ebx
        ret
The Simple ISEL produces (eww gross):
f3:
        sub %ESP, 4
        mov DWORD PTR [%ESP], %ESI
        mov %EDX, DWORD PTR [%ESP + 8]
        mov %ECX, DWORD PTR [%ESP + 12]
        mov %EAX, 0
        mov %ESI, 0
        or %EAX, %ECX
        or %EDX, %ESI
        mov %ESI, DWORD PTR [%ESP]
        add %ESP, 4
        ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19780  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-23 04:39:44 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7cd50cf286 
					 
					
						
						
							
							More bugfixes for IA64 shifts.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19739  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-22 00:33:03 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a7306db5f7 
					 
					
						
						
							
							Add a nasty hack to fix Alpha/IA64 multiplies by a power of two.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19737  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-22 00:20:42 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						9bb86f46e1 
					 
					
						
						
							
							Remove unneeded line.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19736  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-21 23:43:12 +00:00 
						 
				 
			
				
					
						
							
							
								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