; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -O3 -mtriple=x86_64-unknown-unknown -mcpu=core2 | FileCheck %s -check-prefix=X64
; RUN: llc < %s -O3 -mtriple=i686-unknown-unknown   -mcpu=core2 | FileCheck %s -check-prefix=X32

; @simple is the most basic chain of address induction variables. Chaining
; saves at least one register and avoids complex addressing and setup
; code.
;
; %x * 4
; no other address computation in the preheader
; no complex address modes
;
; no expensive address computation in the preheader
; no complex address modes

define i32 @simple(i32* %a, i32* %b, i32 %x) nounwind {
; X64-LABEL: simple:
; X64:       # %bb.0: # %entry
; X64-NEXT:    movslq %edx, %rcx
; X64-NEXT:    shlq $2, %rcx
; X64-NEXT:    xorl %eax, %eax
; X64-NEXT:    .p2align 4, 0x90
; X64-NEXT:  .LBB0_1: # %loop
; X64-NEXT:    # =>This Inner Loop Header: Depth=1
; X64-NEXT:    addl (%rdi), %eax
; X64-NEXT:    leaq (%rdi,%rcx), %r8
; X64-NEXT:    addl (%rdi,%rcx), %eax
; X64-NEXT:    leaq (%r8,%rcx), %rdx
; X64-NEXT:    addl (%rcx,%r8), %eax
; X64-NEXT:    addl (%rcx,%rdx), %eax
; X64-NEXT:    addq %rcx, %rdx
; X64-NEXT:    addq %rcx, %rdx
; X64-NEXT:    movq %rdx, %rdi
; X64-NEXT:    cmpq %rsi, %rdx
; X64-NEXT:    jne .LBB0_1
; X64-NEXT:  # %bb.2: # %exit
; X64-NEXT:    retq
;
; X32-LABEL: simple:
; X32:       # %bb.0: # %entry
; X32-NEXT:    pushl %ebx
; X32-NEXT:    pushl %edi
; X32-NEXT:    pushl %esi
; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
; X32-NEXT:    shll $2, %edx
; X32-NEXT:    xorl %eax, %eax
; X32-NEXT:    .p2align 4, 0x90
; X32-NEXT:  .LBB0_1: # %loop
; X32-NEXT:    # =>This Inner Loop Header: Depth=1
; X32-NEXT:    addl (%esi), %eax
; X32-NEXT:    leal (%esi,%edx), %edi
; X32-NEXT:    addl (%esi,%edx), %eax
; X32-NEXT:    leal (%edi,%edx), %ebx
; X32-NEXT:    addl (%edx,%edi), %eax
; X32-NEXT:    addl (%edx,%ebx), %eax
; X32-NEXT:    addl %edx, %ebx
; X32-NEXT:    addl %edx, %ebx
; X32-NEXT:    movl %ebx, %esi
; X32-NEXT:    cmpl %ecx, %ebx
; X32-NEXT:    jne .LBB0_1
; X32-NEXT:  # %bb.2: # %exit
; X32-NEXT:    popl %esi
; X32-NEXT:    popl %edi
; X32-NEXT:    popl %ebx
; X32-NEXT:    retl
entry:
  br label %loop
loop:
  %iv = phi i32* [ %a, %entry ], [ %iv4, %loop ]
  %s = phi i32 [ 0, %entry ], [ %s4, %loop ]
  %v = load i32, i32* %iv
  %iv1 = getelementptr inbounds i32, i32* %iv, i32 %x
  %v1 = load i32, i32* %iv1
  %iv2 = getelementptr inbounds i32, i32* %iv1, i32 %x
  %v2 = load i32, i32* %iv2
  %iv3 = getelementptr inbounds i32, i32* %iv2, i32 %x
  %v3 = load i32, i32* %iv3
  %s1 = add i32 %s, %v
  %s2 = add i32 %s1, %v1
  %s3 = add i32 %s2, %v2
  %s4 = add i32 %s3, %v3
  %iv4 = getelementptr inbounds i32, i32* %iv3, i32 %x
  %cmp = icmp eq i32* %iv4, %b
  br i1 %cmp, label %exit, label %loop
exit:
  ret i32 %s4
}

