Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / Generic / bb-profile-dump.ll
blob7391a6ee6f9128dfc2776160cfacfee8002b44ed
1 ; REQUIRES: x86-registered-target
3 ; Check that the basic block profile dump outputs data and in the correct
4 ; format.
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{
11     %sum = add i64 %a, %b
12     ret i64 %sum
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
21 ifEqual:
22     ret i64 0
23 ifNotEqual:
24     ret i64 %sum
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 {
32 entry:
33     br label %loop
34 loop:
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
39 exit:
40     ret void
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