// file : arch/v1/client_plots.h // project : Salis-VM // author : Paul Oliver #pragma once // index: static std::array g_arch_traces = std::to_array>({ #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>({ #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({ {"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({ #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({ #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 });