• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

daisytuner / sdfglib / 19917337940

01 Dec 2025 04:38PM UTC coverage: 61.822% (-0.06%) from 61.885%
19917337940

push

github

web-flow
Merge pull request #369 from daisytuner/cleaner-flop-analysis-api

Cleaner API to FlopAnalysis to hide its internal artifacts when we on…

11 of 56 new or added lines in 7 files covered. (19.64%)

3 existing lines in 2 files now uncovered.

11254 of 18204 relevant lines covered (61.82%)

110.69 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

57.14
/src/codegen/dispatchers/for_dispatcher.cpp
1
#include "sdfg/codegen/dispatchers/for_dispatcher.h"
2
#include "sdfg/analysis/analysis.h"
3
#include "sdfg/analysis/loop_analysis.h"
4
#include "sdfg/codegen/dispatchers/sequence_dispatcher.h"
5
#include "sdfg/codegen/instrumentation/instrumentation_info.h"
6

7
namespace sdfg {
8
namespace codegen {
9

10
ForDispatcher::ForDispatcher(
2✔
11
    LanguageExtension& language_extension,
12
    StructuredSDFG& sdfg,
13
    analysis::AnalysisManager& analysis_manager,
14
    structured_control_flow::For& node,
15
    InstrumentationPlan& instrumentation_plan,
16
    ArgCapturePlan& arg_capture_plan
17
)
18
    : NodeDispatcher(language_extension, sdfg, analysis_manager, node, instrumentation_plan, arg_capture_plan),
2✔
19
      node_(node) {
2✔
20

21
      };
2✔
22

23
void ForDispatcher::dispatch_node(
1✔
24
    PrettyPrinter& main_stream, PrettyPrinter& globals_stream, CodeSnippetFactory& library_snippet_factory
25
) {
26
    main_stream << "for";
1✔
27
    main_stream << "(";
1✔
28
    main_stream << node_.indvar()->get_name();
1✔
29
    main_stream << " = ";
1✔
30
    main_stream << language_extension_.expression(node_.init());
1✔
31
    main_stream << ";";
1✔
32
    main_stream << language_extension_.expression(node_.condition());
1✔
33
    main_stream << ";";
1✔
34
    main_stream << node_.indvar()->get_name();
1✔
35
    main_stream << " = ";
1✔
36
    main_stream << language_extension_.expression(node_.update());
1✔
37
    main_stream << ")" << std::endl;
1✔
38
    main_stream << "{" << std::endl;
1✔
39

40
    main_stream.setIndent(main_stream.indent() + 4);
1✔
41
    SequenceDispatcher
42
        dispatcher(language_extension_, sdfg_, analysis_manager_, node_.root(), instrumentation_plan_, arg_capture_plan_);
1✔
43
    dispatcher.dispatch(main_stream, globals_stream, library_snippet_factory);
1✔
44
    main_stream.setIndent(main_stream.indent() - 4);
1✔
45

46
    main_stream << "}" << std::endl;
1✔
47
};
1✔
48

49
InstrumentationInfo ForDispatcher::instrumentation_info() const {
×
50
    size_t loopnest_index = -1;
×
51
    auto& loop_tree_analysis = analysis_manager_.get<analysis::LoopAnalysis>();
×
52

53
    auto outermost_loops = loop_tree_analysis.outermost_loops();
×
54
    for (size_t i = 0; i < outermost_loops.size(); i++) {
×
55
        if (outermost_loops[i] == &node_) {
×
56
            loopnest_index = i;
×
57
            break;
×
58
        }
59
    }
×
60

61
    // Perform FlopAnalysis
62
    std::unordered_map<std::string, std::string> metrics;
×
63
    auto& flop_analysis = analysis_manager_.get<analysis::FlopAnalysis>();
×
NEW
64
    auto flop = flop_analysis.get_if_available_for_codegen(&node_);
×
NEW
65
    if (!flop.is_null()) {
×
NEW
66
        std::string flop_str = language_extension_.expression(flop);
×
NEW
67
        metrics.insert({"flop", flop_str});
×
UNCOV
68
    }
×
69

70
    return InstrumentationInfo(ElementType_For, TargetType_SEQUENTIAL, loopnest_index, node_.element_id(), metrics);
×
71
};
×
72

73
} // namespace codegen
74
} // namespace sdfg
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc