brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · d49b313 Raw
101 lines · plain
1; COM: Emitting basic-block-address-map when machine function splitting is enabled.2; RUN: llc < %s -mtriple=x86_64 -function-sections -split-machine-functions -basic-block-address-map | FileCheck %s --check-prefixes=CHECK,BASIC3 4; COM: Emitting basic-block-address-map with PGO analysis with machine function splitting enabled.5; RUN: llc < %s -mtriple=x86_64 -function-sections -split-machine-functions -basic-block-address-map -pgo-analysis-map=func-entry-count,bb-freq,br-prob | FileCheck %s --check-prefixes=CHECK,PGO6 7define void @foo(i1 zeroext %0) nounwind !prof !14 {8  br i1 %0, label %2, label %4, !prof !159 102:                                                ; preds = %111  %3 = call i32 @bar()12  br label %613 144:                                                ; preds = %115  %5 = call i32 @baz()16  br label %617 186:                                                ; preds = %4, %219  %7 = tail call i32 @qux()20  ret void21}22 23declare i32 @bar()24declare i32 @baz()25declare i32 @qux()26 27!llvm.module.flags = !{!0}28!0 = !{i32 1, !"ProfileSummary", !1}29!1 = !{!2, !3, !4, !5, !6, !7, !8, !9}30!2 = !{!"ProfileFormat", !"InstrProf"}31!3 = !{!"TotalCount", i64 10000}32!4 = !{!"MaxCount", i64 10}33!5 = !{!"MaxInternalCount", i64 1}34!6 = !{!"MaxFunctionCount", i64 1000}35!7 = !{!"NumCounts", i64 3}36!8 = !{!"NumFunctions", i64 5}37!9 = !{!"DetailedSummary", !10}38!10 = !{!11, !12, !13}39!11 = !{i32 10000, i64 100, i32 1}40!12 = !{i32 999900, i64 100, i32 1}41!13 = !{i32 999999, i64 1, i32 2}42!14 = !{!"function_entry_count", i64 7000}43!15 = !{!"branch_weights", i32 7000, i32 0}44 45; CHECK:          .section .text.hot.foo,"ax",@progbits46; CHECK-LABEL:  foo:47; CHECK-LABEL:  .Lfunc_begin0:48; CHECK-LABEL:  .LBB_END0_0:49; CHECK-LABEL:  .LBB0_1:50; CHECK-LABEL:  .LBB0_1_CS0:51; CHECK-LABEL:  .LBB0_1_CS1:52; CHECK-LABEL:  .LBB_END0_1:53; CHECK:          .section .text.split.foo,"ax",@progbits54; CHECK-LABEL:  foo.cold:55; CHECK-LABEL:  .LBB0_2_CS0:56; CHECK-LABEL:  .LBB0_2_CS1:57; CHECK-LABEL:  .LBB_END0_2:58; CHECK-LABEL:  .Lfunc_end0:59 60; CHECK:                .section        .llvm_bb_addr_map,"o",@llvm_bb_addr_map,.text.hot.foo61; CHECK-NEXT:   .byte   4               # version62; BASIC-NEXT:   .byte   40              # feature63; PGO-NEXT:     .byte   47              # feature64; CHECK-NEXT:   .byte   2               # number of basic block ranges65; CHECK-NEXT:   .quad   .Lfunc_begin0   # base address66; CHECK-NEXT:   .byte   2               # number of basic blocks67; CHECK-NEXT:   .byte   0               # BB id68; CHECK-NEXT:   .uleb128 .Lfunc_begin0-.Lfunc_begin069; CHECK-NEXT:   .byte   0               # number of callsites70; CHECK-NEXT:   .uleb128 .LBB_END0_0-.Lfunc_begin071; CHECK-NEXT:   .byte   872; CHECK-NEXT:   .byte   1               # BB id73; CHECK-NEXT:   .uleb128 .LBB0_1-.LBB_END0_074; CHECK-NEXT:   .byte   2               # number of callsites75; CHECK-NEXT:   .uleb128 .LBB0_1_CS0-.LBB0_176; CHECK-NEXT:   .uleb128 .LBB0_1_CS1-.LBB0_1_CS077; CHECK-NEXT:   .uleb128 .LBB_END0_1-.LBB0_1_CS178; CHECK-NEXT:   .byte   379; CHECK-NEXT:   .quad   foo.cold        # base address80; CHECK-NEXT:   .byte   1               # number of basic blocks81; CHECK-NEXT:   .byte   2               # BB id82; CHECK-NEXT:   .uleb128 foo.cold-foo.cold83; CHECK-NEXT:   .byte   2               # number of callsites84; CHECK-NEXT:   .uleb128 .LBB0_2_CS0-foo.cold85; CHECK-NEXT:   .uleb128 .LBB0_2_CS1-.LBB0_2_CS086; CHECK-NEXT:   .uleb128 .LBB_END0_2-.LBB0_2_CS187; CHECK-NEXT:   .byte   388 89;; PGO Analysis Map90; PGO:         .ascii  "\3306"                            # function entry count91; PGO-NEXT:    .ascii  "\200\200\200\200\200\200\200 "    # basic block frequency92; PGO-NEXT:    .byte   2                                  # basic block successor count93; PGO-NEXT:    .byte   1                                  # successor BB ID94; PGO-NEXT:    .ascii  "\200\200\200\200\b"               # successor branch probability95; PGO-NEXT:    .byte   2                                  # successor BB ID96; PGO-NEXT:    .byte   0                                  # successor branch probability97; PGO-NEXT:    .ascii  "\200\200\200\374\377\377\377\037" # basic block frequency98; PGO-NEXT:    .byte   0		                  # basic block successor count99; PGO-NEXT:    .ascii  "\200\200\200\004"                 # basic block frequency100; PGO-NEXT:    .byte   0                                  # basic block successor count101