Benjamin Kramer
							
						 
					 | 
					
						
						
							
						
						7d6fe13efc
					 | 
					
						
						
							
							Add some x86 specific dagcombines for conditional increments.
						
						
						
						
						
						
						
						(add Y, (sete  X, 0)) -> cmp X, 1; adc  0, Y
(add Y, (setne X, 0)) -> cmp X, 1; sbb -1, Y
(sub (sete  X, 0), Y) -> cmp X, 1; sbb  0, Y
(sub (setne X, 0), Y) -> cmp X, 1; adc -1, Y
for
  unsigned foo(unsigned a, unsigned b) {
    if (a == 0) b++;
    return b;
  }
we now get:
  foo:
    cmpl  $1, %edi
    movl  %esi, %eax
    adcl  $0, %eax
    ret
instead of:
  foo:
    testl %edi, %edi
    sete  %al
    movzbl  %al, %eax
    addl  %esi, %eax
    ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122364 91177308-0d34-0410-b5e6-96231b3b80d8
						
						
					 | 
					
						2010-12-21 21:41:44 +00:00 | 
					
					
						
						
						
							
							
							
							
							
							
							
							
						
					 |