; RUN: opt -mtriple=thumbv8.1m.main -mattr=+mve.fp -loop-unroll -S < %s | FileCheck %s ; CHECK-LABEL: foo ; CHECK: 5: ; CHECK: 6: ; preds = %6, %5 ; CHECK: 15: ; preds = %6 ; CHECK: br label %16 ; CHECK: 16: ; preds = %15, %3 ; CHECK: ret void ; CHECK: } define void @foo(i8* nocapture, i8* nocapture readonly, i32) { %4 = icmp sgt i32 %2, 0 br i1 %4, label %5, label %16 ; <label>:5: br label %6 ; <label>:6: %7 = phi i32 [ %13, %6 ], [ %2, %5 ] %8 = phi i8* [ %10, %6 ], [ %1, %5 ] %9 = phi i8* [ %12, %6 ], [ %0, %5 ] %10 = getelementptr inbounds i8, i8* %8, i32 1 %11 = load i8, i8* %8, align 1 %12 = getelementptr inbounds i8, i8* %9, i32 1 store i8 %11, i8* %9, align 1 %13 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %7, i32 1) %14 = icmp sgt i32 %7, 1 br i1 %14, label %6, label %15 ; <label>:15: br label %16 ; <label>:16: ret void } declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)