Skip to content
  1. Nov 29, 2009
  2. Nov 27, 2009
  3. Nov 26, 2009
    • Chris Lattner's avatar
      Teach basicaa that x|c == x+c when the c bits of x are clear. This · 29bc8a91
      Chris Lattner authored
      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
      
      llvm-svn: 89952
      29bc8a91
    • Chris Lattner's avatar
      teach basicaa that A[i] != A[i+1]. · 12dacdd3
      Chris Lattner authored
      llvm-svn: 89951
      12dacdd3
    • Chris Lattner's avatar
      update some notes slightly · 8e09ad6f
      Chris Lattner authored
      llvm-svn: 89913
      8e09ad6f
  4. Nov 15, 2009
  5. Nov 11, 2009
  6. Nov 07, 2009
  7. Nov 05, 2009
  8. Oct 28, 2009
  9. Oct 27, 2009
  10. Oct 25, 2009
  11. Oct 23, 2009
  12. Oct 21, 2009
  13. Sep 21, 2009
  14. Sep 20, 2009
  15. Sep 14, 2009
  16. Aug 12, 2009
  17. Jul 21, 2009
  18. Jul 09, 2009
  19. May 12, 2009
    • Dan Gohman's avatar
      Factor the code for collecting IV users out of LSR into an IVUsers class, · d76d71a2
      Dan Gohman authored
      and generalize it so that it can be used by IndVarSimplify. Implement the
      base IndVarSimplify transformation code using IVUsers. This removes
      TestOrigIVForWrap and associated code, as ScalarEvolution now has enough
      builtin overflow detection and folding logic to handle all the same cases,
      and more. Run "opt -iv-users -analyze -disable-output" on your favorite
      loop for an example of what IVUsers does.
      
      This lets IndVarSimplify eliminate IV casts and compute trip counts in
      more cases. Also, this happens to finally fix the remaining testcases
      in PR1301.
      
      Now that IndVarSimplify is being more aggressive, it occasionally runs
      into the problem where ScalarEvolutionExpander's code for avoiding
      duplicate expansions makes it difficult to ensure that all expanded
      instructions dominate all the instructions that will use them. As a
      temporary measure, IndVarSimplify now uses a FixUsesBeforeDefs function
      to fix up instructions inserted by SCEVExpander. Fortunately, this code
      is contained, and can be easily removed once a more comprehensive
      solution is available.
      
      llvm-svn: 71535
      d76d71a2
  20. May 11, 2009
  21. May 09, 2009
  22. Mar 28, 2009
  23. Feb 25, 2009
  24. Feb 20, 2009
  25. Jan 24, 2009
  26. Jan 22, 2009
Loading