docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
extended_block_hoisting.h
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4
11#include "sdfg/passes/pass.h"
15
16namespace sdfg {
17namespace passes {
18
20private:
21 bool equal_offloading_nodes(
23 offloading::DataOffloadingNode* offloading_node1,
25 offloading::DataOffloadingNode* offloading_node2
26 );
28 get_offloading_node_iedge(data_flow::DataFlowGraph& dfg, offloading::DataOffloadingNode* offloading_node);
29
30protected:
31 virtual bool is_libnode_allowed(
33 ) override;
34
36
39 ) override;
42 ) override;
43
44public:
46
47 static std::string name() {
48 return "ExtendedBlockHoisting";
49 }
50};
51
53
54} // namespace passes
55} // 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
Base class for all library nodes in the dataflow graph.
Definition library_node.h:106
Edge in the dataflow graph representing data movement.
Definition memlet.h:131
Name does not match current function.
Definition data_offloading_node.h:49
BlockHoisting(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager)
static std::string name()
Definition extended_block_hoisting.h:47
virtual void if_else_extract_invariant_libnode_front(structured_control_flow::Sequence &parent, structured_control_flow::IfElse &if_else) override
virtual bool equal_libnodes(structured_control_flow::Block &block1, structured_control_flow::Block &block2) override
ExtendedBlockHoisting(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager)
virtual bool is_libnode_allowed(structured_control_flow::Sequence &body, data_flow::DataFlowGraph &dfg, data_flow::LibraryNode *libnode) override
virtual void if_else_extract_invariant_libnode_back(structured_control_flow::Sequence &parent, structured_control_flow::IfElse &if_else) override
Definition pass.h:55
A control flow node representing a basic block with dataflow computations.
Definition block.h:42
Represents a conditional if-else control flow node with multiple cases.
Definition if_else.h:47
A sequential container of control flow nodes.
Definition sequence.h:52
Library node definitions for calling functions beyond simple instructions.
Edges in the dataflow graph representing data movement.
Definition function_builder.h:10
Definition approximate_math.h:12
VisitorPass< ExtendedBlockHoisting > ExtendedBlockHoistingPass
Definition extended_block_hoisting.h:52
Definition analysis.h:7