|  | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | 
|  | ; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu -verify-machineinstrs\ | 
|  | ; RUN:       -mcpu=pwr9 --ppc-enable-pipeliner 2>&1 | FileCheck %s | 
|  |  | 
|  | @.str.28 = external unnamed_addr constant [69 x i8], align 1 | 
|  |  | 
|  | define void @print_res(ptr %p) nounwind { | 
|  | ; CHECK-LABEL: print_res: | 
|  | ; CHECK:       # %bb.0: | 
|  | ; CHECK-NEXT:    lwz 4, 0(3) | 
|  | ; CHECK-NEXT:    addi 4, 4, -1 | 
|  | ; CHECK-NEXT:    clrldi 5, 4, 32 | 
|  | ; CHECK-NEXT:    cmplwi 4, 3 | 
|  | ; CHECK-NEXT:    li 4, 3 | 
|  | ; CHECK-NEXT:    isellt 4, 5, 4 | 
|  | ; CHECK-NEXT:    li 5, 1 | 
|  | ; CHECK-NEXT:    cmpldi 4, 1 | 
|  | ; CHECK-NEXT:    iselgt 4, 4, 5 | 
|  | ; CHECK-NEXT:    li 5, 0 | 
|  | ; CHECK-NEXT:    mtctr 4 | 
|  | ; CHECK-NEXT:    li 8, -1 | 
|  | ; CHECK-NEXT:    lbz 6, 0(3) | 
|  | ; CHECK-NEXT:    li 4, 1 | 
|  | ; CHECK-NEXT:    bdz .LBB0_6 | 
|  | ; CHECK-NEXT:  # %bb.1: | 
|  | ; CHECK-NEXT:    xori 7, 6, 84 | 
|  | ; CHECK-NEXT:    clrldi 6, 8, 32 | 
|  | ; CHECK-NEXT:    addi 4, 4, 1 | 
|  | ; CHECK-NEXT:    addi 9, 8, -1 | 
|  | ; CHECK-NEXT:    lbzx 6, 3, 6 | 
|  | ; CHECK-NEXT:    bdz .LBB0_5 | 
|  | ; CHECK-NEXT:  # %bb.2: | 
|  | ; CHECK-NEXT:    cntlzw 7, 7 | 
|  | ; CHECK-NEXT:    addi 4, 4, 1 | 
|  | ; CHECK-NEXT:    srwi 8, 7, 5 | 
|  | ; CHECK-NEXT:    xori 7, 6, 84 | 
|  | ; CHECK-NEXT:    clrldi 6, 9, 32 | 
|  | ; CHECK-NEXT:    addi 9, 9, -1 | 
|  | ; CHECK-NEXT:    lbzx 6, 3, 6 | 
|  | ; CHECK-NEXT:    bdz .LBB0_4 | 
|  | ; CHECK-NEXT:    .p2align 4 | 
|  | ; CHECK-NEXT:  .LBB0_3: | 
|  | ; CHECK-NEXT:    clrldi 11, 9, 32 | 
|  | ; CHECK-NEXT:    cntlzw 10, 7 | 
|  | ; CHECK-NEXT:    xori 7, 6, 84 | 
|  | ; CHECK-NEXT:    addi 9, 9, -1 | 
|  | ; CHECK-NEXT:    lbzx 6, 3, 11 | 
|  | ; CHECK-NEXT:    addi 4, 4, 1 | 
|  | ; CHECK-NEXT:    add 5, 5, 8 | 
|  | ; CHECK-NEXT:    srwi 8, 10, 5 | 
|  | ; CHECK-NEXT:    bdnz .LBB0_3 | 
|  | ; CHECK-NEXT:  .LBB0_4: | 
|  | ; CHECK-NEXT:    add 5, 5, 8 | 
|  | ; CHECK-NEXT:  .LBB0_5: | 
|  | ; CHECK-NEXT:    cntlzw 3, 7 | 
|  | ; CHECK-NEXT:    srwi 3, 3, 5 | 
|  | ; CHECK-NEXT:    add 5, 5, 3 | 
|  | ; CHECK-NEXT:  .LBB0_6: | 
|  | ; CHECK-NEXT:    xori 3, 6, 84 | 
|  | ; CHECK-NEXT:    mflr 0 | 
|  | ; CHECK-NEXT:    cntlzw 3, 3 | 
|  | ; CHECK-NEXT:    srwi 3, 3, 5 | 
|  | ; CHECK-NEXT:    add 3, 5, 3 | 
|  | ; CHECK-NEXT:    stdu 1, -128(1) | 
|  | ; CHECK-NEXT:    clrldi 6, 3, 32 | 
|  | ; CHECK-NEXT:    addis 3, 2, .LC0@toc@ha | 
|  | ; CHECK-NEXT:    li 5, 0 | 
|  | ; CHECK-NEXT:    std 0, 144(1) | 
|  | ; CHECK-NEXT:    ld 3, .LC0@toc@l(3) | 
|  | ; CHECK-NEXT:    std 5, 120(1) | 
|  | ; CHECK-NEXT:    li 5, 3 | 
|  | ; CHECK-NEXT:    clrldi 4, 4, 32 | 
|  | ; CHECK-NEXT:    std 4, 104(1) | 
|  | ; CHECK-NEXT:    li 4, 3 | 
|  | ; CHECK-NEXT:    li 7, 0 | 
|  | ; CHECK-NEXT:    li 8, 3 | 
|  | ; CHECK-NEXT:    li 10, 0 | 
|  | ; CHECK-NEXT:    std 5, 96(1) | 
|  | ; CHECK-NEXT:    li 5, 0 | 
|  | ; CHECK-NEXT:    bl printf | 
|  | ; CHECK-NEXT:    nop | 
|  | %1 = load i32, ptr undef, align 4 | 
|  | %2 = add i32 %1, -1 | 
|  | %3 = zext i32 %2 to i64 | 
|  | %4 = zext i32 3 to i64 | 
|  | br label %5 | 
|  |  | 
|  | 5:                                                ; preds = %5, %0 | 
|  | %6 = phi i64 [ %16, %5 ], [ 0, %0 ] | 
|  | %7 = phi i32 [ %15, %5 ], [ 0, %0 ] | 
|  | %8 = trunc i64 %6 to i32 | 
|  | %9 = sub i32 0, %8 | 
|  | %10 = zext i32 %9 to i64 | 
|  | %11 = getelementptr inbounds i8, ptr %p, i64 %10 | 
|  | %12 = load i8, ptr %11, align 1 | 
|  | %13 = icmp eq i8 %12, 84 | 
|  | %14 = zext i1 %13 to i32 | 
|  | %15 = add i32 %7, %14 | 
|  | %16 = add nuw nsw i64 %6, 1 | 
|  | %17 = icmp ult i64 %16, %3 | 
|  | %18 = icmp ult i64 %16, %4 | 
|  | %19 = and i1 %18, %17 | 
|  | br i1 %19, label %5, label %20 | 
|  |  | 
|  | 20:                                               ; preds = %5 | 
|  | %21 = trunc i64 %16 to i32 | 
|  | call void (ptr, ...) @printf(ptr @.str.28, i32 zeroext 3, i32 zeroext undef, i32 zeroext %15, i32 zeroext undef, i32 zeroext 3, ptr undef, i32 zeroext undef, i32 zeroext 3, i32 zeroext %21, ptr undef, i32 zeroext undef) #1 | 
|  | unreachable | 
|  | } | 
|  |  | 
|  | declare void @printf(ptr, ...) local_unnamed_addr #0 |