xref: /llvm-project/llvm/test/CodeGen/X86/machine-loops.ll (revision 79d0de2ac37b6b7d66720611935d1dd7fc4fbd43)
1; RUN: llc -mtriple=x86_64-linux-gnu -stop-after=x86-isel %s -o - | llc --passes='print<machine-loops>' -x mir -o - 2>&1 | FileCheck %s
2
3; Function Attrs: noinline nounwind optnone ssp uwtable
4define i32 @foo(i32 noundef %0) #0 {
5  %2 = alloca i32, align 4
6  %3 = alloca i32, align 4
7  %4 = alloca i32, align 4
8  store i32 %0, ptr %2, align 4
9  store i32 0, ptr %3, align 4
10  store i32 0, ptr %4, align 4
11  br label %5
12
135:                                                ; preds = %13, %1
14  %6 = load i32, ptr %4, align 4
15  %7 = load i32, ptr %2, align 4
16  %8 = icmp ne i32 %6, %7
17  br i1 %8, label %9, label %16
18
199:                                                ; preds = %5
20  %10 = load i32, ptr %4, align 4
21  %11 = load i32, ptr %3, align 4
22  %12 = add nsw i32 %11, %10
23  store i32 %12, ptr %3, align 4
24  br label %13
25
2613:                                               ; preds = %9
27  %14 = load i32, ptr %4, align 4
28  %15 = add nsw i32 %14, 1
29  store i32 %15, ptr %4, align 4
30  br label %5, !llvm.loop !1
31
3216:                                               ; preds = %5
33  %17 = load i32, ptr %3, align 4
34  %18 = load i32, ptr %2, align 4
35  %19 = add nsw i32 %17, %18
36  ret i32 %19
37}
38
39!0 = distinct !{!0, !1}
40!1 = !{!"llvm.loop.mustprogress"}
41
42; CHECK: Machine loop info for machine function 'foo':
43; CHECK: Loop at depth 1 containing: %bb.1<header><exiting>,%bb.2,%bb.3<latch>
44