117 lines · plain
1Some basic tests for supplementing instrumentation profile with sample profile.2 3Test all of goo's counters will be set to PseudoHot.4RUN: llvm-profdata merge \5RUN: -supplement-instr-with-sample=%p/Inputs/mix_sample.proftext \6RUN: -suppl-min-size-threshold=0 %p/Inputs/mix_instr.proftext -o %t7RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=MIX18 9MIX1: foo:10MIX1-NEXT: Hash: 0x000000000000000711MIX1-NEXT: Counters: 512MIX1-NEXT: Block counts: [12, 13, 0, 0, 0]13MIX1: goo:14MIX1-NEXT: Hash: 0x000000000000000515MIX1-NEXT: Counters: 316MIX1-NOT: Block counts:17MIX1-SAME: <PseudoHot>18MIX1: moo:19MIX1-NEXT: Hash: 0x000000000000000920MIX1-NEXT: Counters: 421MIX1-NEXT: Block counts: [3000, 1000, 2000, 500]22 23Test when the zero counter ratio of foo is higher than zero-counter-threshold.24RUN: llvm-profdata merge \25RUN: -supplement-instr-with-sample=%p/Inputs/mix_sample.proftext \26RUN: -suppl-min-size-threshold=0 -zero-counter-threshold=0.5 \27RUN: -instr-prof-cold-threshold=30 %p/Inputs/mix_instr.proftext -o %t28RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=MIX229 30MIX2: foo:31MIX2-NEXT: Hash: 0x000000000000000732MIX2-NEXT: Counters: 533MIX2-NOT: Block counts:34MIX2-SAME: <PseudoHot>35MIX2: goo:36MIX2-NEXT: Hash: 0x000000000000000537MIX2-NEXT: Counters: 338MIX2-NOT: Block counts:39MIX2-SAME: <PseudoHot>40MIX2: moo:41MIX2-NEXT: Hash: 0x000000000000000942MIX2-NEXT: Counters: 443MIX2-NEXT: Block counts: [3000, 1000, 2000, 500]44 45Test when the zero counter ratio of foo is lower than zero-counter-threshold.46RUN: llvm-profdata merge \47RUN: -supplement-instr-with-sample=%p/Inputs/mix_sample.proftext \48RUN: -suppl-min-size-threshold=0 -zero-counter-threshold=0.7 \49RUN: -instr-prof-cold-threshold=30 %p/Inputs/mix_instr.proftext -o %t50RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=MIX351 52MIX3: foo:53MIX3-NEXT: Hash: 0x000000000000000754MIX3-NEXT: Counters: 555MIX3-NEXT: Block counts: [1384, 1500, 0, 0, 0]56MIX3: goo:57MIX3-NEXT: Hash: 0x000000000000000558MIX3-NEXT: Counters: 359MIX3-NOT: Block counts:60MIX3-SAME: <PseudoHot>61MIX3: moo:62MIX3-NEXT: Hash: 0x000000000000000963MIX3-NEXT: Counters: 464MIX3-NEXT: Block counts: [3000, 1000, 2000, 500]65 66Test foo's profile won't be adjusted because its size is smaller67than suppl-min-size-threshold.68RUN: llvm-profdata merge \69RUN: -supplement-instr-with-sample=%p/Inputs/mix_sample.proftext \70RUN: -suppl-min-size-threshold=2 -zero-counter-threshold=0.7 \71RUN: -instr-prof-cold-threshold=30 %p/Inputs/mix_instr_small.proftext -o %t72RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=MIX473 74MIX4: foo:75MIX4-NEXT: Hash: 0x000000000000000776MIX4-NEXT: Counters: 177MIX4-NEXT: Block counts: [0]78MIX4: goo:79MIX4-NEXT: Hash: 0x000000000000000580MIX4-NEXT: Counters: 381MIX4-NOT: Block counts:82MIX4-SAME: <PseudoHot>83MIX4: moo:84MIX4-NEXT: Hash: 0x000000000000000985MIX4-NEXT: Counters: 186MIX4-NEXT: Block counts: [0]87 88Test profile summary won't be affected by pseudo counters.89RUN: llvm-profdata merge \90RUN: -supplement-instr-with-sample=%p/Inputs/mix_sample.proftext \91RUN: -suppl-min-size-threshold=0 %p/Inputs/mix_instr.proftext -o %t92RUN: llvm-profdata show %t -detailed-summary | FileCheck %s --check-prefix=MIX593 94MIX5: Instrumentation level: IR95MIX5-NEXT: Total functions: 296MIX5-NEXT: Maximum function count: 300097MIX5-NEXT: Maximum internal block count: 200098MIX5-NEXT: Total number of blocks: 999MIX5-NEXT: Total count: 6525100MIX5-NEXT: Detailed summary:101MIX5-NEXT: 1 blocks (11.11%) with count >= 3000 account for 1% of the total counts.102MIX5-NEXT: 1 blocks (11.11%) with count >= 3000 account for 10% of the total counts.103MIX5-NEXT: 1 blocks (11.11%) with count >= 3000 account for 20% of the total counts.104MIX5-NEXT: 1 blocks (11.11%) with count >= 3000 account for 30% of the total counts.105MIX5-NEXT: 1 blocks (11.11%) with count >= 3000 account for 40% of the total counts.106MIX5-NEXT: 2 blocks (22.22%) with count >= 2000 account for 50% of the total counts.107MIX5-NEXT: 2 blocks (22.22%) with count >= 2000 account for 60% of the total counts.108MIX5-NEXT: 2 blocks (22.22%) with count >= 2000 account for 70% of the total counts.109MIX5-NEXT: 3 blocks (33.33%) with count >= 1000 account for 80% of the total counts.110MIX5-NEXT: 3 blocks (33.33%) with count >= 1000 account for 90% of the total counts.111MIX5-NEXT: 4 blocks (44.44%) with count >= 500 account for 95% of the total counts.112MIX5-NEXT: 4 blocks (44.44%) with count >= 500 account for 99% of the total counts.113MIX5-NEXT: 6 blocks (66.67%) with count >= 12 account for 99.9% of the total counts.114MIX5-NEXT: 6 blocks (66.67%) with count >= 12 account for 99.99% of the total counts.115MIX5-NEXT: 6 blocks (66.67%) with count >= 12 account for 99.999% of the total counts.116MIX5-NEXT: 6 blocks (66.67%) with count >= 12 account for 99.9999% of the total counts.117