xref: /llvm-project/llvm/test/Transforms/JumpThreading/threading_prof1.ll (revision a1b78fb929fccf96acaa0212cf68fee82298e747)
1; RUN: opt -passes=jump-threading -S < %s | FileCheck %s
2
3define void @test() {
4; CHECK-LABEL: @test()
5bb:
6  %tmp = call i32 @a()
7  %tmp1 = icmp eq i32 %tmp, 1
8  br i1 %tmp1, label %bb5, label %bb2
9; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]]
10
11bb2:                                              ; preds = %bb
12  %tmp3 = call i32 @b()
13  %tmp4 = icmp ne i32 %tmp3, 1
14  br label %bb5
15; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]]
16
17bb5:                                              ; preds = %bb2, %bb
18  %tmp6 = phi i1 [ false, %bb ], [ %tmp4, %bb2 ]
19  br i1 %tmp6, label %bb8, label %bb7, !prof !0
20
21bb7:                                              ; preds = %bb5
22  call void @bar()
23  br label %bb8
24
25bb8:                                              ; preds = %bb7, %bb5
26  ret void
27}
28
29define void @test_single_pred1() {
30; CHECK-LABEL: @test_single_pred1()
31bb:
32  %tmp = call i32 @a()
33  %tmp1 = icmp eq i32 %tmp, 1
34  br i1 %tmp1, label %bb5_1, label %bb2
35; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]]
36
37bb5_1:
38  br label %bb5;
39
40bb2:
41  %tmp3 = call i32 @b()
42  %tmp4 = icmp ne i32 %tmp3, 1
43  br label %bb5
44; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]]
45
46bb5:
47  %tmp6 = phi i1 [ false, %bb5_1 ], [ %tmp4, %bb2 ]
48  br i1 %tmp6, label %bb8, label %bb7, !prof !0
49
50bb7:
51  call void @bar()
52  br label %bb8
53
54bb8:
55  ret void
56}
57
58define void @test_single_pred2() {
59; CHECK-LABEL: @test_single_pred2()
60bb:
61  %tmp = call i32 @a()
62  %tmp1 = icmp eq i32 %tmp, 1
63  br i1 %tmp1, label %bb5_1, label %bb2
64; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]]
65
66bb5_1:
67  br label %bb5_2;
68
69bb5_2:
70  br label %bb5;
71
72bb2:
73  %tmp3 = call i32 @b()
74  %tmp4 = icmp ne i32 %tmp3, 1
75  br label %bb5
76; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]]
77
78bb5:
79  %tmp6 = phi i1 [ false, %bb5_2 ], [ %tmp4, %bb2 ]
80  br i1 %tmp6, label %bb8, label %bb7, !prof !0
81
82bb7:
83  call void @bar()
84  br label %bb8
85
86bb8:
87  ret void
88}
89
90declare void @bar()
91
92declare i32 @a()
93
94declare i32 @b()
95
96!0 = !{!"branch_weights", i32 2146410443, i32 1073205}
97;CHECK: ![[PROF1]] = !{!"branch_weights", i32 1073205, i32 2146410443}
98;CHECK: ![[PROF2]] = !{!"branch_weights", i32 -2147483648, i32 0}
99