; @user is not currently chained because the IV is live across memory ops.
;
; expensive address computation in the preheader
; complex address modes
define i32 @user(i32* %a, i32* %b, i32 %x) nounwind {
; X64-LABEL: user:
; X64:       # %bb.0: # %entry
; X64-NEXT:    movslq %edx, %rcx
; X64-NEXT:    movq %rcx, %rdx
; X64-NEXT:    shlq $4, %rdx
; X64-NEXT:    leaq (,%rcx,4), %rax
; X64-NEXT:    leaq (%rax,%rax,2), %r8
; X64-NEXT:    xorl %eax, %eax
; X64-NEXT:    .p2align 4, 0x90
; X64-NEXT:  .LBB1_1: # %loop
; X64-NEXT:    # =>This Inner Loop Header: Depth=1
; X64-NEXT:    addl (%rdi), %eax
; X64-NEXT:    addl (%rdi,%rcx,4), %eax
; X64-NEXT:    addl (%rdi,%rcx,8), %eax
; X64-NEXT:    addl (%rdi,%r8), %eax
; X64-NEXT:    movl %eax, (%rdi)
; X64-NEXT:    addq %rdx, %rdi
; X64-NEXT:    cmpq %rdi, %rsi
; X64-NEXT:    jne .LBB1_1
; X64-NEXT:  # %bb.2: # %exit
; X64-NEXT:    retq
;
; X32-LABEL: user:
; X32:       # %bb.0: # %entry
; X32-NEXT:    pushl %ebx
; X32-NEXT:    pushl %edi
; X32-NEXT:    pushl %esi
; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
; X32-NEXT:    movl %ecx, %edi
; X32-NEXT:    shll $4, %edi
; X32-NEXT:    leal (,%ecx,4), %eax
; X32-NEXT:    leal (%eax,%eax,2), %ebx
; X32-NEXT:    xorl %eax, %eax
; X32-NEXT:    .p2align 4, 0x90
; X32-NEXT:  .LBB1_1: # %loop
; X32-NEXT:    # =>This Inner Loop Header: Depth=1
; X32-NEXT:    addl (%esi), %eax
; X32-NEXT:    addl (%esi,%ecx,4), %eax
; X32-NEXT:    addl (%esi,%ecx,8), %eax
; X32-NEXT:    addl (%esi,%ebx), %eax
; X32-NEXT:    movl %eax, (%esi)
; X32-NEXT:    addl %edi, %esi
; X32-NEXT:    cmpl %esi, %edx
; X32-NEXT:    jne .LBB1_1
; X32-NEXT:  # %bb.2: # %exit
; X32-NEXT:    popl %esi
; X32-NEXT:    popl %edi
; X32-NEXT:    popl %ebx
; X32-NEXT:    retl
entry:
  br label %loop
loop:
  %iv = phi i32* [ %a, %entry ], [ %iv4, %loop ]
  %s = phi i32 [ 0, %entry ], [ %s4, %loop ]
  %v = load i32, i32* %iv
  %iv1 = getelementptr inbounds i32, i32* %iv, i32 %x
  %v1 = load i32, i32* %iv1
  %iv2 = getelementptr inbounds i32, i32* %iv1, i32 %x
  %v2 = load i32, i32* %iv2
  %iv3 = getelementptr inbounds i32, i32* %iv2, i32 %x
  %v3 = load i32, i32* %iv3
  %s1 = add i32 %s, %v
  %s2 = add i32 %s1, %v1
  %s3 = add i32 %s2, %v2
  %s4 = add i32 %s3, %v3
  %iv4 = getelementptr inbounds i32, i32* %iv3, i32 %x
  store i32 %s4, i32* %iv
  %cmp = icmp eq i32* %iv4, %b
  br i1 %cmp, label %exit, label %loop
exit:
  ret i32 %s4
}

; @extrastride is a slightly more interesting case of a single
; complete chain with multiple strides. The test case IR is what LSR
; used to do, and exactly what we don't want to do. LSR's new IV
; chaining feature should now undo the damage.
;
; We currently don't handle this on X64 because the sexts cause
; strange increment expressions like this:
; IV + ((sext i32 (2 * %s) to i64) + (-1 * (sext i32 %s to i64)))
;
; For x32, no spills in the preheader, no complex address modes, no reloads.

