docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::passes::CodeLibNodeExpander< T > Class Template Reference

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

Inheritance diagram for sdfg::passes::CodeLibNodeExpander< T >:
[legend]

Public Member Functions

 CodeLibNodeExpander (const data_flow::LibraryNodeCode &code)
const data_flow::LibraryNodeCode & code () const
 The fixed library node code this expander dispatches on.
const data_flow::LibraryNodeCode * matched_code () const override
 If this expander dispatches on a single, fixed library node code, expose it here.
const LibNodeExpander * for_lib_node (const data_flow::LibraryNode &node) const override
 Prefiltering of libnodes.
Public Member Functions inherited from sdfg::passes::TypedLibNodeExpander< T >
const LibNodeExpander * for_lib_node (const data_flow::LibraryNode &node) const override
 Prefiltering of libnodes.
virtual LibNodeExpander::ExpandOutcome handle_expand (LibNodeExpander::ExpandContext &context, structured_control_flow::Block &block, T &node) const =0
LibNodeExpander::ExpandOutcome handle_expand (LibNodeExpander::ExpandContext &context, structured_control_flow::Block &block, data_flow::LibraryNode &node) const override
Public Member Functions inherited from sdfg::passes::LibNodeExpander
virtual ~LibNodeExpander ()=default

Additional Inherited Members

Public Types inherited from sdfg::passes::LibNodeExpander
enum class  InputUse {
  Skip = 0 , Scalar , IndirectRead , IndirectWrite ,
  IndirectReadWrite
}

Constructor & Destructor Documentation

◆ CodeLibNodeExpander()

template<typename T>
sdfg::passes::CodeLibNodeExpander< T >::CodeLibNodeExpander ( const data_flow::LibraryNodeCode & code)
inline

Member Function Documentation

◆ code()

template<typename T>
const data_flow::LibraryNodeCode & sdfg::passes::CodeLibNodeExpander< T >::code ( ) const
inline

The fixed library node code this expander dispatches on.

◆ for_lib_node()

template<typename T>
const LibNodeExpander * sdfg::passes::CodeLibNodeExpander< T >::for_lib_node ( const data_flow::LibraryNode & node) const
inlineoverridevirtual

Prefiltering of libnodes.

Allows that an expander sub-divides based on types, codes or impl-types or sth. more elaborate, because we get ready to transform

Parameters
node
Returns
nullptr if not applicable

Reimplemented from sdfg::passes::LibNodeExpander.

Reimplemented in sdfg::gpu::GpuMmaExpander.

◆ matched_code()

template<typename T>
const data_flow::LibraryNodeCode * sdfg::passes::CodeLibNodeExpander< T >::matched_code ( ) const
inlineoverridevirtual

If this expander dispatches on a single, fixed library node code, expose it here.

This lets aggregating expanders (e.g. SwitchExpander) build an efficient code -> expander map and jump straight to the right expander, instead of testing every expander linearly via for_lib_node.

Returns
the matched code, or nullptr if this expander does not dispatch purely by code.

Reimplemented from sdfg::passes::LibNodeExpander.


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