#define INST_EVENT_ARRAYS(core) \ INST_EVENT_ARRAY(core, pop) /* instruction population */ \ INST_EVENT_ARRAY(core, exe) /* instruction executions */ \ INST_EVENT_ARRAY(core, wrt) /* instruction writes */ std::vector g_arch_traces = { #define INST(core, pref, index, label, mnemonic, symbol) \ {#label "_" #pref "_" #core, #label}, #define INST_EVENT_ARRAY(core, iv) \ INST_SET(core, iv) #define FOR_CORE(i) \ {"wmb0_" #i, "wmb0_" #i}, \ {"wmb1_" #i, "wmb1_" #i}, \ {"wdea_" #i, "wdea_" #i}, \ INST_EVENT_ARRAYS(i) FOR_CORES #undef FOR_CORE #undef INST_EVENT_ARRAY #undef INST }; std::vector g_arch_plots = { {"wevs", "general", { #define FOR_CORE(i) "wmb0_" #i, "wmb1_" #i, "wdea_" #i, FOR_CORES #undef FOR_CORE }}, }; std::vector g_arch_plots_stacked = { #define INST(core, pref, index, label, mnemonic, symbol) \ #label "_" #pref "_" #core, #define INST_EVENT_ARRAY(core, iv) \ {"i" #iv "_" #core, "population", { \ INST_SET(core, iv) \ }}, #define FOR_CORE(i) \ INST_EVENT_ARRAYS(i) FOR_CORES #undef FOR_CORE #undef INST_EVENT_ARRAY #undef INST };