define void @extrastride(i8* nocapture %main, i32 %main_stride, i32* nocapture %res, i32 %x, i32 %y, i32 %z) nounwind {
; X64-LABEL: extrastride:
; X64:       # %bb.0: # %entry
; X64-NEXT:    pushq %rbp
; X64-NEXT:    pushq %r14
; X64-NEXT:    pushq %rbx
; X64-NEXT:    # kill: def $ecx killed $ecx def $rcx
; X64-NEXT:    # kill: def $esi killed $esi def $rsi
; X64-NEXT:    testl %r9d, %r9d
; X64-NEXT:    je .LBB2_3
; X64-NEXT:  # %bb.1: # %for.body.lr.ph
; X64-NEXT:    leal (%rsi,%rsi), %r14d
; X64-NEXT:    leal (%rsi,%rsi,2), %ebx
; X64-NEXT:    addl %esi, %ecx
; X64-NEXT:    leal (,%rsi,4), %eax
; X64-NEXT:    leal (%rcx,%rsi,4), %ebp
; X64-NEXT:    movslq %eax, %r10
; X64-NEXT:    movslq %ebx, %r11
; X64-NEXT:    movslq %r14d, %rbx
; X64-NEXT:    movslq %esi, %rsi
; X64-NEXT:    movslq %r8d, %rcx
; X64-NEXT:    shlq $2, %rcx
; X64-NEXT:    movslq %ebp, %rax
; X64-NEXT:    .p2align 4, 0x90
; X64-NEXT:  .LBB2_2: # %for.body
; X64-NEXT:    # =>This Inner Loop Header: Depth=1
; X64-NEXT:    movl (%rdi,%rsi), %ebp
; X64-NEXT:    addl (%rdi), %ebp
; X64-NEXT:    addl (%rdi,%rbx), %ebp
; X64-NEXT:    addl (%rdi,%r11), %ebp
; X64-NEXT:    addl (%rdi,%r10), %ebp
; X64-NEXT:    movl %ebp, (%rdx)
; X64-NEXT:    addq %rax, %rdi
; X64-NEXT:    addq %rcx, %rdx
; X64-NEXT:    decl %r9d
; X64-NEXT:    jne .LBB2_2
; X64-NEXT:  .LBB2_3: # %for.end
; X64-NEXT:    popq %rbx
; X64-NEXT:    popq %r14
; X64-NEXT:    popq %rbp
; X64-NEXT:    retq
;
; X32-LABEL: extrastride:
; X32:       # %bb.0: # %entry
; X32-NEXT:    pushl %ebp
; X32-NEXT:    pushl %ebx
; X32-NEXT:    pushl %edi
; X32-NEXT:    pushl %esi
; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X32-NEXT:    testl %eax, %eax
; X32-NEXT:    je .LBB2_3
; X32-NEXT:  # %bb.1: # %for.body.lr.ph
; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
; X32-NEXT:    movl {{[0-9]+}}(%esp), %ebx
; X32-NEXT:    movl {{[0-9]+}}(%esp), %edi
; X32-NEXT:    addl %esi, %edi
; X32-NEXT:    shll $2, %ecx
; X32-NEXT:    .p2align 4, 0x90
; X32-NEXT:  .LBB2_2: # %for.body
; X32-NEXT:    # =>This Inner Loop Header: Depth=1
; X32-NEXT:    movl (%ebx,%esi), %ebp
; X32-NEXT:    addl (%ebx), %ebp
; X32-NEXT:    addl %esi, %ebx
; X32-NEXT:    addl (%esi,%ebx), %ebp
; X32-NEXT:    addl %esi, %ebx
; X32-NEXT:    addl (%esi,%ebx), %ebp
; X32-NEXT:    addl %esi, %ebx
; X32-NEXT:    addl (%esi,%ebx), %ebp
; X32-NEXT:    movl %ebp, (%edx)
; X32-NEXT:    addl %esi, %ebx
; X32-NEXT:    addl %edi, %ebx
; X32-NEXT:    addl %ecx, %edx
; X32-NEXT:    decl %eax
; X32-NEXT:    jne .LBB2_2
; X32-NEXT:  .LBB2_3: # %for.end
; X32-NEXT:    popl %esi
; X32-NEXT:    popl %edi
; X32-NEXT:    popl %ebx
; X32-NEXT:    popl %ebp
; X32-NEXT:    retl
entry:
  %cmp8 = icmp eq i32 %z, 0
  br i1 %cmp8, label %for.end, label %for.body.lr.ph

for.body.lr.ph:                                   ; preds = %entry
  %add.ptr.sum = shl i32 %main_stride, 1 ; s*2
  %add.ptr1.sum = add i32 %add.ptr.sum, %main_stride ; s*3
  %add.ptr2.sum = add i32 %x, %main_stride ; s + x
  %add.ptr4.sum = shl i32 %main_stride, 2 ; s*4
  %add.ptr3.sum = add i32 %add.ptr2.sum, %add.ptr4.sum ; total IV stride = s*5+x
  br label %for.body

for.body:                                         ; preds = %for.body.lr.ph, %for.body
  %main.addr.011 = phi i8* [ %main, %for.body.lr.ph ], [ %add.ptr6, %for.body ]
  %i.010 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.body ]
  %res.addr.09 = phi i32* [ %res, %for.body.lr.ph ], [ %add.ptr7, %for.body ]
  %0 = bitcast i8* %main.addr.011 to i32*
  %1 = load i32, i32* %0, align 4
  %add.ptr = getelementptr inbounds i8, i8* %main.addr.011, i32 %main_stride
  %2 = bitcast i8* %add.ptr to i32*
  %3 = load i32, i32* %2, align 4
  %add.ptr1 = getelementptr inbounds i8, i8* %main.addr.011, i32 %add.ptr.sum
  %4 = bitcast i8* %add.ptr1 to i32*
  %5 = load i32, i32* %4, align 4
  %add.ptr2 = getelementptr inbounds i8, i8* %main.addr.011, i32 %add.ptr1.sum
  %6 = bitcast i8* %add.ptr2 to i32*
  %7 = load i32, i32* %6, align 4
  %add.ptr3 = getelementptr inbounds i8, i8* %main.addr.011, i32 %add.ptr4.sum
  %8 = bitcast i8* %add.ptr3 to i32*
  %9 = load i32, i32* %8, align 4
  %add = add i32 %3, %1
  %add4 = add i32 %add, %5
  %add5 = add i32 %add4, %7
  %add6 = add i32 %add5, %9
  store i32 %add6, i32* %res.addr.09, align 4
  %add.ptr6 = getelementptr inbounds i8, i8* %main.addr.011, i32 %add.ptr3.sum
  %add.ptr7 = getelementptr inbounds i32, i32* %res.addr.09, i32 %y
  %inc = add i32 %i.010, 1
  %cmp = icmp eq i32 %inc, %z
  br i1 %cmp, label %for.end, label %for.body

