Fix loop-level instrumentation + more (#32)

- fix loop-level instrumentation
- support loop instrumentation w/o debug symbols via loop number
- improve module_function messages
- serialize num_basic_blocks
- serialize num_outer_loops
- serialize is_num_instructions_constrained
- serialize is_loop_num_instructions_constrained
- updated transpose example to use uniform_int_distribution
- added transpose loop test
- added fail regexes for tests which enable loop instrumentation
- use module->getFullName in get_loop_file_line_info
- use module->getFullName in get_func_file_line_info
- use module->getFullName in get_basic_block_file_line_info
Este cometimento está contido em:
Jonathan R. Madsen criou e GitHub cometeu 2022-06-10 06:57:50 -05:00
1 ascendente 1db3934f85
cometimento a640fbdb29
9 ficheiros modificados
+207 -98

Não existem ficheiros que correspondam à sua pesquisa

+7 -3
Ver ficheiro
@@ -98,7 +98,7 @@ struct module_function
basic_loop_vec_t loop_blocks = {};
std::vector<std::vector<instruction_t>> instructions = {};
using str_msg_t = std::tuple<int, string_t, string_t, string_t>;
using str_msg_t = std::tuple<int, string_t, string_t, string_t, string_t>;
using str_msg_vec_t = std::vector<str_msg_t>;
mutable str_msg_vec_t messages = {};
@@ -183,6 +183,8 @@ module_function::serialize(ArchiveT& ar, const unsigned)
if constexpr(tim::concepts::is_output_archive<ArchiveT>::value)
{
ar(cereal::make_nvp("num_basic_blocks", basic_blocks.size()),
cereal::make_nvp("num_outer_loops", loop_blocks.size()));
ar.setNextName("heuristics");
ar.startNode();
ar(cereal::make_nvp("should_instrument", should_instrument()),
@@ -202,10 +204,12 @@ module_function::serialize(ArchiveT& ar, const unsigned)
cereal::make_nvp("is_dynamic_callsite_forced", is_dynamic_callsite_forced()),
cereal::make_nvp("is_address_range_constrained",
is_address_range_constrained()),
cereal::make_nvp("is_num_instructions_constrained",
is_num_instructions_constrained()),
cereal::make_nvp("is_loop_address_range_constrained",
is_loop_address_range_constrained()),
cereal::make_nvp("is_num_instructions_constrained",
is_num_instructions_constrained()));
cereal::make_nvp("is_loop_num_instructions_constrained",
is_loop_num_instructions_constrained()));
ar.finishNode();
// instructions can inflate JSON size so only output when verbosity is increased
// above default