[InstCombine] Signed saturation tests. NFC
[llvm-complete.git] / test / Transforms / JumpThreading / threading_prof1.ll
blob1bfd4509714e4deab2e0e987b70a3d56718944ce
1 ; RUN: opt -jump-threading -S < %s | FileCheck %s
2 ; RUN: opt -passes=jump-threading -S < %s | FileCheck %s
4 define void @test() {
5 ; CHECK-LABEL: @test()
6 bb:
7   %tmp = call i32 @a()
8   %tmp1 = icmp eq i32 %tmp, 1
9   br i1 %tmp1, label %bb5, label %bb2
10 ; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]]
12 bb2:                                              ; preds = %bb
13   %tmp3 = call i32 @b()
14   %tmp4 = icmp ne i32 %tmp3, 1
15   br label %bb5
16 ; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]]
18 bb5:                                              ; preds = %bb2, %bb
19   %tmp6 = phi i1 [ false, %bb ], [ %tmp4, %bb2 ]
20   br i1 %tmp6, label %bb8, label %bb7, !prof !0
22 bb7:                                              ; preds = %bb5
23   call void @bar()
24   br label %bb8
26 bb8:                                              ; preds = %bb7, %bb5
27   ret void
30 define void @test_single_pred1() {
31 ; CHECK-LABEL: @test_single_pred1()
32 bb:
33   %tmp = call i32 @a()
34   %tmp1 = icmp eq i32 %tmp, 1
35   br i1 %tmp1, label %bb5_1, label %bb2
36 ; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]]
38 bb5_1:                                             
39   br label %bb5;
41 bb2:                                              
42   %tmp3 = call i32 @b()
43   %tmp4 = icmp ne i32 %tmp3, 1
44   br label %bb5
45 ; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]]
47 bb5:                                             
48   %tmp6 = phi i1 [ false, %bb5_1 ], [ %tmp4, %bb2 ]
49   br i1 %tmp6, label %bb8, label %bb7, !prof !0
51 bb7:                                            
52   call void @bar()
53   br label %bb8
55 bb8:                                           
56   ret void
59 define void @test_single_pred2() {
60 ; CHECK-LABEL: @test_single_pred2()
61 bb:
62   %tmp = call i32 @a()
63   %tmp1 = icmp eq i32 %tmp, 1
64   br i1 %tmp1, label %bb5_1, label %bb2
65 ; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]]
67 bb5_1:                                             
68   br label %bb5_2;
70 bb5_2:                                             
71   br label %bb5;
73 bb2:                          
74   %tmp3 = call i32 @b()
75   %tmp4 = icmp ne i32 %tmp3, 1
76   br label %bb5
77 ; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]]
79 bb5:                         
80   %tmp6 = phi i1 [ false, %bb5_2 ], [ %tmp4, %bb2 ]
81   br i1 %tmp6, label %bb8, label %bb7, !prof !0
83 bb7:                        
84   call void @bar()
85   br label %bb8
87 bb8:                       
88   ret void
91 declare void @bar()
93 declare i32 @a()
95 declare i32 @b()
97 !0 = !{!"branch_weights", i32 2146410443, i32 1073205}
98 ;CHECK: ![[PROF1]] = !{!"branch_weights", i32 1073205, i32 2146410443}
99 ;CHECK: ![[PROF2]] = !{!"branch_weights", i32 2146410443, i32 1073205}