84 lines · plain
1; RUN: rm -rf %t && split-file %s %t2 3; RUN: llvm-profdata merge %t/a.proftext -o %t/a.profdata4; RUN: opt %t/a.ll -passes=pgo-instr-use -pgo-test-profile-file=%t/a.profdata -S -o %t/a2.ll5 6; RUN: llc < %t/a2.ll -enable-machine-outliner=conservative-pgo -mtriple=aarch64-linux-gnu -profile-summary-cold-count=0 | FileCheck %s --check-prefixes=CHECK,CONSERVATIVE7; RUN: llc < %t/a2.ll -enable-machine-outliner=optimistic-pgo -mtriple=aarch64-linux-gnu -profile-summary-cold-count=0 | FileCheck %s --check-prefixes=CHECK,OPTIMISTIC8 9;--- a.ll10declare void @z(i32, i32, i32, i32)11 12; CHECK-LABEL: always_outline:13define void @always_outline() cold {14entry:15; CHECK: [[OUTLINED:OUTLINED_FUNCTION_[0-9]+]]16 tail call void @z(i32 1, i32 2, i32 3, i32 4)17 ret void18; CHECK: .cfi_endproc19}20 21; CHECK-LABEL: cold:22define void @cold() {23entry:24; CHECK: [[OUTLINED]]25 tail call void @z(i32 1, i32 2, i32 3, i32 4)26 ret void27; CHECK: .cfi_endproc28}29 30; CHECK-LABEL: hot:31define void @hot() minsize {32entry:33; CHECK-NOT: [[OUTLINED]]34 tail call void @z(i32 1, i32 2, i32 3, i32 4)35 ret void36; CHECK: .cfi_endproc37}38 39; CHECK-LABEL: no_profile_minsize:40define void @no_profile_minsize() minsize {41entry:42; CONSERVATIVE-NOT: [[OUTLINED]]43; OPTIMISTIC: [[OUTLINED]]44 tail call void @z(i32 1, i32 2, i32 3, i32 4)45 ret void46; CHECK: .cfi_endproc47}48 49; CHECK-LABEL: no_profile_optsize:50define void @no_profile_optsize() optsize {51entry:52; CHECK-NOT: [[OUTLINED]]53 tail call void @z(i32 1, i32 2, i32 3, i32 4)54 ret void55; CHECK: .cfi_endproc56}57 58; CHECK: [[OUTLINED]]:59; CHECK-SAME: // @{{.*}} Tail Call60; CHECK: mov w0, #161; CHECK-NEXT: mov w1, #262; CHECK-NEXT: mov w2, #363; CHECK-NEXT: mov w3, #464; CHECK-NEXT: b z65 66;--- a.proftext67:ir68 69cold70# Func Hash:7174226141896690892772# Num Counters:73174# Counter Values:75076 77hot78# Func Hash:7974226141896690892780# Num Counters:81182# Counter Values:8310084