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

#include <sdfg/passes/expansion/lib_node_expansion_context.h>

Inheritance diagram for sdfg::passes::expansion::LibNodeExpansionContext:
[legend]

Public Member Functions

 LibNodeExpansionContext (builder::StructuredSDFGBuilder &builder, Sequence &parent, size_t child_idx, Block &block, data_flow::LibraryNode &node, const Options &options=Options::empty())
std::unique_ptr< LibNodeExpander::AccessNodeExpand > replacement_requires_access_nodes (const std::vector< LibNodeExpander::InputUse > &access_dirs) override
 start expansion with access nodes.
LibNodeExpander::ExpandOutcome successfully_modified_node_only () override
 Only properties of the node under expansion had to be changed, no change to the dataflow were necessary.
LibNodeExpander::ExpandOutcome unable () override
LibNodeExpander::ExpandOutcome unapplicable () override
const Options & options () const override
 Compile options for this run, so expanders can select variants (e.g.
bool expanded () const
bool dropped_block () const
void cleanup ()
Public Member Functions inherited from sdfg::passes::LibNodeExpander::ExpandContext
virtual ~ExpandContext ()=default

Constructor & Destructor Documentation

◆ LibNodeExpansionContext()

sdfg::passes::expansion::LibNodeExpansionContext::LibNodeExpansionContext ( builder::StructuredSDFGBuilder & builder,
Sequence & parent,
size_t child_idx,
Block & block,
data_flow::LibraryNode & node,
const Options & options = Options::empty() )
inline

Member Function Documentation

◆ cleanup()

void sdfg::passes::expansion::LibNodeExpansionContext::cleanup ( )

◆ dropped_block()

bool sdfg::passes::expansion::LibNodeExpansionContext::dropped_block ( ) const
inline

◆ expanded()

bool sdfg::passes::expansion::LibNodeExpansionContext::expanded ( ) const
inline

◆ options()

const Options & sdfg::passes::expansion::LibNodeExpansionContext::options ( ) const
inlineoverridevirtual

Compile options for this run, so expanders can select variants (e.g.

an online vs. multi-pass lowering) via registered option keys.

Implements sdfg::passes::LibNodeExpander::ExpandContext.

◆ replacement_requires_access_nodes()

std::unique_ptr< LibNodeExpander::AccessNodeExpand > sdfg::passes::expansion::LibNodeExpansionContext::replacement_requires_access_nodes ( const std::vector< LibNodeExpander::InputUse > & access_dirs)
overridevirtual

start expansion with access nodes.

The expander may cut the dataflow into input, and output. If there is a return value, then the access nodes can be provided. Whether this required cutting up the original dataflow or not does not matter

Actual replacement of the operation must be done via one of the methods of AccessNodeExpand, such as replace_with_sequence().

Parameters
access_dirslist matching the input_conns of the node. Indicating for each input, whether it will be needed as read and/or write nodes ( because ptr-inputs may result in indirect reads or writes or both). Non-ptr inputs may only be skipped or used as Scalar)
Returns
null, if cannot be provided. Otherwise a handle to create arbitrarily many copies of access nodes fitting the access_dirs

Implements sdfg::passes::LibNodeExpander::ExpandContext.

◆ successfully_modified_node_only()

LibNodeExpander::ExpandOutcome sdfg::passes::expansion::LibNodeExpansionContext::successfully_modified_node_only ( )
overridevirtual

Only properties of the node under expansion had to be changed, no change to the dataflow were necessary.

Implements sdfg::passes::LibNodeExpander::ExpandContext.

◆ unable()

LibNodeExpander::ExpandOutcome sdfg::passes::expansion::LibNodeExpansionContext::unable ( )
overridevirtual

◆ unapplicable()

LibNodeExpander::ExpandOutcome sdfg::passes::expansion::LibNodeExpansionContext::unapplicable ( )
overridevirtual

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