1 // SPDX-License-Identifier: GPL-2.0
2 #include <linux/types.h>
3 #include <linux/string.h>
4 #include <linux/zalloc.h>
6 #include "../../../util/event.h"
7 #include "../../../util/synthetic-events.h"
8 #include "../../../util/machine.h"
9 #include "../../../util/tool.h"
10 #include "../../../util/map.h"
11 #include "../../../util/debug.h"
12 #include "../../../util/sample.h"
14 void arch_perf_parse_sample_weight(struct perf_sample
*data
,
15 const __u64
*array
, u64 type
)
17 union perf_sample_weight weight
;
20 if (type
& PERF_SAMPLE_WEIGHT
)
21 data
->weight
= weight
.full
;
23 data
->weight
= weight
.var1_dw
;
24 data
->ins_lat
= weight
.var2_w
;
25 data
->p_stage_cyc
= weight
.var3_w
;
29 void arch_perf_synthesize_sample_weight(const struct perf_sample
*data
,
30 __u64
*array
, u64 type
)
32 *array
= data
->weight
;
34 if (type
& PERF_SAMPLE_WEIGHT_STRUCT
) {
36 *array
|= ((u64
)data
->ins_lat
<< 32);
40 const char *arch_perf_header_entry(const char *se_header
)
42 if (!strcmp(se_header
, "Local INSTR Latency"))
44 else if (!strcmp(se_header
, "INSTR Latency"))
45 return "Global Finish_cyc";
46 else if (!strcmp(se_header
, "Local Pipeline Stage Cycle"))
47 return "Dispatch Cyc";
48 else if (!strcmp(se_header
, "Pipeline Stage Cycle"))
49 return "Global Dispatch_cyc";
53 int arch_support_sort_key(const char *sort_key
)
55 if (!strcmp(sort_key
, "p_stage_cyc"))
57 if (!strcmp(sort_key
, "local_p_stage_cyc"))