docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::passes::BlockHoisting Class Reference

Currently only looks at the first and lost block in the sequence of a if/else or Map node and thus provides very limited hoisting by itself. More...

#include <sdfg/passes/offloading/code_motion/block_hoisting.h>

Inheritance diagram for sdfg::passes::BlockHoisting:
[legend]

Public Member Functions

 BlockHoisting (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager)
virtual bool accept (structured_control_flow::Map &map_stmt) override
virtual bool accept (structured_control_flow::IfElse &if_else) override
Public Member Functions inherited from sdfg::visitor::NonStoppingStructuredSDFGVisitor
 NonStoppingStructuredSDFGVisitor (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager)
bool visit () override
Public Member Functions inherited from sdfg::visitor::StructuredSDFGVisitor
 StructuredSDFGVisitor (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager)
virtual ~StructuredSDFGVisitor ()=default
virtual bool accept (structured_control_flow::Block &node)
virtual bool accept (structured_control_flow::AssignmentBlock &node)
virtual bool accept (structured_control_flow::Sequence &node)
virtual bool accept (structured_control_flow::Return &node)
virtual bool accept (structured_control_flow::For &node)
virtual bool accept (structured_control_flow::While &node)
virtual bool accept (structured_control_flow::Continue &node)
virtual bool accept (structured_control_flow::Break &node)
virtual bool accept (structured_control_flow::Reduce &node)

Static Public Member Functions

static std::string name ()

Protected Member Functions

virtual bool is_libnode_allowed (structured_control_flow::Sequence &body, data_flow::DataFlowGraph &dfg, data_flow::LibraryNode *libnode)
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)
virtual void if_else_extract_invariant_libnode_back (structured_control_flow::Sequence &parent, structured_control_flow::IfElse &if_else)
Protected Member Functions inherited from sdfg::visitor::NonStoppingStructuredSDFGVisitor
bool visit_internal (structured_control_flow::Sequence &parent) override

Additional Inherited Members

Protected Attributes inherited from sdfg::visitor::StructuredSDFGVisitor
builder::StructuredSDFGBuilder & builder_
analysis::AnalysisManager & analysis_manager_

Detailed Description

Currently only looks at the first and lost block in the sequence of a if/else or Map node and thus provides very limited hoisting by itself.

Constructor & Destructor Documentation

◆ BlockHoisting()

sdfg::passes::BlockHoisting::BlockHoisting ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager )

Member Function Documentation

◆ accept() [1/2]

virtual bool sdfg::passes::BlockHoisting::accept ( structured_control_flow::IfElse & if_else)
overridevirtual

◆ accept() [2/2]

virtual bool sdfg::passes::BlockHoisting::accept ( structured_control_flow::Map & map_stmt)
overridevirtual

◆ equal_libnodes()

virtual bool sdfg::passes::BlockHoisting::equal_libnodes ( structured_control_flow::Block & block1,
structured_control_flow::Block & block2 )
protectedvirtual

◆ if_else_extract_invariant_libnode_back()

virtual void sdfg::passes::BlockHoisting::if_else_extract_invariant_libnode_back ( structured_control_flow::Sequence & parent,
structured_control_flow::IfElse & if_else )
protectedvirtual

◆ if_else_extract_invariant_libnode_front()

virtual void sdfg::passes::BlockHoisting::if_else_extract_invariant_libnode_front ( structured_control_flow::Sequence & parent,
structured_control_flow::IfElse & if_else )
protectedvirtual

◆ is_libnode_allowed()

virtual bool sdfg::passes::BlockHoisting::is_libnode_allowed ( structured_control_flow::Sequence & body,
data_flow::DataFlowGraph & dfg,
data_flow::LibraryNode * libnode )
protectedvirtual

◆ name()

std::string sdfg::passes::BlockHoisting::name ( )
inlinestatic

The documentation for this class was generated from the following file: