|  | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | 
|  | ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown < %s  | \ | 
|  | ; RUN:   FileCheck %s --implicit-check-not=mtctr --implicit-check-not=bdnz | 
|  | $test = comdat any | 
|  |  | 
|  | ; No CTR loop due to frem (since it is always a call). | 
|  | define void @test() nounwind comdat { | 
|  | ; CHECK-LABEL: test: | 
|  | ; CHECK:       # %bb.0: | 
|  | ; CHECK-NEXT:    mflr 0 | 
|  | ; CHECK-NEXT:    std 29, -24(1) # 8-byte Folded Spill | 
|  | ; CHECK-NEXT:    std 30, -16(1) # 8-byte Folded Spill | 
|  | ; CHECK-NEXT:    stdu 1, -64(1) | 
|  | ; CHECK-NEXT:    std 0, 80(1) | 
|  | ; CHECK-NEXT:    li 4, 0 | 
|  | ; CHECK-NEXT:    ld 3, 0(3) | 
|  | ; CHECK-NEXT:    ld 30, 32(1) | 
|  | ; CHECK-NEXT:    subc 3, 3, 30 | 
|  | ; CHECK-NEXT:    addze. 4, 4 | 
|  | ; CHECK-NEXT:    iseleq 3, 0, 3 | 
|  | ; CHECK-NEXT:    addi 29, 3, 1 | 
|  | ; CHECK-NEXT:    .p2align 4 | 
|  | ; CHECK-NEXT:  .LBB0_1: # %forcond | 
|  | ; CHECK-NEXT:    # | 
|  | ; CHECK-NEXT:    addi 29, 29, -1 | 
|  | ; CHECK-NEXT:    cmpldi 29, 0 | 
|  | ; CHECK-NEXT:    bc 4, 1, .LBB0_3 | 
|  | ; CHECK-NEXT:  # %bb.2: # %bounds.ok | 
|  | ; CHECK-NEXT:    # | 
|  | ; CHECK-NEXT:    lfs 2, 0(3) | 
|  | ; CHECK-NEXT:    xxlxor 1, 1, 1 | 
|  | ; CHECK-NEXT:    bl fmodf | 
|  | ; CHECK-NEXT:    nop | 
|  | ; CHECK-NEXT:    stfs 1, 0(3) | 
|  | ; CHECK-NEXT:    addi 30, 30, 1 | 
|  | ; CHECK-NEXT:    b .LBB0_1 | 
|  | ; CHECK-NEXT:  .LBB0_3: # %bounds.fail | 
|  | ; CHECK-NEXT:    std 30, 32(1) | 
|  | %pos = alloca i64, align 8 | 
|  | br label %forcond | 
|  |  | 
|  | forcond:                                          ; preds = %bounds.ok, %0 | 
|  | %1 = load i64, ptr %pos | 
|  | %.len1 = load i64, ptr undef | 
|  | %bounds.cmp = icmp ult i64 %1, %.len1 | 
|  | br i1 %bounds.cmp, label %bounds.ok, label %bounds.fail | 
|  |  | 
|  | bounds.ok:                                        ; preds = %forcond | 
|  | %2 = load float, ptr undef | 
|  | %3 = frem float 0.000000e+00, %2 | 
|  | store float %3, ptr undef | 
|  | %4 = load i64, ptr %pos | 
|  | %5 = add i64 %4, 1 | 
|  | store i64 %5, ptr %pos | 
|  | br label %forcond | 
|  |  | 
|  | bounds.fail:                                      ; preds = %forcond | 
|  | unreachable | 
|  | } | 
|  |  |