My Project
Public Member Functions | List of all members
mlir::edsc::TemplatedIndexedValue< Load, Store > Class Template Reference

#include <Helpers.h>

Public Member Functions

 TemplatedIndexedValue (Type t)
 
 TemplatedIndexedValue (Value v)
 
 TemplatedIndexedValue (ValueHandle v)
 
 TemplatedIndexedValue (const TemplatedIndexedValue &rhs)=default
 
TemplatedIndexedValue operator() ()
 
TemplatedIndexedValue operator() (ValueHandle index)
 Returns a new TemplatedIndexedValue. More...
 
template<typename... Args>
TemplatedIndexedValue operator() (ValueHandle index, Args... indices)
 
TemplatedIndexedValue operator() (ArrayRef< ValueHandle > indices)
 
TemplatedIndexedValue operator() (ArrayRef< IndexHandle > indices)
 
OperationHandle operator= (const TemplatedIndexedValue &rhs)
 Emits a store. More...
 
OperationHandle operator= (ValueHandle rhs)
 
 operator ValueHandle () const
 Emits a load when converting to a ValueHandle. More...
 
Value operator* (void) const
 Emits a load when converting to a Value. More...
 
ValueHandle getBase () const
 
ValueHandle operator+ (ValueHandle e)
 Operator overloadings. More...
 
ValueHandle operator- (ValueHandle e)
 
ValueHandle operator* (ValueHandle e)
 
ValueHandle operator/ (ValueHandle e)
 
OperationHandle operator+= (ValueHandle e)
 
OperationHandle operator-= (ValueHandle e)
 
OperationHandle operator*= (ValueHandle e)
 
OperationHandle operator/= (ValueHandle e)
 
ValueHandle operator+ (TemplatedIndexedValue e)
 
ValueHandle operator- (TemplatedIndexedValue e)
 
ValueHandle operator* (TemplatedIndexedValue e)
 
ValueHandle operator/ (TemplatedIndexedValue e)
 
OperationHandle operator+= (TemplatedIndexedValue e)
 
OperationHandle operator-= (TemplatedIndexedValue e)
 
OperationHandle operator*= (TemplatedIndexedValue e)
 
OperationHandle operator/= (TemplatedIndexedValue e)
 

Detailed Description

template<typename Load, typename Store>
class mlir::edsc::TemplatedIndexedValue< Load, Store >

A TemplatedIndexedValue brings an index notation over the template Load and Store parameters. This helper class is an abstraction purely for sugaring purposes and allows writing compact expressions such as:

// `IndexedValue` provided by default in the mlir::edsc namespace.
using IndexedValue =
TemplatedIndexedValue<intrinsics::load, intrinsics::store>;
IndexedValue A(...), B(...), C(...);
For(ivs, zeros, shapeA, ones, {
C(ivs) = A(ivs) + B(ivs)
});

Assigning to an IndexedValue emits an actual Store operation, while converting an IndexedValue to a ValueHandle emits an actual Load operation.

Constructor & Destructor Documentation

◆ TemplatedIndexedValue() [1/4]

template<typename Load , typename Store >
mlir::edsc::TemplatedIndexedValue< Load, Store >::TemplatedIndexedValue ( Type  t)
inlineexplicit

◆ TemplatedIndexedValue() [2/4]

template<typename Load , typename Store >
mlir::edsc::TemplatedIndexedValue< Load, Store >::TemplatedIndexedValue ( Value  v)
inlineexplicit

◆ TemplatedIndexedValue() [3/4]

template<typename Load , typename Store >
mlir::edsc::TemplatedIndexedValue< Load, Store >::TemplatedIndexedValue ( ValueHandle  v)
inlineexplicit

◆ TemplatedIndexedValue() [4/4]

template<typename Load , typename Store >
mlir::edsc::TemplatedIndexedValue< Load, Store >::TemplatedIndexedValue ( const TemplatedIndexedValue< Load, Store > &  rhs)
default

Member Function Documentation

◆ getBase()

template<typename Load , typename Store >
ValueHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::getBase ( ) const
inline

◆ operator ValueHandle()

