xref: /llvm-project/mlir/test/Target/LLVMIR/Import/metadata-profiling.ll (revision 10fa27704b3165ddc4efbcf7964042b137e7fa7e)
1; RUN: mlir-translate -import-llvm -split-input-file %s | FileCheck %s
2
3; CHECK-LABEL: @cond_br
4define i64 @cond_br(i1 %arg1, i64 %arg2) {
5entry:
6  ; CHECK: llvm.cond_br
7  ; CHECK-SAME: weights([0, 3])
8  br i1 %arg1, label %bb1, label %bb2, !prof !0
9bb1:
10  ret i64 %arg2
11bb2:
12  ret i64 %arg2
13}
14
15!0 = !{!"branch_weights", i32 0, i32 3}
16
17; // -----
18
19; CHECK-LABEL: @simple_switch(
20define i32 @simple_switch(i32 %arg1) {
21  ; CHECK: llvm.switch
22  ; CHECK: {branch_weights = array<i32: 42, 3, 5>}
23  switch i32 %arg1, label %bbd [
24    i32 0, label %bb1
25    i32 9, label %bb2
26  ], !prof !0
27bb1:
28  ret i32 %arg1
29bb2:
30  ret i32 %arg1
31bbd:
32  ret i32 %arg1
33}
34
35!0 = !{!"branch_weights", i32 42, i32 3, i32 5}
36
37; // -----
38
39; CHECK: llvm.func @fn()
40declare void @fn()
41
42; CHECK-LABEL: @call_branch_weights
43define void @call_branch_weights() {
44  ; CHECK:  llvm.call @fn() {branch_weights = array<i32: 42>}
45  call void @fn(), !prof !0
46  ret void
47}
48
49!0 = !{!"branch_weights", i32 42}
50
51; // -----
52
53declare void @foo()
54declare i32 @__gxx_personality_v0(...)
55
56; CHECK-LABEL: @invoke_branch_weights
57define i32 @invoke_branch_weights() personality ptr @__gxx_personality_v0 {
58  ; CHECK: llvm.invoke @foo() to ^bb2 unwind ^bb1 {branch_weights = array<i32: 42, 99>} : () -> ()
59  invoke void @foo() to label %bb2 unwind label %bb1, !prof !0
60bb1:
61  %1 = landingpad { ptr, i32 } cleanup
62  br label %bb2
63bb2:
64  ret i32 1
65
66}
67
68!0 = !{!"branch_weights", i32 42, i32 99}
69