18#include "symengine/symengine_rcp.h"
29 bool is_invariant_move(
32 bool is_invariant_view(
36 bool no_loop_carried_dependencies =
true
38 bool is_invariant_libnode(
42 bool no_loop_carried_dependencies =
true
52 bool map_invariant_move(
57 bool map_invariant_view(
62 bool map_invariant_libnode_front(
67 bool map_invariant_libnode_back(
75 void if_else_extract_invariant_front(
81 bool equal_offloading_nodes(
106 return "BlockHoisting";
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
Name does not match current function.
Definition data_offloading_node.h:49
static std::string name()
Definition block_hoisting.h:105
virtual bool accept(structured_control_flow::IfElse &if_else) override
virtual void if_else_extract_invariant_libnode_back(structured_control_flow::Sequence &parent, structured_control_flow::IfElse &if_else)
BlockHoisting(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)
virtual bool accept(structured_control_flow::Map &map_stmt) override
virtual bool equal_libnodes(structured_control_flow::Block &block1, structured_control_flow::Block &block2)
virtual void if_else_extract_invariant_libnode_front(structured_control_flow::Sequence &parent, structured_control_flow::IfElse &if_else)
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
Represents a parallel map loop with configurable scheduling.
Definition map.h:47
A sequential container of control flow nodes.
Definition sequence.h:52
Definition structured_sdfg_visitor.h:53
SymEngine::RCP< const SymEngine::Symbol > Symbol
Reference-counted pointer to a SymEngine Symbol.
Definition symbolic.h:71
Library node definitions for calling functions beyond simple instructions.
Definition function_builder.h:10
Definition approximate_math.h:12
VisitorPass< BlockHoisting > BlockHoistingPass
Definition block_hoisting.h:114
Symbolic system for integer-based symbol analysis.