Files
clang-p2996/llvm/test/CodeGen/Generic/bb-profile-dump.ll
Mircea Trofin f179486204 [AsmPrint] Correctly factor function entry count when dumping MBB frequencies (#67826)
The goal in #66818 was to capture function entry counts, but those are not the same as the frequency of the entry (machine) basic block. This fixes that, and adds explicit profiles to the test.

We also increase the precision of `MachineBlockFrequencyInfo::getBlockFreqRelativeToEntryBlock` to double. Existing code uses it as float so should be unaffected.
2023-09-29 18:06:53 -07:00

60 lines
1.7 KiB
LLVM

; REQUIRES: x86-registered-target
;
; Check that the basic block profile dump outputs data and in the correct
; format.
;
; RUN: llc -mtriple=x86_64-linux-unknown -o /dev/null -basic-block-sections=labels -mbb-profile-dump=- %s | FileCheck %s
; Check that given a simple case, we can return the default MBFI
define i64 @f2(i64 %a, i64 %b) !prof !1{
%sum = add i64 %a, %b
ret i64 %sum
}
; CHECK: f2,0,1.000000e+03
define i64 @f1() !prof !2{
%sum = call i64 @f2(i64 2, i64 2)
%isEqual = icmp eq i64 %sum, 4
br i1 %isEqual, label %ifEqual, label %ifNotEqual, !prof !3
ifEqual:
ret i64 0
ifNotEqual:
ret i64 %sum
}
; CHECK-NEXT: f1,0,1.000000e+01
; CHECK-NEXT: f1,2,6.000000e+00
; CHECK-NEXT: f1,1,4.000000e+00
define void @f3(i32 %iter) !prof !4 {
entry:
br label %loop
loop:
%i = phi i32 [0, %entry], [%i_next, %loop]
%i_next = add i32 %i, 1
%exit_cond = icmp slt i32 %i_next, %iter
br i1 %exit_cond, label %loop, label %exit, !prof !5
exit:
ret void
}
; CHECK-NEXT: f3,0,2.000000e+00
; CHECK-NEXT: f3,1,2.002000e+03
; CHECK-NEXT: f3,2,2.000000e+00
!1 = !{!"function_entry_count", i64 1000}
!2 = !{!"function_entry_count", i64 10}
!3 = !{!"branch_weights", i32 2, i32 3}
!4 = !{!"function_entry_count", i64 2}
!5 = !{!"branch_weights", i32 1000, i32 1}
; Check that if we pass -mbb-profile-dump but don't set -basic-block-sections,
; we get an appropriate error message
; RUN: not llc -mtriple=x86_64-linux-unknown -o /dev/null -mbb-profile-dump=- %s 2>&1 | FileCheck --check-prefix=NO-SECTIONS %s
; 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