for.end:                                          ; preds = %for.body, %entry
  ret void
}

; @foldedidx is an unrolled variant of this loop:
;  for (unsigned long i = 0; i < len; i += s) {
;    c[i] = a[i] + b[i];
;  }
; where 's' can be folded into the addressing mode.
; Consequently, we should *not* form any chains.

define void @foldedidx(i8* nocapture %a, i8* nocapture %b, i8* nocapture %c) nounwind ssp {
; X64-LABEL: foldedidx:
; X64:       # %bb.0: # %entry
; X64-NEXT:    movl $3, %eax
; X64-NEXT:    .p2align 4, 0x90
; X64-NEXT:  .LBB3_1: # %for.body
; X64-NEXT:    # =>This Inner Loop Header: Depth=1
; X64-NEXT:    movzbl -3(%rdi,%rax), %r8d
; X64-NEXT:    movzbl -3(%rsi,%rax), %ecx
; X64-NEXT:    addl %r8d, %ecx
; X64-NEXT:    movb %cl, -3(%rdx,%rax)
; X64-NEXT:    movzbl -2(%rdi,%rax), %r8d
; X64-NEXT:    movzbl -2(%rsi,%rax), %ecx
; X64-NEXT:    addl %r8d, %ecx
; X64-NEXT:    movb %cl, -2(%rdx,%rax)
; X64-NEXT:    movzbl -1(%rdi,%rax), %r8d
; X64-NEXT:    movzbl -1(%rsi,%rax), %ecx
; X64-NEXT:    addl %r8d, %ecx
; X64-NEXT:    movb %cl, -1(%rdx,%rax)
; X64-NEXT:    movzbl (%rdi,%rax), %r8d
; X64-NEXT:    movzbl (%rsi,%rax), %ecx
; X64-NEXT:    addl %r8d, %ecx
; X64-NEXT:    movb %cl, (%rdx,%rax)
; X64-NEXT:    addq $4, %rax
; X64-NEXT:    cmpl $403, %eax # imm = 0x193
; X64-NEXT:    jne .LBB3_1
; X64-NEXT:  # %bb.2: # %for.end
; X64-NEXT:    retq
;
; X32-LABEL: foldedidx:
; X32:       # %bb.0: # %entry
; X32-NEXT:    pushl %ebx
; X32-NEXT:    pushl %edi
; X32-NEXT:    pushl %esi
; X32-NEXT:    movl $3, %eax
; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
; X32-NEXT:    .p2align 4, 0x90
; X32-NEXT:  .LBB3_1: # %for.body
; X32-NEXT:    # =>This Inner Loop Header: Depth=1
; X32-NEXT:    movzbl -3(%esi,%eax), %edi
; X32-NEXT:    movzbl -3(%edx,%eax), %ebx
; X32-NEXT:    addl %edi, %ebx
; X32-NEXT:    movb %bl, -3(%ecx,%eax)
; X32-NEXT:    movzbl -2(%esi,%eax), %edi
; X32-NEXT:    movzbl -2(%edx,%eax), %ebx
; X32-NEXT:    addl %edi, %ebx
; X32-NEXT:    movb %bl, -2(%ecx,%eax)
; X32-NEXT:    movzbl -1(%esi,%eax), %edi
; X32-NEXT:    movzbl -1(%edx,%eax), %ebx
; X32-NEXT:    addl %edi, %ebx
; X32-NEXT:    movb %bl, -1(%ecx,%eax)
; X32-NEXT:    movzbl (%esi,%eax), %edi
; X32-NEXT:    movzbl (%edx,%eax), %ebx
; X32-NEXT:    addl %edi, %ebx
; X32-NEXT:    movb %bl, (%ecx,%eax)
; X32-NEXT:    addl $4, %eax
; X32-NEXT:    cmpl $403, %eax # imm = 0x193
; X32-NEXT:    jne .LBB3_1
; X32-NEXT:  # %bb.2: # %for.end
; X32-NEXT:    popl %esi
; X32-NEXT:    popl %edi
; X32-NEXT:    popl %ebx
; X32-NEXT:    retl
entry:
  br label %for.body

for.body:                                         ; preds = %for.body, %entry
  %i.07 = phi i32 [ 0, %entry ], [ %inc.3, %for.body ]
  %arrayidx = getelementptr inbounds i8, i8* %a, i32 %i.07
  %0 = load i8, i8* %arrayidx, align 1
  %conv5 = zext i8 %0 to i32
  %arrayidx1 = getelementptr inbounds i8, i8* %b, i32 %i.07
  %1 = load i8, i8* %arrayidx1, align 1
  %conv26 = zext i8 %1 to i32
  %add = add nsw i32 %conv26, %conv5
  %conv3 = trunc i32 %add to i8
  %arrayidx4 = getelementptr inbounds i8, i8* %c, i32 %i.07
  store i8 %conv3, i8* %arrayidx4, align 1
  %inc1 = or i32 %i.07, 1
  %arrayidx.1 = getelementptr inbounds i8, i8* %a, i32 %inc1
  %2 = load i8, i8* %arrayidx.1, align 1
  %conv5.1 = zext i8 %2 to i32
  %arrayidx1.1 = getelementptr inbounds i8, i8* %b, i32 %inc1
  %3 = load i8, i8* %arrayidx1.1, align 1
  %conv26.1 = zext i8 %3 to i32
  %add.1 = add nsw i32 %conv26.1, %conv5.1
  %conv3.1 = trunc i32 %add.1 to i8
  %arrayidx4.1 = getelementptr inbounds i8, i8* %c, i32 %inc1
  store i8 %conv3.1, i8* %arrayidx4.1, align 1
  %inc.12 = or i32 %i.07, 2
  %arrayidx.2 = getelementptr inbounds i8, i8* %a, i32 %inc.12
  %4 = load i8, i8* %arrayidx.2, align 1
  %conv5.2 = zext i8 %4 to i32
  %arrayidx1.2 = getelementptr inbounds i8, i8* %b, i32 %inc.12
  %5 = load i8, i8* %arrayidx1.2, align 1
  %conv26.2 = zext i8 %5 to i32
  %add.2 = add nsw i32 %conv26.2, %conv5.2
  %conv3.2 = trunc i32 %add.2 to i8
  %arrayidx4.2 = getelementptr inbounds i8, i8* %c, i32 %inc.12
  store i8 %conv3.2, i8* %arrayidx4.2, align 1
  %inc.23 = or i32 %i.07, 3
  %arrayidx.3 = getelementptr inbounds i8, i8* %a, i32 %inc.23
  %6 = load i8, i8* %arrayidx.3, align 1
  %conv5.3 = zext i8 %6 to i32
  %arrayidx1.3 = getelementptr inbounds i8, i8* %b, i32 %inc.23
  %7 = load i8, i8* %arrayidx1.3, align 1
  %conv26.3 = zext i8 %7 to i32
  %add.3 = add nsw i32 %conv26.3, %conv5.3
  %conv3.3 = trunc i32 %add.3 to i8
  %arrayidx4.3 = getelementptr inbounds i8, i8* %c, i32 %inc.23
  store i8 %conv3.3, i8* %arrayidx4.3, align 1
  %inc.3 = add nsw i32 %i.07, 4
  %exitcond.3 = icmp eq i32 %inc.3, 400
  br i1 %exitcond.3, label %for.end, label %for.body

for.end:                                          ; preds = %for.body
  ret void
}

