1 ; REQUIRES: x86-registered-target
3 ; Check that the basic block profile dump outputs data and in the correct
6 ; RUN: llc -mtriple=x86_64-linux-unknown -o /dev/null -basic-block-sections=labels -mbb-profile-dump=- %s | FileCheck %s
8 ; Check that given a simple case, we can return the default MBFI
10 define i64 @f2(i64 %a, i64 %b) !prof !1{
15 ; CHECK: f2,0,1.000000e+03
17 define i64 @f1() !prof !2{
18 %sum = call i64 @f2(i64 2, i64 2)
19 %isEqual = icmp eq i64 %sum, 4
20 br i1 %isEqual, label %ifEqual, label %ifNotEqual, !prof !3
27 ; CHECK-NEXT: f1,0,1.000000e+01
28 ; CHECK-NEXT: f1,2,6.000000e+00
29 ; CHECK-NEXT: f1,1,4.000000e+00
31 define void @f3(i32 %iter) !prof !4 {
35 %i = phi i32 [0, %entry], [%i_next, %loop]
36 %i_next = add i32 %i, 1
37 %exit_cond = icmp slt i32 %i_next, %iter
38 br i1 %exit_cond, label %loop, label %exit, !prof !5
43 ; CHECK-NEXT: f3,0,2.000000e+00
44 ; CHECK-NEXT: f3,1,2.002000e+03
45 ; CHECK-NEXT: f3,2,2.000000e+00
47 !1 = !{!"function_entry_count", i64 1000}
48 !2 = !{!"function_entry_count", i64 10}
49 !3 = !{!"branch_weights", i32 2, i32 3}
50 !4 = !{!"function_entry_count", i64 2}
51 !5 = !{!"branch_weights", i32 1000, i32 1}
53 ; Check that if we pass -mbb-profile-dump but don't set -basic-block-sections,
54 ; we get an appropriate error message
56 ; RUN: not llc -mtriple=x86_64-linux-unknown -o /dev/null -mbb-profile-dump=- %s 2>&1 | FileCheck --check-prefix=NO-SECTIONS %s
58 ; NO-SECTIONS: <unknown>:0: error: Unable to find BB labels for MBB profile dump. -mbb-profile-dump must be called with -basic-block-sections=labels