blob: 3bf441257466b311013f59e15987216a7e1fd5fa [file] [log] [blame]
Athira Rajeevff0bd0a2021-03-22 10:57:25 -04001// SPDX-License-Identifier: GPL-2.0
2#include <linux/types.h>
3#include <linux/string.h>
4#include <linux/zalloc.h>
5
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
13void arch_perf_parse_sample_weight(struct perf_sample *data,
14 const __u64 *array, u64 type)
15{
16 union perf_sample_weight weight;
17
18 weight.full = *array;
19 if (type & PERF_SAMPLE_WEIGHT)
20 data->weight = weight.full;
Athira Rajeev06e5ca72021-03-22 10:57:26 -040021 else {
Athira Rajeevff0bd0a2021-03-22 10:57:25 -040022 data->weight = weight.var1_dw;
Athira Rajeev06e5ca72021-03-22 10:57:26 -040023 data->ins_lat = weight.var2_w;
24 data->p_stage_cyc = weight.var3_w;
25 }
Athira Rajeevff0bd0a2021-03-22 10:57:25 -040026}
27
28void arch_perf_synthesize_sample_weight(const struct perf_sample *data,
29 __u64 *array, u64 type)
30{
31 *array = data->weight;
32
Athira Rajeev06e5ca72021-03-22 10:57:26 -040033 if (type & PERF_SAMPLE_WEIGHT_STRUCT) {
Athira Rajeevff0bd0a2021-03-22 10:57:25 -040034 *array &= 0xffffffff;
Athira Rajeev06e5ca72021-03-22 10:57:26 -040035 *array |= ((u64)data->ins_lat << 32);
36 }
37}
38
39const char *arch_perf_header_entry(const char *se_header)
40{
41 if (!strcmp(se_header, "Local INSTR Latency"))
42 return "Finish Cyc";
43 else if (!strcmp(se_header, "Pipeline Stage Cycle"))
44 return "Dispatch Cyc";
45 return se_header;
Athira Rajeevff0bd0a2021-03-22 10:57:25 -040046}
Athira Rajeev50fa3a52021-03-22 10:57:27 -040047
48int arch_support_sort_key(const char *sort_key)
49{
50 if (!strcmp(sort_key, "p_stage_cyc"))
51 return 1;
52 return 0;
53}