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
|
// file : arch/v1/client_plots.h
// project : Salis-VM
// author : Paul Oliver <contact@pauloliver.dev>
#pragma once
// index:
static std::array g_arch_traces = std::to_array<TraceNamed<ImS64>>({
#define ARCH_SPEC_INST(label, symbol, core) \
{#label "_pop_" #core, #label}, \
{#label "_exe_" #core, #label}, \
{#label "_wrt_" #core, #label},
#define FOR_CORE(i) \
{"wmb0_" #i, "wmb0_" #i}, \
{"wmb1_" #i, "wmb1_" #i}, \
{"wdea_" #i, "wdea_" #i}, \
{"hlts_" #i, "hlts_" #i}, \
ARCH_SPEC_INST_SET(i)
FOR_CORES
#undef FOR_CORE
#undef ARCH_SPEC_INST
});
static std::array g_arch_traces_heatmaps = std::to_array<TraceHeatmap<ImS64>>({
#define FOR_CORE(i) \
{"wev_" #i, "wev_" #i}, \
{"xev_" #i, "xev_" #i},
FOR_CORES
#undef FOR_CORE
});
static std::array g_arch_plots = std::to_array<PlotLines>({
{"wevs", "general", {
#define FOR_CORE(i) "wmb0_" #i, "wmb1_" #i, "wdea_" #i,
FOR_CORES
#undef FOR_CORE
}},
{"hlts", "general", {
#define FOR_CORE(i) "hlts_" #i,
FOR_CORES
#undef FOR_CORE
}}
});
static std::array g_arch_plots_stacked = std::to_array<PlotStacked>({
#define ARCH_SPEC_INST(label, symbol, core) \
#label "_pop_" #core,
#define FOR_CORE(i) \
{"ipop%_" #i, "population", { ARCH_SPEC_INST_SET(i) }},
FOR_CORES
#undef FOR_CORE
#undef ARCH_SPEC_INST
#define ARCH_SPEC_INST(label, symbol, core) \
#label "_exe_" #core,
#define FOR_CORE(i) \
{"iexe%_" #i, "population", { ARCH_SPEC_INST_SET(i) }},
FOR_CORES
#undef FOR_CORE
#undef ARCH_SPEC_INST
#define ARCH_SPEC_INST(label, symbol, core) \
#label "_wrt_" #core,
#define FOR_CORE(i) \
{"iwrt%_" #i, "population", { ARCH_SPEC_INST_SET(i) }},
FOR_CORES
#undef FOR_CORE
#undef ARCH_SPEC_INST
});
static std::array g_arch_plots_heatmaps = std::to_array<PlotHeatmap>({
#define FOR_CORE(i) \
{"wev_" #i, "heatmaps", "wev_" #i},
FOR_CORES
#undef FOR_CORE
#define FOR_CORE(i) \
{"xev_" #i, "heatmaps", "xev_" #i},
FOR_CORES
#undef FOR_CORE
});
|