1// 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#include "../../../util/sample.h"
13
14void arch_perf_parse_sample_weight(struct perf_sample *data,
15 const __u64 *array, u64 type)
16{
17 union perf_sample_weight weight;
18
19 weight.full = *array;
20 if (type & PERF_SAMPLE_WEIGHT)
21 data->weight = weight.full;
22 else {
23 data->weight = weight.var1_dw;
24 data->ins_lat = weight.var2_w;
25 data->p_stage_cyc = weight.var3_w;
26 }
27}
28
29void arch_perf_synthesize_sample_weight(const struct perf_sample *data,
30 __u64 *array, u64 type)
31{
32 *array = data->weight;
33
34 if (type & PERF_SAMPLE_WEIGHT_STRUCT) {
35 *array &= 0xffffffff;
36 *array |= ((u64)data->ins_lat << 32);
37 }
38}
39
40const char *arch_perf_header_entry(const char *se_header)
41{
42 if (!strcmp(se_header, "Local INSTR Latency"))
43 return "Finish Cyc";
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";
50 return se_header;
51}
52
53int arch_support_sort_key(const char *sort_key)
54{
55 if (!strcmp(sort_key, "p_stage_cyc"))
56 return 1;
57 if (!strcmp(sort_key, "local_p_stage_cyc"))
58 return 1;
59 return 0;
60}
61

source code of linux/tools/perf/arch/powerpc/util/event.c