template<typename Load , typename Store >
mlir::edsc::TemplatedIndexedValue< Load, Store >::operator ValueHandle ( ) const
inline

Emits a load when converting to a ValueHandle.

◆ operator()() [1/5]

template<typename Load , typename Store >
TemplatedIndexedValue mlir::edsc::TemplatedIndexedValue< Load, Store >::operator() ( )
inline

◆ operator()() [2/5]

template<typename Load , typename Store >
TemplatedIndexedValue mlir::edsc::TemplatedIndexedValue< Load, Store >::operator() ( ValueHandle  index)
inline

Returns a new TemplatedIndexedValue.

◆ operator()() [3/5]

template<typename Load , typename Store >
template<typename... Args>
TemplatedIndexedValue mlir::edsc::TemplatedIndexedValue< Load, Store >::operator() ( ValueHandle  index,
Args...  indices 
)
inline

◆ operator()() [4/5]

template<typename Load , typename Store >
TemplatedIndexedValue mlir::edsc::TemplatedIndexedValue< Load, Store >::operator() ( ArrayRef< ValueHandle indices)
inline

◆ operator()() [5/5]

template<typename Load , typename Store >
TemplatedIndexedValue mlir::edsc::TemplatedIndexedValue< Load, Store >::operator() ( ArrayRef< IndexHandle indices)
inline

◆ operator*() [1/3]

template<typename Load , typename Store >
Value mlir::edsc::TemplatedIndexedValue< Load, Store >::operator* ( void  ) const
inline

Emits a load when converting to a Value.

◆ operator*() [2/3]

template<typename Load , typename Store >
ValueHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator* ( ValueHandle  e)

◆ operator*() [3/3]

template<typename Load , typename Store >
ValueHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator* ( TemplatedIndexedValue< Load, Store >  e)
inline

◆ operator*=() [1/2]

template<typename Load , typename Store >
OperationHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator*= ( ValueHandle  e)

◆ operator*=() [2/2]

template<typename Load , typename Store >
OperationHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator*= ( TemplatedIndexedValue< Load, Store >  e)
inline

◆ operator+() [1/2]

template<typename Load , typename Store >
ValueHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator+ ( ValueHandle  e)

Operator overloadings.

◆ operator+() [2/2]

template<typename Load , typename Store >
ValueHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator+ ( TemplatedIndexedValue< Load, Store >  e)
inline

◆ operator+=() [1/2]

template<typename Load , typename Store >
OperationHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator+= ( ValueHandle  e)

◆ operator+=() [2/2]

template<typename Load , typename Store >
OperationHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator+= ( TemplatedIndexedValue< Load, Store >  e)
inline

◆ operator-() [1/2]

template<typename Load , typename Store >
ValueHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator- ( ValueHandle  e)

◆ operator-() [2/2]

template<typename Load , typename Store >
ValueHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator- ( TemplatedIndexedValue< Load, Store >  e)
inline

◆ operator-=() [1/2]

template<typename Load , typename Store >
OperationHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator-= ( ValueHandle  e)

◆ operator-=() [2/2]

template<typename Load , typename Store >
OperationHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator-= ( TemplatedIndexedValue< Load, Store >  e)
inline

◆ operator/() [1/2]

template<typename Load , typename Store >
ValueHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator/ ( ValueHandle  e)

◆ operator/() [2/2]

template<typename Load , typename Store >
ValueHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator/ ( TemplatedIndexedValue< Load, Store >  e)
inline

◆ operator/=() [1/2]

template<typename Load , typename Store >
OperationHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator/= ( ValueHandle  e)

◆ operator/=() [2/2]

template<typename Load , typename Store >
OperationHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator/= ( TemplatedIndexedValue< Load, Store >  e)
inline

◆ operator=() [1/2]

template<typename Load , typename Store >
OperationHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator= ( const TemplatedIndexedValue< Load, Store > &  rhs)
inline

Emits a store.

◆ operator=() [2/2]

template<typename Load , typename Store >
OperationHandle mlir::edsc::TemplatedIndexedValue< Load, Store >::operator= ( ValueHandle  rhs)
inline

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