-
Notifications
You must be signed in to change notification settings - Fork 111
/
llvm_propeller_options.proto
103 lines (83 loc) · 3.65 KB
/
llvm_propeller_options.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
syntax = "proto2";
package devtools_crosstool_autofdo;
// Enumeration to control the version of the cluster output profile.
enum ClusterEncodingVersion {
option allow_alias = true;
CLUSTER_ENCODING_VERSION_UNSPECIFIED = 0;
VERSION_0 = 1;
VERSION_1 = 2;
LATEST = 2;
}
// Enumeration to indicate the type of an input profile.
enum ProfileType {
PROFILE_TYPE_UNSPECIFIED = 0;
PERF_LBR = 1;
PERF_SPE = 2;
FREQUENCIES_PROTO = 3;
}
// Message for specifying an input perf/proto/etc. profile for Propeller profile
// generation.
// Next Available: 3.
message InputProfile {
optional string name = 1;
optional ProfileType type = 2;
}
// Next Available: 15.
message PropellerOptions {
// binary file name.
optional string binary_name = 1;
// Profile (perf.data) file name.
repeated string profile_names = 2;
// propeller cluster information output file name.
optional string cluster_out_name = 3;
// propeller symbol order output file name.
optional string symbol_order_out_name = 4;
// profiled binary name; if not empty, use this as file name to match MMAP
// events in perf.data file, can be "".
optional string profiled_binary_name = 5;
// ignore the build id; if set, use binary_name or profiled_binary_name to
// match MMAP events. Otherwise, use buildid (if exists) to match.
optional bool ignore_build_id = 6;
// Parameters used to calculate the Extended TSP score for layout.
optional PropellerCodeLayoutParameters code_layout_params = 7;
// Include extra information such as per-function layout scores in the
// propeller cluster file.
optional bool verbose_cluster_output = 8 [default = false];
// Directory path for dumping the (hot) cfgs in dot format. Dumping won't be
// done if field is unset.
optional string cfg_dump_dir_name = 9;
// Start a http-server to handle /statusz.
optional bool http = 10 [default = false];
// Output module name for function clusters.
optional bool output_module_name = 11 [default = false];
// Filter out functions not in .text sections
optional bool filter_non_text_functions = 12 [default = true];
// Version of profile to output in `cluster_out_name`.
optional ClusterEncodingVersion cluster_out_version = 13 [default = LATEST];
// The profiles to be used for generating a Propeller profile.
repeated InputProfile input_profiles = 14;
}
// Next Available: 13.
message PropellerCodeLayoutParameters {
optional uint32 fallthrough_weight = 1 [default = 10];
optional uint32 forward_jump_weight = 2 [default = 1];
optional uint32 backward_jump_weight = 3 [default = 1];
optional uint32 forward_jump_distance = 4 [default = 1024];
optional uint32 backward_jump_distance = 5 [default = 680];
// Whether splitting will be done when merging chains.
optional bool chain_split = 6 [default = true];
// Maximum chain size for which splitting is considered at every node bundle.
optional uint32 chain_split_threshold = 7 [default = 0];
// Whether to use the call chain clustering algorithm to reorder functions.
optional bool call_chain_clustering = 8 [default = true];
// Maximum cluster size for call chain clustering (No further clustering is
// done on a cluster when it exceeds this size).
optional uint32 cluster_merge_size_threshold = 9 [default = 2097152];
// Whether to split the cold blocks in hot functions. When `false` cold blocks
// are placed immediately after hot ones.
optional bool split_functions = 10 [default = true];
// Whether to change the relative order of hot blocks.
optional bool reorder_hot_blocks = 11 [default = true];
// Whether to do inter-procedural reordering.
optional bool inter_function_reordering = 12 [default = false];
}