AI Engine API User Guide (AIE) 2021.2
expr.hpp File Reference

Expression templates types.More...

Detailed Description

Expression templates types.

#include "aie_types.hpp"

Classes

struct aie::binary_op< Parent1, Parent2, Operation::Max >
struct aie::binary_op< Parent1, Parent2, Operation::Min >
struct aie::binary_op_common< Parent1, Parent2, Op >
struct aie::is_accum_op< T >
struct aie::is_accum_op< unary_op< Parent, Op > >
struct aie::is_binary_op< T >
struct aie::is_binary_op< binary_op< Parent1, Parent2, Op > >
struct aie::is_elem_op< T >
struct aie::is_elem_op< binary_op< Parent1, Parent2, Op > >
struct aie::is_elem_op< unary_op< Parent, Op > >
struct aie::is_unary_op< T >
struct aie::is_unary_op< unary_op< Parent, Op > >
struct aie::is_vector_op< T >
struct aie::is_vector_op< binary_op< Parent1, Parent2, Op > >
struct aie::is_vector_op< unary_op< Parent, Op > >
struct aie::op_result_helper< T, Op >
struct aie::op_result_helper< binary_op< Parent1, Parent2, ParentOp >, Op >
struct aie::op_result_helper< detail::vector_elem_const_ref< T, Elems >, Op >
struct aie::op_result_helper< detail::vector_elem_ref< T, Elems >, Op >
struct aie::op_result_helper< Parent, Operation::None >
struct aie::op_result_helper< unary_op< Parent, ParentOp >, Op >
struct aie::op_value_type_helper< T >
struct aie::op_value_type_helper< binary_op< Parent1, Parent2, Op > >
struct aie::op_value_type_helper< detail::vector_elem_const_ref< T, Elems > >
struct aie::op_value_type_helper< detail::vector_elem_ref< T, Elems > >
struct aie::op_value_type_helper< unary_op< Parent, Op > >
struct aie::op_value_type_helper< vector< T, Elems > >
struct aie::unary_op< Parent, Operation::Abs >
struct aie::unary_op< Parent, Operation::Acc_Add >
struct aie::unary_op< Parent, Operation::Acc_Sub >
struct aie::unary_op< Parent, Operation::Conj >
struct aie::unary_op< Parent, Operation::None >
struct aie::unary_op_common< Parent, Op >

Namespaces

namespace aie

Macros

#define __AIE_API_EXPR__HPP__
#define BINARY_OP(op)
More...
#define BINARY_OP_IMPL(op)
More...
#define UNARY_OP(op)
More...
#define UNARY_OP_IMPL(op)
More...

Typedefs

template
using aie::op_result_type_t= typename op_result_helper< T, Op >::type
template
using aie::op_value_type_t= typename op_value_type_helper< T >::type

Enumerations

enum class aie::Operation{
aie::None,aie::Acc_Add,aie::Acc_Sub,aie::Abs,
aie::Conj,aie::Max,aie::Min
}

Class Documentation

aie::op_result_helper

struct aie::op_result_helper
templateOperationOp>
struct aie::op_result_helper< T, Op >
Class Members
typedef T type

aie::op_result_helper< binary_op< Parent1, Parent2, ParentOp >, Op >

struct aie::op_result_helper< binary_op< Parent1, Parent2, ParentOp >, Op >
templateOperationParentOp, OperationOp>
struct aie::op_result_helper< binary_op< Parent1, Parent2, ParentOp >, Op >
Class Members
typedef typename result_type, Op >::type type

aie::op_result_helper< detail::vector_elem_const_ref< T, Elems >, Op >

struct aie::op_result_helper< detail::vector_elem_const_ref< T, Elems >, Op >
templateOperationOp>
struct aie::op_result_helper< detail::vector_elem_const_ref< T, Elems >, Op >
Class Members
typedef T type

aie::op_result_helper< detail::vector_elem_ref< T, Elems >, Op >

struct aie::op_result_helper< detail::vector_elem_ref< T, Elems >, Op >
templateOperationOp>
struct aie::op_result_helper< detail::vector_elem_ref< T, Elems >, Op >
Class Members
typedef T type

aie::op_result_helper< Parent, Operation::None >

struct aie::op_result_helper< Parent, Operation::None >
template
struct aie::op_result_helper< Parent, Operation::None >
Class Members
typedef Parent type

aie::op_result_helper< unary_op< Parent, ParentOp >, Op >

struct aie::op_result_helper< unary_op< Parent, ParentOp >, Op >
templateOperationParentOp, OperationOp>
struct aie::op_result_helper< unary_op< Parent, ParentOp >, Op >
Class Members
typedef typename result_type, Op >::type type

aie::op_value_type_helper

struct aie::op_value_type_helper
template
struct aie::op_value_type_helper< T >
Class Members
typedef T type

aie::op_value_type_helper< binary_op< Parent1, Parent2, Op > >

struct aie::op_value_type_helper< binary_op< Parent1, Parent2, Op > >
templateOperationOp>
struct aie::op_value_type_helper< binary_op< Parent1, Parent2, Op > >
Class Members
typedef typename value_type type

aie::op_value_type_helper< detail::vector_elem_const_ref< T, Elems > >

struct aie::op_value_type_helper< detail::vector_elem_const_ref< T, Elems > >
template
struct aie::op_value_type_helper< detail::vector_elem_const_ref< T, Elems > >
Class Members
typedef typename value_type type

aie::op_value_type_helper< detail::vector_elem_ref< T, Elems > >

struct aie::op_value_type_helper< detail::vector_elem_ref< T, Elems > >
template
struct aie::op_value_type_helper< detail::vector_elem_ref< T, Elems > >
Class Members
typedef typename value_type type

aie::op_value_type_helper< unary_op< Parent, Op > >

struct aie::op_value_type_helper< unary_op< Parent, Op > >
templateOperationOp>
struct aie::op_value_type_helper< unary_op< Parent, Op > >
Class Members
typedef typename value_type type

aie::op_value_type_helper< vector< T, Elems > >

struct aie::op_value_type_helper< vector< T, Elems > >
template
struct aie::op_value_type_helper< vector< T, Elems > >
Class Members
typedef typename value_type type

Macro Definition Documentation

BINARY_OP

#define BINARY_OP ( op )
Value:
\
template \
struct binary_op : publicbinary_op_common \
{ \
using parent1_type = Parent1; \
using parent2_type = Parent2; \
using result_type = op_result_type_t; \
using value_type = op_value_type_t; \
\
using binary_op_common::binary_op_common; \
\
result_type operator()() const; \
};

BINARY_OP_IMPL

#define BINARY_OP_IMPL ( op )
Value:
template< typenameParent1, typenameParent2> \
__attribute__((always_inline)) \
typename binary_op::result_type binary_op::operator()() const

UNARY_OP

#define UNARY_OP ( op )
Value:
template< typenameParent> \
struct unary_op : publicunary_op_common \
{ \
using parent_type = Parent; \
using result_type = op_result_type_t; \
using value_type = op_value_type_t; \
\
using unary_op_common::unary_op_common; \
\
result_type operator()() const; \
};

UNARY_OP_IMPL

#define UNARY_OP_IMPL ( op )
Value:
template< typenameParent> \
__attribute__((always_inline)) \
typename unary_op::result_type unary_op::operator()() const