xref: /aosp_15_r20/external/llvm/test/Transforms/JumpThreading/update-edge-weight.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt -S -jump-threading %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; Test if edge weights are properly updated after jump threading.
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; CHECK: !2 = !{!"branch_weights", i32 1629125526, i32 518358122}
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32 %n) !prof !0 {
8*9880d681SAndroid Build Coastguard Workerentry:
9*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sgt i32 %n, 10
10*9880d681SAndroid Build Coastguard Worker  br i1 %cmp, label %if.then.1, label %if.else.1, !prof !1
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerif.then.1:
13*9880d681SAndroid Build Coastguard Worker  tail call void @a()
14*9880d681SAndroid Build Coastguard Worker  br label %if.cond
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Workerif.else.1:
17*9880d681SAndroid Build Coastguard Worker  tail call void @b()
18*9880d681SAndroid Build Coastguard Worker  br label %if.cond
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerif.cond:
21*9880d681SAndroid Build Coastguard Worker  %cmp1 = icmp sgt i32 %n, 5
22*9880d681SAndroid Build Coastguard Worker  br i1 %cmp1, label %if.then.2, label %if.else.2, !prof !2
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerif.then.2:
25*9880d681SAndroid Build Coastguard Worker  tail call void @c()
26*9880d681SAndroid Build Coastguard Worker  br label %if.end
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Workerif.else.2:
29*9880d681SAndroid Build Coastguard Worker  tail call void @d()
30*9880d681SAndroid Build Coastguard Worker  br label %if.end
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerif.end:
33*9880d681SAndroid Build Coastguard Worker  ret void
34*9880d681SAndroid Build Coastguard Worker}
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerdeclare void @a()
37*9880d681SAndroid Build Coastguard Workerdeclare void @b()
38*9880d681SAndroid Build Coastguard Workerdeclare void @c()
39*9880d681SAndroid Build Coastguard Workerdeclare void @d()
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Worker!0 = !{!"function_entry_count", i64 1}
42*9880d681SAndroid Build Coastguard Worker!1 = !{!"branch_weights", i32 10, i32 5}
43*9880d681SAndroid Build Coastguard Worker!2 = !{!"branch_weights", i32 10, i32 1}
44