llvm-6502/lib
Chris Lattner 5d5261c819 Teach basicaa that x|c == x+c when the c bits of x are clear. This
allows us to compile the example in readme.txt into:

LBB1_1:                                                     ## %bb
	movl	4(%rdx,%rax), %ecx
	movl	%ecx, %esi
	imull	(%rdx,%rax), %esi
	imull	%esi, %ecx
	movl	%esi, 8(%rdx,%rax)
	imull	%ecx, %esi
	movl	%ecx, 12(%rdx,%rax)
	movl	%esi, 16(%rdx,%rax)
	imull	%ecx, %esi
	movl	%esi, 20(%rdx,%rax)
	addq	$16, %rax
	cmpq	$4000, %rax
	jne	LBB1_1

instead of:

LBB1_1: 
	movl	(%rdx,%rax), %ecx
	imull	4(%rdx,%rax), %ecx
	movl	%ecx, 8(%rdx,%rax)
	imull	4(%rdx,%rax), %ecx
	movl	%ecx, 12(%rdx,%rax)
	imull	8(%rdx,%rax), %ecx
	movl	%ecx, 16(%rdx,%rax)
	imull	12(%rdx,%rax), %ecx
	movl	%ecx, 20(%rdx,%rax)
	addq	$16, %rax
	cmpq	$4000, %rax
	jne	LBB1_1

GCC (4.2) doesn't seem to be able to eliminate the loads in this 
testcase either, it generates:

L2:
	movl	(%rdx), %eax
	imull	4(%rdx), %eax
	movl	%eax, 8(%rdx)
	imull	4(%rdx), %eax
	movl	%eax, 12(%rdx)
	imull	8(%rdx), %eax
	movl	%eax, 16(%rdx)
	imull	12(%rdx), %eax
	movl	%eax, 20(%rdx)
	addl	$4, %ecx
	addq	$16, %rdx
	cmpl	$1002, %ecx
	jne	L2




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89952 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-26 16:26:43 +00:00
..
Analysis Teach basicaa that x|c == x+c when the c bits of x are clear. This 2009-11-26 16:26:43 +00:00
Archive
AsmParser Fix MSVC warning ( | with bool and unsigned int). 2009-11-07 23:51:55 +00:00
Bitcode Re-commit r86077 now that r86290 fixes the 179.art and 175.vpr ARM regressions. 2009-11-07 00:16:28 +00:00
CodeGen When all defs of a vr are implicit_def, delete all of the defs. 2009-11-26 00:32:36 +00:00
CompilerDriver Remove dead code. 2009-11-11 04:10:24 +00:00
ExecutionEngine * Move stub allocation inside the JITEmitter, instead of exposing a 2009-11-23 23:35:19 +00:00
Linker Fix MemoryBuffer::getSTDIN to *not* return null if stdin is empty, this is a lame API. 2009-11-10 00:43:58 +00:00
MC Pass StringRef by value. 2009-11-06 10:58:06 +00:00
Support Perform explicit instantiations in the proper namespace, since Clang diagnoses this ill-formity. 2009-11-25 06:04:18 +00:00
System API change Path::isSpecialFile to Path::isRegularFile, improve semantics in regards to comments from 89765 post review. 2009-11-25 06:32:19 +00:00
Target Teach basicaa that x|c == x+c when the c bits of x are clear. This 2009-11-26 16:26:43 +00:00
Transforms Reverting patch in revision 89758, initial attempt at fixing PR5373 has proven to be bogus. 2009-11-25 05:38:41 +00:00
VMCore Move FunctionPassManagerImpl's dumpArguments and dumpPasses calls 2009-11-23 16:24:18 +00:00
Makefile remove llvm-db: it is completely broken and if anyone wants to do a debugger, 2009-10-05 02:29:51 +00:00