; @multioper tests instructions with multiple IV user operands. We
; should be able to chain them independent of each other.

define void @multioper(i32* %a, i32 %n) nounwind {
; X64-LABEL: multioper:
; X64:       # %bb.0: # %entry
; X64-NEXT:    xorl %eax, %eax
; X64-NEXT:    .p2align 4, 0x90
; X64-NEXT:  .LBB4_1: # %for.body
; X64-NEXT:    # =>This Inner Loop Header: Depth=1
; X64-NEXT:    movl %eax, (%rdi,%rax,4)
; X64-NEXT:    leal 1(%rax), %ecx
; X64-NEXT:    movl %ecx, 4(%rdi,%rax,4)
; X64-NEXT:    leal 2(%rax), %ecx
; X64-NEXT:    movl %ecx, 8(%rdi,%rax,4)
; X64-NEXT:    leal 3(%rax), %ecx
; X64-NEXT:    movl %ecx, 12(%rdi,%rax,4)
; X64-NEXT:    addq $4, %rax
; X64-NEXT:    cmpl %esi, %eax
; X64-NEXT:    jl .LBB4_1
; X64-NEXT:  # %bb.2: # %exit
; X64-NEXT:    retq
;
; X32-LABEL: multioper:
; X32:       # %bb.0: # %entry
; X32-NEXT:    pushl %esi
; X32-NEXT:    xorl %eax, %eax
; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
; X32-NEXT:    .p2align 4, 0x90
; X32-NEXT:  .LBB4_1: # %for.body
; X32-NEXT:    # =>This Inner Loop Header: Depth=1
; X32-NEXT:    movl %eax, (%edx,%eax,4)
; X32-NEXT:    leal 1(%eax), %esi
; X32-NEXT:    movl %esi, 4(%edx,%eax,4)
; X32-NEXT:    leal 2(%eax), %esi
; X32-NEXT:    movl %esi, 8(%edx,%eax,4)
; X32-NEXT:    leal 3(%eax), %esi
; X32-NEXT:    movl %esi, 12(%edx,%eax,4)
; X32-NEXT:    addl $4, %eax
; X32-NEXT:    cmpl %ecx, %eax
; X32-NEXT:    jl .LBB4_1
; X32-NEXT:  # %bb.2: # %exit
; X32-NEXT:    popl %esi
; X32-NEXT:    retl
entry:
  br label %for.body

for.body:
  %p = phi i32* [ %p.next, %for.body ], [ %a, %entry ]
  %i = phi i32 [ %inc4, %for.body ], [ 0, %entry ]
  store i32 %i, i32* %p, align 4
  %inc1 = or i32 %i, 1
  %add.ptr.i1 = getelementptr inbounds i32, i32* %p, i32 1
  store i32 %inc1, i32* %add.ptr.i1, align 4
  %inc2 = add nsw i32 %i, 2
  %add.ptr.i2 = getelementptr inbounds i32, i32* %p, i32 2
  store i32 %inc2, i32* %add.ptr.i2, align 4
  %inc3 = add nsw i32 %i, 3
  %add.ptr.i3 = getelementptr inbounds i32, i32* %p, i32 3
  store i32 %inc3, i32* %add.ptr.i3, align 4
  %p.next = getelementptr inbounds i32, i32* %p, i32 4
  %inc4 = add nsw i32 %i, 4
  %cmp = icmp slt i32 %inc4, %n
  br i1 %cmp, label %for.body, label %exit

exit:
  ret void
}

