Skip to content
  • Chris Lattner's avatar
    teach the x86 address matching stuff to handle · 84776786
    Chris Lattner authored
    (shl (or x,c), 3) the same as (shl (add x, c), 3)
    when x doesn't have any bits from c set.
    
    This finishes off PR1135.  Before we compiled the block to:
    to:
    
    LBB0_3:                                 ## %bb
    	cmpb	$4, %dl
    	sete	%dl
    	addb	%dl, %cl
    	movb	%cl, %dl
    	shlb	$2, %dl
    	addb	%r8b, %dl
    	shlb	$2, %dl
    	movzbl	%dl, %edx
    	movl	%esi, (%rdi,%rdx,4)
    	leaq	2(%rdx), %r9
    	movl	%esi, (%rdi,%r9,4)
    	leaq	1(%rdx), %r9
    	movl	%esi, (%rdi,%r9,4)
    	addq	$3, %rdx
    	movl	%esi, (%rdi,%rdx,4)
    	incb	%r8b
    	decb	%al
    	movb	%r8b, %dl
    	jne	LBB0_1
    
    Now we produce:
    
    LBB0_3:                                 ## %bb
    	cmpb	$4, %dl
    	sete	%dl
    	addb	%dl, %cl
    	movb	%cl, %dl
    	shlb	$2, %dl
    	addb	%r8b, %dl
    	shlb	$2, %dl
    	movzbl	%dl, %edx
    	movl	%esi, (%rdi,%rdx,4)
    	movl	%esi, 8(%rdi,%rdx,4)
    	movl	%esi, 4(%rdi,%rdx,4)
    	movl	%esi, 12(%rdi,%rdx,4)
    	incb	%r8b
    	decb	%al
    	movb	%r8b, %dl
    	jne	LBB0_1
    
    llvm-svn: 101958
    84776786
Loading