mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-13 23:18:51 +00:00
824c3eccff
Summary: This change adds support for specifying a weight when merging profile data with the llvm-profdata tool. Weights are specified by using the --weighted-input=<weight>,<filename> option. Input files not specified with this option (normal positional list after options) are given a default weight of 1. Adding support for arbitrary weighting of input profile data allows for relative importance to be placed on the input data from multiple training runs. Both sampled and instrumented profiles are supported. Reviewers: davidxl, dnovillo, bogner, silvas Subscribers: silvas, davidxl, llvm-commits Differential Revision: http://reviews.llvm.org/D15306 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255659 91177308-0d34-0410-b5e6-96231b3b80d8
57 lines
3.4 KiB
Plaintext
57 lines
3.4 KiB
Plaintext
Tests for weighted merge of sample profiles.
|
|
|
|
1- Merge the foo and bar profiles with unity weight and verify the combined output
|
|
RUN: llvm-profdata merge -sample -text -weighted-input=1,%p/Inputs/weight-sample-bar.proftext -weighted-input=1,%p/Inputs/weight-sample-foo.proftext -o - | FileCheck %s -check-prefix=1X_1X_WEIGHT
|
|
RUN: llvm-profdata merge -sample -text -weighted-input=1,%p/Inputs/weight-sample-bar.proftext %p/Inputs/weight-sample-foo.proftext -o - | FileCheck %s -check-prefix=1X_1X_WEIGHT
|
|
1X_1X_WEIGHT: foo:1763288:35327
|
|
1X_1X_WEIGHT-NEXT: 7: 35327
|
|
1X_1X_WEIGHT-NEXT: 8: 35327
|
|
1X_1X_WEIGHT-NEXT: 9: 6930
|
|
1X_1X_WEIGHT-NEXT: 10: 29341
|
|
1X_1X_WEIGHT-NEXT: 11: 11906
|
|
1X_1X_WEIGHT-NEXT: 13: 18185 foo:19531
|
|
1X_1X_WEIGHT-NEXT: 15: 36458
|
|
1X_1X_WEIGHT-NEXT: bar:1772037:35370
|
|
1X_1X_WEIGHT-NEXT: 17: 35370
|
|
1X_1X_WEIGHT-NEXT: 18: 35370
|
|
1X_1X_WEIGHT-NEXT: 19: 7005
|
|
1X_1X_WEIGHT-NEXT: 20: 29407
|
|
1X_1X_WEIGHT-NEXT: 21: 12170
|
|
1X_1X_WEIGHT-NEXT: 23: 18150 bar:19829
|
|
1X_1X_WEIGHT-NEXT: 25: 36666
|
|
|
|
2- Merge the foo and bar profiles with weight 3x and 5x respectively and verify the combined output
|
|
RUN: llvm-profdata merge -sample -text -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=5,%p/Inputs/weight-sample-foo.proftext -o - | FileCheck %s -check-prefix=3X_5X_WEIGHT
|
|
3X_5X_WEIGHT: foo:8816440:176635
|
|
3X_5X_WEIGHT-NEXT: 7: 176635
|
|
3X_5X_WEIGHT-NEXT: 8: 176635
|
|
3X_5X_WEIGHT-NEXT: 9: 34650
|
|
3X_5X_WEIGHT-NEXT: 10: 146705
|
|
3X_5X_WEIGHT-NEXT: 11: 59530
|
|
3X_5X_WEIGHT-NEXT: 13: 90925 foo:97655
|
|
3X_5X_WEIGHT-NEXT: 15: 182290
|
|
3X_5X_WEIGHT-NEXT: bar:5316111:106110
|
|
3X_5X_WEIGHT-NEXT: 17: 106110
|
|
3X_5X_WEIGHT-NEXT: 18: 106110
|
|
3X_5X_WEIGHT-NEXT: 19: 21015
|
|
3X_5X_WEIGHT-NEXT: 20: 88221
|
|
3X_5X_WEIGHT-NEXT: 21: 36510
|
|
3X_5X_WEIGHT-NEXT: 23: 54450 bar:59487
|
|
3X_5X_WEIGHT-NEXT: 25: 109998
|
|
|
|
3- Bad merge: invalid weight
|
|
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=0,%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
|
|
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=0.75,%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
|
|
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=-5,%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
|
|
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=,%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
|
|
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
|
|
INVALID_WEIGHT: error: Input weight must be a positive integer.
|
|
|
|
4- Bad merge: input path does not exist
|
|
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/does-not-exist.proftext -weighted-input=2,%p/Inputs/does-not-exist-either.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_INPUT
|
|
INVALID_INPUT: {{.*}}: {{.*}}does-not-exist.proftext: {{[Nn]}}o such file or directory
|
|
|
|
5- No inputs
|
|
RUN: not llvm-profdata merge -sample -o %t.out 2>&1 | FileCheck %s -check-prefix=NO_INPUT
|
|
NO_INPUT: {{.*}}: No input files specified. See llvm-profdata{{(\.EXE|\.exe)?}} merge -help
|