; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; FIXME: Fix machine verifier issues and remove -verify-machineinstrs=0. PR39440.
; RUN: llc %s -O2 -mtriple=i386-unknown-linux-gnu -o - -verify-machineinstrs=0 | FileCheck %s
@.str = external dso_local unnamed_addr constant [6 x i8], align 1
@a = external dso_local local_unnamed_addr global i32, align 4
@h = external dso_local local_unnamed_addr global i32, align 4
@g = external dso_local local_unnamed_addr global i8, align 1

define dso_local void @fn() {
; CHECK-LABEL: fn:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    pushl %ebp
; CHECK-NEXT:    .cfi_def_cfa_offset 8
; CHECK-NEXT:    pushl %ebx
; CHECK-NEXT:    .cfi_def_cfa_offset 12
; CHECK-NEXT:    pushl %edi
; CHECK-NEXT:    .cfi_def_cfa_offset 16
; CHECK-NEXT:    pushl %esi
; CHECK-NEXT:    .cfi_def_cfa_offset 20
; CHECK-NEXT:    subl $28, %esp
; CHECK-NEXT:    .cfi_def_cfa_offset 48
; CHECK-NEXT:    .cfi_offset %esi, -20
; CHECK-NEXT:    .cfi_offset %edi, -16
; CHECK-NEXT:    .cfi_offset %ebx, -12
; CHECK-NEXT:    .cfi_offset %ebp, -8
; CHECK-NEXT:    xorl %ebx, %ebx
; CHECK-NEXT:    # implicit-def: $ecx
; CHECK-NEXT:    # implicit-def: $edi
; CHECK-NEXT:    # implicit-def: $al
; CHECK-NEXT:    # kill: killed $al
; CHECK-NEXT:    # implicit-def: $dl
; CHECK-NEXT:    # implicit-def: $ebp
; CHECK-NEXT:    jmp .LBB0_1
; CHECK-NEXT:    .p2align 4, 0x90
; CHECK-NEXT:  .LBB0_16: # %for.inc
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    movb %dl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
; CHECK-NEXT:    movb %dh, %dl
; CHECK-NEXT:  .LBB0_1: # %for.cond
; CHECK-NEXT:    # =>This Loop Header: Depth=1
; CHECK-NEXT:    # Child Loop BB0_20 Depth 2
; CHECK-NEXT:    cmpb $8, %dl
; CHECK-NEXT:    movb %dl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
; CHECK-NEXT:    ja .LBB0_3
; CHECK-NEXT:  # %bb.2: # %for.cond
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    testb %bl, %bl
; CHECK-NEXT:    je .LBB0_3
; CHECK-NEXT:  # %bb.4: # %if.end
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    movl %ecx, %eax
; CHECK-NEXT:    cltd
; CHECK-NEXT:    idivl a
; CHECK-NEXT:    movb {{[-0-9]+}}(%e{{[sb]}}p), %dl # 1-byte Reload
; CHECK-NEXT:    movb %cl, %dh
; CHECK-NEXT:    movl $0, h
; CHECK-NEXT:    cmpb $8, %dl
; CHECK-NEXT:    jg .LBB0_8
; CHECK-NEXT:  # %bb.5: # %if.then13
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    movl %eax, %esi
; CHECK-NEXT:    movl $.str, (%esp)
; CHECK-NEXT:    movb %dh, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
; CHECK-NEXT:    calll printf
; CHECK-NEXT:    movb {{[-0-9]+}}(%e{{[sb]}}p), %dh # 1-byte Reload
; CHECK-NEXT:    testb %bl, %bl
; CHECK-NEXT:    movl %esi, %ecx
; CHECK-NEXT:    # implicit-def: $eax
; CHECK-NEXT:    movb {{[-0-9]+}}(%e{{[sb]}}p), %dl # 1-byte Reload
; CHECK-NEXT:    movb %dl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
; CHECK-NEXT:    movb %dh, %dl
; CHECK-NEXT:    jne .LBB0_16
; CHECK-NEXT:    .p2align 4, 0x90
; CHECK-NEXT:  # %bb.6: # %for.cond35
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    testl %edi, %edi
; CHECK-NEXT:    je .LBB0_7
; CHECK-NEXT:  .LBB0_11: # %af
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    testb %bl, %bl
; CHECK-NEXT:    jne .LBB0_12
; CHECK-NEXT:  .LBB0_17: # %if.end39
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    testl %eax, %eax
; CHECK-NEXT:    je .LBB0_19
; CHECK-NEXT:  # %bb.18: # %if.then41
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    movl $0, {{[0-9]+}}(%esp)
; CHECK-NEXT:    movl $fn, {{[0-9]+}}(%esp)
; CHECK-NEXT:    movl $.str, (%esp)
; CHECK-NEXT:    calll printf
; CHECK-NEXT:  .LBB0_19: # %for.end46
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    # implicit-def: $dl
; CHECK-NEXT:    # implicit-def: $dh
; CHECK-NEXT:    # implicit-def: $ebp
; CHECK-NEXT:    jmp .LBB0_20
; CHECK-NEXT:    .p2align 4, 0x90
; CHECK-NEXT:  .LBB0_3: # %if.then
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    movl $.str, (%esp)
; CHECK-NEXT:    calll printf
; CHECK-NEXT:    movb {{[-0-9]+}}(%e{{[sb]}}p), %dl # 1-byte Reload
; CHECK-NEXT:    # implicit-def: $eax
; CHECK-NEXT:    testl %edi, %edi
; CHECK-NEXT:    jne .LBB0_11
; CHECK-NEXT:    jmp .LBB0_7
; CHECK-NEXT:    .p2align 4, 0x90
; CHECK-NEXT:  .LBB0_8: # %if.end21
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    # implicit-def: $ebp
; CHECK-NEXT:    testb %bl, %bl
; CHECK-NEXT:    je .LBB0_13
; CHECK-NEXT:    jmp .LBB0_10
; CHECK-NEXT:    .p2align 4, 0x90
; CHECK-NEXT:  .LBB0_7: # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    xorl %edi, %edi
; CHECK-NEXT:    movb %dl, %dh
; CHECK-NEXT:    movb {{[-0-9]+}}(%e{{[sb]}}p), %dl # 1-byte Reload
; CHECK-NEXT:    .p2align 4, 0x90
; CHECK-NEXT:  .LBB0_20: # %for.cond47
; CHECK-NEXT:    # Parent Loop BB0_1 Depth=1
; CHECK-NEXT:    # => This Inner Loop Header: Depth=2
; CHECK-NEXT:    testb %bl, %bl
; CHECK-NEXT:    jne .LBB0_20
; CHECK-NEXT:  # %bb.21: # %for.cond47
; CHECK-NEXT:    # in Loop: Header=BB0_20 Depth=2
; CHECK-NEXT:    testb %bl, %bl
; CHECK-NEXT:    jne .LBB0_20
; CHECK-NEXT:  # %bb.9: # %ae
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    testb %bl, %bl
; CHECK-NEXT:    jne .LBB0_10
; CHECK-NEXT:  .LBB0_13: # %if.end26
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    xorl %ecx, %ecx
; CHECK-NEXT:    testb %dl, %dl
; CHECK-NEXT:    je .LBB0_16
; CHECK-NEXT:  # %bb.14: # %if.end26
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    testl %ebp, %ebp
; CHECK-NEXT:    jne .LBB0_16
; CHECK-NEXT:  # %bb.15: # %if.then31
; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    xorl %ecx, %ecx
; CHECK-NEXT:    xorl %ebp, %ebp
; CHECK-NEXT:    jmp .LBB0_16
; CHECK-NEXT:    .p2align 4, 0x90
; CHECK-NEXT:  .LBB0_10: # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    # implicit-def: $eax
; CHECK-NEXT:    testb %bl, %bl
; CHECK-NEXT:    je .LBB0_17
; CHECK-NEXT:  .LBB0_12: # in Loop: Header=BB0_1 Depth=1
; CHECK-NEXT:    # implicit-def: $edi
; CHECK-NEXT:    # implicit-def: $cl
; CHECK-NEXT:    # kill: killed $cl
; CHECK-NEXT:    # implicit-def: $dl
; CHECK-NEXT:    # implicit-def: $ebp
; CHECK-NEXT:    testl %edi, %edi
; CHECK-NEXT:    jne .LBB0_11
; CHECK-NEXT:    jmp .LBB0_7
entry:
  br label %for.cond

for.cond:                                         ; preds = %for.inc, %entry
  %l.0 = phi i16 [ undef, %entry ], [ 0, %for.inc ]
  %m.0 = phi i32 [ undef, %entry ], [ %m.2, %for.inc ]
  %i.0 = phi i32 [ undef, %entry ], [ %i.2, %for.inc ]
  %p.0 = phi i8 [ undef, %entry ], [ %p.2, %for.inc ]
  %k.0 = phi i8 [ undef, %entry ], [ %k.2, %for.inc ]
  %q.0 = phi i32 [ undef, %entry ], [ %q.2, %for.inc ]
  %cmp = icmp ugt i8 %k.0, 8
  %or.cond61 = or i1 %cmp, undef
  br i1 %or.cond61, label %if.then, label %if.end

if.then:                                          ; preds = %for.cond
  tail call void (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), i64 undef)
  br label %for.cond35

