docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
block_fusion.h
Go to the documentation of this file.
1#pragma once
2
3#include "sdfg/passes/pass.h"
5
6namespace sdfg {
7namespace passes {
8
10private:
15 bool ignore_libnodes_;
16
17 bool can_be_applied(data_flow::DataFlowGraph& first_graph, data_flow::DataFlowGraph& second_graph);
18
19 void apply(structured_control_flow::Block& first_block, structured_control_flow::Block& second_block);
20
21public:
24 analysis::AnalysisManager& analysis_manager,
25 bool ignore_libnodes = false
26 );
27
28 static std::string name() {
29 return "BlockFusion";
30 };
31
33};
34
36
38public:
39 std::string name() override {
40 return BlockFusion::name();
41 }
42
44 BlockFusion visitor(builder, analysis_manager, true);
45 return visitor.visit();
46 }
47};
48
49} // namespace passes
50} // namespace sdfg
Definition analysis.h:53
Note: Even though the class references unique_ptr, it will never delete an SDFG it has a reference to...
Definition structured_sdfg_builder.h:44
Definition data_flow_graph.h:29
Definition block_fusion.h:9
static std::string name()
Definition block_fusion.h:28
bool accept(structured_control_flow::Sequence &node) override
BlockFusion(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, bool ignore_libnodes=false)
Definition block_fusion.h:37
bool run_pass(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager) override
Definition block_fusion.h:43
std::string name() override
Definition block_fusion.h:39
Definition pass.h:55
A control flow node representing a basic block with dataflow computations.
Definition block.h:42
A sequential container of control flow nodes.
Definition sequence.h:52
Definition structured_sdfg_visitor.h:53
Definition function_builder.h:10
Definition approximate_math.h:12
VisitorPass< BlockFusion > BlockFusionPass
Definition block_fusion.h:35
Definition control_flow_node.h:16
Definition analysis.h:7