docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::data_flow::AtomicScalarOpImpl Class Referenceabstract

A concrete lowering ("implementation") of an AtomicScalarOpNode. More...

#include <sdfg/data_flow/library_nodes/atomic_op_node.h>

Inheritance diagram for sdfg::data_flow::AtomicScalarOpImpl:
[legend]

Public Member Functions

virtual ~AtomicScalarOpImpl ()=default
 AtomicScalarOpImpl (const AtomicScalarOpImpl &)=delete
AtomicScalarOpImpl & operator= (const AtomicScalarOpImpl &)=delete
virtual std::string_view type_name () const =0
ImplementationType implementation_type () const
 The implementation type this impl corresponds to.
virtual bool supports (types::PrimitiveType data_type, AtomicOpType op) const =0
 Whether this implementation supports the given (data type, op) combination.

Protected Member Functions

 AtomicScalarOpImpl ()

Detailed Description

A concrete lowering ("implementation") of an AtomicScalarOpNode.

An AtomicScalarOpImpl bundles two pieces of knowledge that used to be spread across AtomicScalarOpNode (verify_impl_exits_*) and the dispatchers:

  • which (data type, atomic op) combinations it actually supports, and
  • how to generate code for a node using this implementation.

Each concrete implementation is a stateless singleton, obtained via its instance() method, and is tied to exactly one ImplementationType. This keeps a node's implementation_type in sync with the impl used to reason about and lower it.

Constructor & Destructor Documentation

◆ ~AtomicScalarOpImpl()

virtual sdfg::data_flow::AtomicScalarOpImpl::~AtomicScalarOpImpl ( )
virtualdefault

◆ AtomicScalarOpImpl() [1/2]

sdfg::data_flow::AtomicScalarOpImpl::AtomicScalarOpImpl ( const AtomicScalarOpImpl & )
delete

◆ AtomicScalarOpImpl() [2/2]

sdfg::data_flow::AtomicScalarOpImpl::AtomicScalarOpImpl ( )
inlineprotected

Member Function Documentation

◆ implementation_type()

ImplementationType sdfg::data_flow::AtomicScalarOpImpl::implementation_type ( ) const
inline

The implementation type this impl corresponds to.

◆ operator=()

AtomicScalarOpImpl & sdfg::data_flow::AtomicScalarOpImpl::operator= ( const AtomicScalarOpImpl & )
delete

◆ supports()

virtual bool sdfg::data_flow::AtomicScalarOpImpl::supports ( types::PrimitiveType data_type,
AtomicOpType op ) const
pure virtual

Whether this implementation supports the given (data type, op) combination.

Implemented in sdfg::data_flow::AtomicScalarOpCPUImpl, sdfg::data_flow::AtomicScalarOpCudaImpl, and sdfg::data_flow::AtomicScalarOpRocmImpl.

◆ type_name()

virtual std::string_view sdfg::data_flow::AtomicScalarOpImpl::type_name ( ) const
pure virtual

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