if.end:                                           ; preds = %for.cond
  %0 = load i32, i32* @a, align 4
  %div = sdiv i32 %m.0, %0
  br label %ac

ac:                                               ; preds = %ac, %if.end
  br i1 undef, label %if.end9, label %ac

if.end9:                                          ; preds = %ac
  %conv3 = trunc i32 %m.0 to i8
  %conv5 = sext i16 %l.0 to i32
  store i32 %conv5, i32* @h, align 4
  %cmp11 = icmp slt i8 %k.0, 9
  br i1 %cmp11, label %if.then13, label %if.end21

if.then13:                                        ; preds = %if.end9
  tail call void (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), i64 undef)
  br i1 undef, label %for.inc, label %for.cond35

if.end21:                                         ; preds = %if.end9
  %1 = load i8, i8* @g, align 1
  br label %ae

ae:                                               ; preds = %for.cond47, %if.end21
  %l.2 = phi i16 [ undef, %if.end21 ], [ 0, %for.cond47 ]
  %i.1 = phi i32 [ %i.0, %if.end21 ], [ %i.5, %for.cond47 ]
  %p.1 = phi i8 [ %k.0, %if.end21 ], [ %p.6, %for.cond47 ]
  %k.1 = phi i8 [ %conv3, %if.end21 ], [ %k.6, %for.cond47 ]
  %q.1 = phi i32 [ undef, %if.end21 ], [ %q.5, %for.cond47 ]
  br i1 undef, label %if.end26, label %af

