1; RUN: opt -mtriple=thumbv8.1m.main -mattr=+mve.fp -passes=loop-unroll -S < %s | FileCheck %s 2 3; CHECK-LABEL: foo 4; CHECK: 5: 5; CHECK: 6: ; preds = %6, %5 6; CHECK: 15: ; preds = %6 7; CHECK: br label %16 8; CHECK: 16: ; preds = %15, %3 9; CHECK: ret void 10; CHECK: } 11 12define void @foo(ptr nocapture, ptr nocapture readonly, i32) { 13 %4 = icmp sgt i32 %2, 0 14 br i1 %4, label %5, label %16 15 16; <label>:5: 17 br label %6 18 19; <label>:6: 20 %7 = phi i32 [ %13, %6 ], [ %2, %5 ] 21 %8 = phi ptr [ %10, %6 ], [ %1, %5 ] 22 %9 = phi ptr [ %12, %6 ], [ %0, %5 ] 23 %10 = getelementptr inbounds i8, ptr %8, i32 1 24 %11 = load i8, ptr %8, align 1 25 %12 = getelementptr inbounds i8, ptr %9, i32 1 26 store i8 %11, ptr %9, align 1 27 28 %13 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %7, i32 1) 29 30 %14 = icmp sgt i32 %7, 1 31 br i1 %14, label %6, label %15 32 33; <label>:15: 34 br label %16 35 36; <label>:16: 37 ret void 38} 39 40declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32) 41