; @testCmpZero has a ICmpZero LSR use that should not be hidden from
; LSR. Profitable chains should have more than one nonzero increment
; anyway.

define void @testCmpZero(i8* %src, i8* %dst, i32 %srcidx, i32 %dstidx, i32 %len) nounwind ssp {
; X64-LABEL: testCmpZero:
; X64:       # %bb.0: # %entry
; X64-NEXT:    movslq %edx, %rdx
; X64-NEXT:    addq %rdx, %rdi
; X64-NEXT:    movslq %ecx, %r9
; X64-NEXT:    addq %rsi, %r9
; X64-NEXT:    addl %edx, %r8d
; X64-NEXT:    movslq %r8d, %rcx
; X64-NEXT:    subq %rdx, %rcx
; X64-NEXT:    xorl %edx, %edx
; X64-NEXT:    .p2align 4, 0x90
; X64-NEXT:  .LBB5_1: # %for.body82.us
; X64-NEXT:    # =>This Inner Loop Header: Depth=1
; X64-NEXT:    movzbl (%r9,%rdx,4), %eax
; X64-NEXT:    movb %al, (%rdi,%rdx)
; X64-NEXT:    incq %rdx
; X64-NEXT:    cmpq %rdx, %rcx
; X64-NEXT:    jne .LBB5_1
; X64-NEXT:  # %bb.2: # %return
; X64-NEXT:    retq
;
; X32-LABEL: testCmpZero:
; X32:       # %bb.0: # %entry
; X32-NEXT:    pushl %ebx
; X32-NEXT:    pushl %esi
; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X32-NEXT:    addl {{[0-9]+}}(%esp), %ecx
; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
; X32-NEXT:    addl {{[0-9]+}}(%esp), %edx
; X32-NEXT:    xorl %esi, %esi
; X32-NEXT:    .p2align 4, 0x90
; X32-NEXT:  .LBB5_1: # %for.body82.us
; X32-NEXT:    # =>This Inner Loop Header: Depth=1
; X32-NEXT:    movzbl (%edx,%esi,4), %ebx
; X32-NEXT:    movb %bl, (%ecx,%esi)
; X32-NEXT:    incl %esi
; X32-NEXT:    cmpl %esi, %eax
; X32-NEXT:    jne .LBB5_1
; X32-NEXT:  # %bb.2: # %return
; X32-NEXT:    popl %esi
; X32-NEXT:    popl %ebx
; X32-NEXT:    retl
entry:
  %dest0 = getelementptr inbounds i8, i8* %src, i32 %srcidx
  %source0 = getelementptr inbounds i8, i8* %dst, i32 %dstidx
  %add.ptr79.us.sum = add i32 %srcidx, %len
  %lftr.limit = getelementptr i8, i8* %src, i32 %add.ptr79.us.sum
  br label %for.body82.us

for.body82.us:
  %dest = phi i8* [ %dest0, %entry ], [ %incdec.ptr91.us, %for.body82.us ]
  %source = phi i8* [ %source0, %entry ], [ %add.ptr83.us, %for.body82.us ]
  %0 = bitcast i8* %source to i32*
  %1 = load i32, i32* %0, align 4
  %trunc = trunc i32 %1 to i8
  %add.ptr83.us = getelementptr inbounds i8, i8* %source, i32 4
  %incdec.ptr91.us = getelementptr inbounds i8, i8* %dest, i32 1
  store i8 %trunc, i8* %dest, align 1
  %exitcond = icmp eq i8* %incdec.ptr91.us, %lftr.limit
  br i1 %exitcond, label %return, label %for.body82.us

return:
  ret void
}