if.end26:                                         ; preds = %ae
  %tobool27 = icmp eq i32 %q.1, 0
  %tobool30 = icmp ne i8 %p.1, 0
  %or.cond = and i1 %tobool30, %tobool27
  br i1 %or.cond, label %if.then31, label %for.inc

if.then31:                                        ; preds = %if.end26
  br label %for.inc

for.inc:                                          ; preds = %if.then31, %if.end26, %if.then13
  %m.2 = phi i32 [ 0, %if.then31 ], [ 0, %if.end26 ], [ %div, %if.then13 ]
  %i.2 = phi i32 [ %i.1, %if.then31 ], [ %i.1, %if.end26 ], [ %i.0, %if.then13 ]
  %p.2 = phi i8 [ %p.1, %if.then31 ], [ %p.1, %if.end26 ], [ undef, %if.then13 ]
  %k.2 = phi i8 [ %k.1, %if.then31 ], [ %k.1, %if.end26 ], [ %conv3, %if.then13 ]
  %q.2 = phi i32 [ 0, %if.then31 ], [ %q.1, %if.end26 ], [ %q.0, %if.then13 ]
  %2 = load i32, i32* @h, align 4
  br label %for.cond

for.cond35:                                       ; preds = %for.inc44, %if.then13, %if.then
  %i.3 = phi i32 [ undef, %for.inc44 ], [ %i.0, %if.then ], [ %i.0, %if.then13 ]
  %o.2 = phi i32 [ %o.3, %for.inc44 ], [ undef, %if.then ], [ undef, %if.then13 ]
  %p.4 = phi i8 [ undef, %for.inc44 ], [ %p.0, %if.then ], [ %k.0, %if.then13 ]
  %k.4 = phi i8 [ undef, %for.inc44 ], [ %k.0, %if.then ], [ %conv3, %if.then13 ]
  %q.3 = phi i32 [ undef, %for.inc44 ], [ %q.0, %if.then ], [ %q.0, %if.then13 ]
  %tobool36 = icmp eq i32 %i.3, 0
  br i1 %tobool36, label %for.end46, label %af

af:                                               ; preds = %for.cond35, %ae
  %i.4 = phi i32 [ %i.3, %for.cond35 ], [ %i.1, %ae ]
  %o.3 = phi i32 [ %o.2, %for.cond35 ], [ undef, %ae ]
  br i1 undef, label %if.end39, label %for.inc44

if.end39:                                         ; preds = %af
  %tobool40 = icmp eq i32 %o.3, 0
  br i1 %tobool40, label %for.end46, label %if.then41

if.then41:                                        ; preds = %if.end39
  tail call void (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), i64 ptrtoint (void ()* @fn to i64))
  br label %for.end46

for.inc44:                                        ; preds = %af
  br label %for.cond35

for.end46:                                        ; preds = %if.then41, %if.end39, %for.cond35
  %i.5 = phi i32 [ %i.4, %if.then41 ], [ %i.4, %if.end39 ], [ 0, %for.cond35 ]
  %p.6 = phi i8 [ undef, %if.then41 ], [ undef, %if.end39 ], [ %p.4, %for.cond35 ]
  %k.6 = phi i8 [ undef, %if.then41 ], [ undef, %if.end39 ], [ %k.4, %for.cond35 ]
  %q.5 = phi i32 [ undef, %if.then41 ], [ undef, %if.end39 ], [ %q.3, %for.cond35 ]
  br label %for.cond47

for.cond47:                                       ; preds = %for.cond47, %for.end46
  %brmerge = or i1 false, undef
  br i1 %brmerge, label %for.cond47, label %ae
}

declare dso_local void @printf(i8* nocapture readonly, ...) local_unnamed_addr
