xref: /llvm-project/llvm/test/Analysis/BlockFrequencyInfo/precision.ll (revision e3cf80c5c1fe55efd8216575ccadea0ab087e79c)
1; RUN: opt < %s -disable-output -passes="print<block-freq>" 2>&1 | FileCheck %s
2; Sanity check precision for small-ish min/max spread.
3
4@g = global i32 0
5
6; CHECK-LABEL: block-frequency-info: func0
7; CHECK: - entry: float = 1.0, {{.*}}, count = 1000
8; CHECK: - cmp0_true: float = 0.4, {{.*}}, count = 400
9; CHECK: - cmp0_false: float = 0.6, {{.*}}, count = 600
10; CHECK: - cmp1_true: float = 0.1, {{.*}}, count = 100
11; CHECK: - cmp1_false: float = 0.3, {{.*}}, count = 300
12; CHECK: - join: float = 1.0, {{.*}}, count = 1000
13
14define void @func0(i32 %a0, i32 %a1) !prof !0 {
15entry:
16  %cmp0 = icmp ne i32 %a0, 0
17  br i1 %cmp0, label %cmp0_true, label %cmp0_false, !prof !1
18
19cmp0_true:
20  store volatile i32 1, ptr @g
21  %cmp1 = icmp ne i32 %a1, 0
22  br i1 %cmp1, label %cmp1_true, label %cmp1_false, !prof !2
23
24cmp0_false:
25  store volatile i32 2, ptr @g
26  br label %join
27
28cmp1_true:
29  store volatile i32 3, ptr @g
30  br label %join
31
32cmp1_false:
33  store volatile i32 4, ptr @g
34  br label %join
35
36join:
37  store volatile i32 5, ptr @g
38  ret void
39}
40
41!0 = !{!"function_entry_count", i64 1000}
42!1 = !{!"branch_weights", i32 400, i32 600}
43!2 = !{!"branch_weights", i32 1, i32 3}
44