61 lines · c
1// SPDX-License-Identifier: GPL-2.02#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