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

AIE API main entry point.More...

Detailed Description

AIE API main entry point.

#include
#include
#include
#include "types.hpp"
#include "aie_doc.hpp"
#include "aie_types.hpp"
#include "expr.hpp"
#include "detail/abs.hpp"
#include "detail/abs_square.hpp"
#include "detail/accumulate.hpp"
#include "detail/add.hpp"
#include "detail/bit.hpp"
#include "detail/blend.hpp"
#include "detail/cfr.hpp"
#include "detail/compare.hpp"
#include "detail/conj.hpp"
#include "detail/elementary.hpp"
#include "detail/fft.hpp"
#include "detail/filter.hpp"
#include "detail/interleave.hpp"
#include "detail/ld_st.hpp"
#include "detail/linear_approx.hpp"
#include "detail/parallel_lookup.hpp"
#include "detail/lut.hpp"
#include "detail/max_min.hpp"
#include "detail/mmul.hpp"
#include "detail/mul.hpp"
#include "detail/neg.hpp"
#include "detail/shift.hpp"
#include "detail/reverse.hpp"
#include "detail/shuffle.hpp"
#include "detail/square.hpp"
#include "detail/vector_accum_cast.hpp"

Classes

struct aie::is_valid_elem_op< T1, T2 >
struct aie::is_valid_mul_op< T1, T2 >
struct aie::is_valid_mul_op< binary_op< Parent1, Parent2, Op >, T2 >
struct aie::is_valid_mul_op< T, binary_op< Parent1, Parent2, Op > >
struct aie::is_valid_mul_op< T, unary_op< Parent, Op > >
struct aie::is_valid_mul_op< unary_op< Parent, Op >, T2 >
struct aie::is_valid_size< T, T2, Other >
struct aie::is_valid_size< T, T2 >
struct aie::mmul< M_Elems, K_Elems, N_Elems, TypeA, TypeB, AccumTag >
struct aie::operand_base_type< T >
struct aie::operand_base_type< binary_op< Parent1, Parent2, Op > >
struct aie::operand_base_type< detail::vector_elem_const_ref< T, Elems > >
struct aie::operand_base_type< detail::vector_elem_ref< T, Elems > >
struct aie::operand_base_type< unary_op< Parent, Op > >
struct aie::sliding_mul_ops< Lanes, Points, CoeffStep, DataStepX, DataStepY, CoeffType, DataType, AccumTag >
struct aie::sliding_mul_sym_ops< Lanes, Points, CoeffStep, DataStepX, DataStepY, CoeffType, DataType, AccumTag >
struct aie::sliding_mul_sym_uct_ops< Lanes, Points, CoeffStep, DataStep, CoeffType, DataType, AccumTag >

Namespaces

namespace aie

Macros

#define __AIE_API_AIE__HPP__
#define AIE_API_CXX_VERSION202002L

Typedefs

template
using aie::cfr= detail::cfr< T >
templateaie_dm_resourceResource = aie_dm_resource::none>
using aie::circular_iterator= detail::circular_iterator< T, Elems, 1, Resource >
More...
templateaie_dm_resourceResource = aie_dm_resource::none>
using aie::const_circular_iterator= detail::const_circular_iterator< T, Elems, 1, Resource >
More...
template
using aie::const_pattern_iterator= detail::const_pattern_iterator< T, Steps >
template
using aie::const_random_circular_iterator= detail::const_random_circular_iterator< T, Elems, 1 >
More...
template<DecoratedElemBaseTypeT, unsigned Elems,aie_dm_resourceResource = aie_dm_resource::none>
using aie::const_restrict_vector_iterator= detail::const_restrict_vector_iterator< T, Elems, 1, Resource >
template<DecoratedElemBaseTypeT, unsigned Elems,aie_dm_resourceResource = aie_dm_resource::none>
using aie::const_vector_iterator= detail::const_vector_iterator< T, Elems, 1, Resource >
template
using aie::fft_dit= detail::fft_dit< Vectorization, detail::fft_get_stage< Vectorization, Radix, T1, T2 >(), Radix, T1, T2 >
More...
templateParallelLUTMyLUT>
using aie::linear_approx= detail::linear_approx< T, MyLUT >
template
using aie::lut= detail::lut< ParallelAccesses, OffsetType, SlopeType >
template
using aie::operand_base_type_t= typename operand_base_type< Utils::remove_all_t< T > >::type
templateParallelLUTMyLUT>
using aie::parallel_lookup= detail::parallel_lookup< T, MyLUT >
template
using aie::pattern_iterator= detail::pattern_iterator< T, Steps >
template
using aie::random_circular_iterator= detail::random_circular_iterator< T, Elems, 1 >
More...
template<DecoratedElemBaseTypeT, unsigned Elems,aie_dm_resourceResource = aie_dm_resource::none>
using aie::restrict_vector_iterator= detail::restrict_vector_iterator< T, Elems, 1, Resource >
templateElemBaseTypeCoeffType,ElemBaseTypeDataType,AccumElemBaseTypeAccumTag = detail::default_accum_tag_t>
using aie::sliding_mul_sym_x_ops= sliding_mul_sym_ops< Lanes, Points, CoeffStep, DataStepX, 1, CoeffType, DataType, AccumTag >
More...
templateElemBaseTypeCoeffType,ElemBaseTypeDataType,AccumElemBaseTypeAccumTag = detail::default_accum_tag_t>
using aie::sliding_mul_sym_xy_ops= sliding_mul_sym_ops< Lanes, Points, CoeffStep, DataStepXY, DataStepXY, CoeffType, DataType, AccumTag >
More...
templateElemBaseTypeCoeffType,ElemBaseTypeDataType,AccumElemBaseTypeAccumTag = detail::default_accum_tag_t>
using aie::sliding_mul_sym_y_ops= sliding_mul_sym_ops< Lanes, Points, CoeffStep, 1, DataStepY, CoeffType, DataType, AccumTag >
More...
templateElemBaseTypeCoeffType,ElemBaseTypeDataType,AccumElemBaseTypeAccumTag = detail::default_accum_tag_t>
using aie::sliding_mul_x_ops= sliding_mul_ops< Lanes, Points, CoeffStep, DataStepX, 1, CoeffType, DataType, AccumTag >
More...
templateElemBaseTypeCoeffType,ElemBaseTypeDataType,AccumElemBaseTypeAccumTag = detail::default_accum_tag_t>
using aie::sliding_mul_xy_ops= sliding_mul_ops< Lanes, Points, CoeffStep, DataStepXY, DataStepXY, CoeffType, DataType, AccumTag >
More...
templateElemBaseTypeCoeffType,ElemBaseTypeDataType,AccumElemBaseTypeAccumTag = detail::default_accum_tag_t>
using aie::sliding_mul_y_ops= sliding_mul_ops< Lanes, Points, CoeffStep, 1, DataStepY, CoeffType, DataType, AccumTag >
More...
template<DecoratedElemBaseTypeT, unsigned Elems,aie_dm_resourceResource = aie_dm_resource::none>
using aie::vector_iterator= detail::vector_iterator< T, Elems, 1, Resource >

Functions

template<ElemE>
constexpr auto aie::abs(const E &a) -> operand_base_type_t< E >
More...
template<VectorVec>
constexpr auto aie::abs(const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
templateComplexVectorVec>
constexpr auto aie::abs_square(const Vec &v, int shift=0)
More...
template
constexpr vector< float, Elems > aie::abs_square(const vector< cfloat, Elems > &v)
More...
templateAccumOrOpAcc,VectorVecCoeff = void,VectorVecData = void, Vector... NextVecData>
auto aie::accumulate(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, const NextVecData &...next_data) -> operand_base_type_t< Acc >
More...
templateAccumElemBaseTypeAccumTag = accauto,VectorVecCoeff = void,VectorVecData = void, Vector... NextVecData>
auto aie::accumulate(const VecCoeff &coeff, const VecData &data, const NextVecData &...next_data)
templateAccumElemBaseTypeAccumTag = accauto,VectorVecCoeff = void,VectorVecData = void, Vector... NextVecData>
auto aie::accumulate(const VecCoeff &coeff, unsigned coeff_start, const VecData &data, const NextVecData &...next_data) -> accum< std::conditional_t< std::is_same_v< AccumTag,accauto>, detail::default_accum_tag_t< typename VecCoeff::value_type, typename VecData::value_type >, AccumTag >, Lanes >
More...
template<AccumAcc,VectorVec>
Acc aie::add(const Acc &acc, const Vec &v)
More...
template<AccumAcc,ElemE>
Acc aie::add(const Acc &acc, E a)
More...
template<VectorVec,ElemE>
auto aie::add(const Vec &v, E a) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec1,VectorVec2>
auto aie::add(const Vec1 &v1, const Vec2 &v2) ->aie_dm_resource_remove_t< Vec1 >
More...
template<ElemE,VectorVec>
auto aie::add(E a, const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template
T aie::add(T a, T b)
template<VectorVec>
Vec::value_type aie::add_reduce(const Vec &v)
template<VectorVec, Vector... Others>
auto aie::add_reduce_v(const Vec &v, const Others &... others) ->aie_dm_resource_remove_t< Vec >
templateaie_dm_resourceResource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_circular(T *base)
More...
template<aie_dm_resourceResource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_circular(T *base, size_t n)
More...
template<aie_dm_resourceResource = aie_dm_resource::none, typename T = void, size_t Elems = 0>
constexpr auto aie::begin_circular(T(&base)[Elems])
More...
template
constexpr auto aie::begin_pattern(T *base, Offsets &&... offsets)
template
constexpr auto aie::begin_random_circular(T *base)
More...
template
constexpr auto aie::begin_random_circular(T *base, size_t n)
More...
template
constexpr auto aie::begin_random_circular(T(&base)[Elems])
More...
templateaie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
constexpr auto aie::begin_restrict_vector(const T *base)
More...
templateaie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
constexpr auto aie::begin_restrict_vector(T *base)
More...
templateaie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
constexpr auto aie::begin_vector(const T *base)
More...
templateaie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
constexpr auto aie::begin_vector(T *base)
More...
templateaie_dm_resourceResource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_vector_circular(T *base)
More...
templateaie_dm_resourceResource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_vector_circular(T *base, size_t n)
More...
templateaie_dm_resourceResource = aie_dm_resource::none, typename T = void, size_t ArrayElems = 0>
constexpr auto aie::begin_vector_circular(T(&base)[ArrayElems])
More...
templateaie_dm_resourceResource = aie_dm_resource::none, DecoratedElemBaseType... Types>
constexpr auto aie::begin_vectors(Types *...ptrs)
template<VectorVec1,VectorVec2>
auto aie::bit_and(const Vec1 &v1, const Vec2 &v2) ->aie_dm_resource_remove_t< Vec1 >
More...
template<ElemE,VectorVec>
auto aie::bit_and(E a, const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec>
auto aie::bit_not(const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec1,VectorVec2>
auto aie::bit_or(const Vec1 &v1, const Vec2 &v2) ->aie_dm_resource_remove_t< Vec1 >
More...
template<ElemE,VectorVec>
auto aie::bit_or(E a, const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec1,VectorVec2>
auto aie::bit_xor(const Vec1 &v1, const Vec2 &v2) ->aie_dm_resource_remove_t< Vec1 >
More...
template<ElemE,VectorVec>
auto aie::bit_xor(E a, const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template<ElemE, unsigned Elems = native_vector_length_v>
vector< operand_base_type_t< E >, Elems > aie::broadcast(E a)
More...
templateaie_dm_resourceResource = aie_dm_resource::none, typename T = void>
constexpr const_circular_iterator< T, Elems, Resource > aie::cbegin_circular(const T *base)
More...
template<aie_dm_resourceResource = aie_dm_resource::none, typename T = void>
constexpr const_circular_iterator< T, dynamic_extent, Resource > aie::cbegin_circular(const T *base, size_t n)
More...
template<aie_dm_resourceResource = aie_dm_resource::none, typename T = void, size_t Elems = 0>
constexpr const_circular_iterator< T, Elems, Resource > aie::cbegin_circular(const T(&base)[Elems])
More...
template
constexpr const_pattern_iterator< T, Steps > aie::cbegin_pattern(const T *base, Offsets &&... offsets)
template
constexpr auto aie::cbegin_random_circular(const T *base)
More...
template
constexpr auto aie::cbegin_random_circular(const T *base, size_t n)
More...
template
constexpr auto aie::cbegin_random_circular(const T(&base)[Elems])
More...
templateaie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
constexpr auto aie::cbegin_restrict_vector(const T *base)
More...
templateaie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
constexpr auto aie::cbegin_vector(const T *base)
More...
templateaie_dm_resourceResource = aie_dm_resource::none, typename T = void>
constexpr auto aie::cbegin_vector_circular(const T *base)
More...
templateaie_dm_resourceResource = aie_dm_resource::none, typename T = void>
constexpr auto aie::cbegin_vector_circular(const T *base, size_t n)
More...
templateaie_dm_resourceResource = aie_dm_resource::none, typename T = void, size_t ArrayElems = 0>
constexpr auto aie::cbegin_vector_circular(const T(&base)[ArrayElems])
More...
templateaie_dm_resourceResource = aie_dm_resource::none, DecoratedElemBaseType... Types>
constexpr auto aie::cbegin_vectors(const Types *...ptrs)
template<AccumAcc, Accum... Accums>
auto aie::concat(const Acc &acc, const Accums &...accums) -> accum< typename Acc::value_type, Acc::size() *(1+sizeof...(Accums))>
More...
template<VectorVec, Vector... Vectors>
auto aie::concat(const Vec &v, const Vectors &...vectors) -> vector< typename Vec::value_type, Vec::size() *(1+sizeof...(Vectors))>
More...
template<ComplexElemE>
constexpr auto aie::conj(const E &a) -> operand_base_type_t< E >
More...
template<ComplexVectorVec>
auto aie::conj(const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template<ElemE,VectorVec>
bool aie::contains(E a, const Vec &v)
template<RealVectorVec>
auto aie::cos(const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template
auto aie::cos(E a)
More...
float aie::div(float a, float b)
template<VectorVec>
constexpr auto aie::downshift(const Vec &v, unsigned shift) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec,ElemE>
mask< Vec::size()> aie::eq(const Vec &v, E a)
More...
template<VectorVec1,VectorVec2>
mask< Vec1::size()> aie::eq(const Vec1 &v1, const Vec2 &v2)
More...
template<ElemE,VectorVec>
mask< Vec::size()> aie::eq(E a, const Vec &v)
More...
template
bool aie::eq(T a, T b)
More...
template<VectorVec1,VectorVec2>
constexpr bool aie::equal(const Vec1 &v1, const Vec2 &v2)
More...
template<VectorVec>
auto aie::filter_even(const Vec &v, unsigned step=1) -> vector< typename Vec::value_type, Vec::size()/2 >
More...
template<VectorVec>
auto aie::filter_odd(const Vec &v, unsigned step=1) -> vector< typename Vec::value_type, Vec::size()/2 >
More...
template<RealVectorVec,RealElemE>
mask< Vec::size()> aie::ge(const Vec &v, E a)
More...
template<RealVectorVec1,RealVectorVec2>
mask< Vec1::size()> aie::ge(const Vec1 &v1, const Vec2 &v2)
More...
template<RealElemE,RealVectorVec>
mask< Vec::size()> aie::ge(E a, const Vec &v)
More...
template
bool aie::ge(T a, T b)
More...
template<RealVectorVec,RealElemE>
mask< Vec::size()> aie::gt(const Vec &v, E a)
More...
template<RealVectorVec1,RealVectorVec2>
mask< Vec1::size()> aie::gt(const Vec1 &v1, const Vec2 &v2)
More...
template<RealElemE,RealVectorVec>
mask< Vec::size()> aie::gt(E a, const Vec &v)
More...
template
bool aie::gt(T a, T b)
More...
template<VectorVec1,VectorVec2>
auto aie::interleave_butterfly(const Vec1 &v1, const Vec2 &v2, unsigned step) -> std::pair<aie_dm_resource_remove_t< Vec1 >,aie_dm_resource_remove_t< Vec1 >>
template<VectorVec1,VectorVec2>
auto aie::interleave_butterfly_half(const Vec1 &v1, const Vec2 &v2, unsigned step) -> std::pair<aie_dm_resource_remove_t< Vec1 >,aie_dm_resource_remove_t< Vec1 >>
template<VectorVec1,VectorVec2>
auto aie::interleave_crossover(const Vec1 &v1, const Vec2 &v2, unsigned step) -> std::pair<aie_dm_resource_remove_t< Vec1 >,aie_dm_resource_remove_t< Vec1 >>
template<VectorVec1,VectorVec2, typename... Select>
auto aie::interleave_custom(const Vec1 &v1, const Vec2 &v2, Select... select) -> std::pair<aie_dm_resource_remove_t< Vec1 >,aie_dm_resource_remove_t< Vec1 >>
templateVectorVec1,VectorVec2>
auto aie::interleave_custom_static(const Vec1 &v1, const Vec2 &v2) -> std::pair<aie_dm_resource_remove_t< Vec1 >,aie_dm_resource_remove_t< Vec1 >>
template<VectorVec1,VectorVec2>
auto aie::interleave_unzip(const Vec1 &v1, const Vec2 &v2, unsigned step) -> std::pair<aie_dm_resource_remove_t< Vec1 >,aie_dm_resource_remove_t< Vec1 >>
More...
template<VectorVec1,VectorVec2>
auto aie::interleave_zip(const Vec1 &v1, const Vec2 &v2, unsigned step) -> std::pair<aie_dm_resource_remove_t< Vec1 >,aie_dm_resource_remove_t< Vec1 >>
More...
template
accum< accfloat, Elems > aie::inv(const accum< accfloat, Elems > &v)
template<VectorVec>
auto aie::inv(const Vec &v) ->aie_dm_resource_remove_t< Vec >
template<ElemE>
auto aie::inv(E a)
template
accum< accfloat, Elems > aie::invsqrt(const accum< accfloat, Elems > &v)
template<VectorVec>
auto aie::invsqrt(const Vec &v) ->aie_dm_resource_remove_t< Vec >
template<ElemE>
auto aie::invsqrt(E a)
template<RealVectorVec,RealElemE>
mask< Vec::size()> aie::le(const Vec &v, E a)
More...
template<RealVectorVec1,RealVectorVec2>
mask< Vec1::size()> aie::le(const Vec1 &v1, const Vec2 &v2)
More...
template<RealElemE,RealVectorVec>
mask< Vec::size()> aie::le(E a, const Vec &v)
More...
template
bool aie::le(T a, T b)
More...
templateaie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
auto aie::load_floor_bytes_v(const T *ptr, size_t bytes) -> vector<aie_dm_resource_remove_t< T >, Elems >
More...
templateaie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
auto aie::load_floor_v(const T *ptr, unsigned n=Elems) -> vector<aie_dm_resource_remove_t< T >, Elems >
More...
templateaie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
auto aie::load_unaligned_v(const T *ptr, unsigned aligned_elems=1) -> vector<aie_dm_resource_remove_t< T >, Elems >
More...
template<aie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
auto aie::load_unaligned_v(const T *ptr, unsigned aligned_elems=1) -> vector<aie_dm_resource_remove_t< T >, native_vector_length_v< T >>
More...
templateaie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
auto aie::load_v(const T *ptr) -> vector<aie_dm_resource_remove_t< T >, Elems >
More...
template<aie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT = void>
auto aie::load_v(const T *ptr) -> vector<aie_dm_resource_remove_t< T >, native_vector_length_v< T >>
More...
template<RealVectorVec,RealElemE>
mask< Vec::size()> aie::lt(const Vec &v, E a)
More...
template<RealVectorVec1,RealVectorVec2>
mask< Vec1::size()> aie::lt(const Vec1 &v1, const Vec2 &v2)
More...
template<RealElemE,RealVectorVec>
mask< Vec::size()> aie::lt(E a, const Vec &v)
More...
template
bool aie::lt(T a, T b)
More...
template<AccumOrOpAcc,VectorOrOpVec,ElemOrOpE>
constexpr auto aie::mac(const Acc &acc, const Vec &v, E a) -> operand_base_type_t< Acc >
More...
template<AccumOrOpAcc,VectorOrOpVec1,VectorOrOpVec2>
constexpr auto aie::mac(const Acc &acc, const Vec1 &v1, const Vec2 &v2) -> operand_base_type_t< Acc >
More...
template<AccumOrOpAcc,ElemOrOpE,VectorOrOpVec>
constexpr auto aie::mac(const Acc &acc, E a, const Vec &v) -> operand_base_type_t< Acc >
More...
template
TR aie::mac(TR c, T1 a, T2 b)
template<AccumOrOpAcc,VectorVec>
constexpr auto aie::mac_square(const Acc &acc, const Vec &v)
More...
template<RealVectorVec,RealElemE>
auto aie::max(const Vec &v, E a) ->aie_dm_resource_remove_t< Vec >
More...
template<RealVectorVec1,RealVectorVec2>
auto aie::max(const Vec1 &v1, const Vec2 &v2) ->aie_dm_resource_remove_t< Vec1 >
More...
template<RealElemE,RealVectorVec>
auto aie::max(E a, const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template
T aie::max(T a, T b)
More...
template<RealVectorVec1,RealVectorVec2>
auto aie::max_cmp(const Vec1 &v1, const Vec2 &v2) -> std::tuple<aie_dm_resource_remove_t< Vec1 >, mask< Vec1::size()>>
template<RealVectorVec>
Vec::value_type aie::max_reduce(const Vec &v)
template<RealVectorVec,RealElemE>
auto aie::maxdiff(const Vec &v, E a) ->aie_dm_resource_remove_t< Vec >
template<RealVectorVec1,RealVectorVec2>
auto aie::maxdiff(const Vec1 &v1, const Vec2 &v2) ->aie_dm_resource_remove_t< Vec1 >
template<RealElemE,RealVectorVec>
auto aie::maxdiff(E a, const Vec &v) ->aie_dm_resource_remove_t< Vec >
template<RealVectorVec,RealElemE>
auto aie::min(const Vec &v, E a) ->aie_dm_resource_remove_t< Vec >
More...
template<RealVectorVec1,RealVectorVec2>
auto aie::min(const Vec1 &v1, const Vec2 &v2) ->aie_dm_resource_remove_t< Vec1 >
More...
template<RealElemE,RealVectorVec>
auto aie::min(E a, const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template
T aie::min(T a, T b)
More...
template<RealVectorVec1,RealVectorVec2>
auto aie::min_cmp(const Vec1 &v1, const Vec2 &v2) -> std::tuple<aie_dm_resource_remove_t< Vec1 >, mask< Vec1::size()>>
template<RealVectorVec>
Vec::value_type aie::min_reduce(const Vec &v)
templateAccumAcc,VectorVecA,VectorVecB>
auto aie::mmac_fn(Acc &c, const VecA &a, const VecB &b)
templateAccumElemBaseTypeAccumTag = accauto,VectorVecA = void,VectorVecB = void>
auto aie::mmul_fn(const VecA &a, const VecB &b)
template<AccumAcc,VectorOrOpVec,ElemOrOpE>
constexpr auto aie::msc(const Acc &acc, const Vec &v, E a) ->aie_dm_resource_remove_t< Acc >
More...
template<AccumAcc,VectorOrOpVec1,VectorOrOpVec2>
constexpr auto aie::msc(const Acc &acc, const Vec1 &v1, const Vec2 &v2) ->aie_dm_resource_remove_t< Acc >
More...
template<AccumAcc,ElemOrOpE,VectorOrOpVec>
constexpr auto aie::msc(const Acc &acc, E a, const Vec &v) ->aie_dm_resource_remove_t< Acc >
More...
template
TR aie::msc(TR c, T1 a, T2 b)
template<AccumAcc,VectorVec>
constexpr auto aie::msc_square(const Acc &acc, const Vec &v)
More...
template<VectorOrOpVec,ElemOrOpE>
constexpr auto aie::mul(const Vec &v, E a)
More...
template<AccumElemBaseTypeAccumTag,VectorOrOpVec,ElemOrOpE>
constexpr auto aie::mul(const Vec &v, E a) -> accum< AccumTag, Vec::size()>
More...
template<VectorOrOpVec1,VectorOrOpVec2>
constexpr auto aie::mul(const Vec1 &v1, const Vec2 &v2)
More...
template<AccumElemBaseTypeAccumTag,VectorOrOpVec1,VectorOrOpVec2>
constexpr auto aie::mul(const Vec1 &v1, const Vec2 &v2) -> accum< AccumTag, Vec1::size()>
More...
template<ElemOrOpE,VectorOrOpVec>
constexpr auto aie::mul(E a, const Vec &v)
More...
template<AccumElemBaseTypeAccumTag,ElemOrOpE,VectorOrOpVec>
constexpr auto aie::mul(E a, const Vec &v) -> accum< AccumTag, Vec::size()>
More...
template
auto aie::mul(T1 a, T2 b)
template<AccumElemBaseTypeAccumTag,VectorVec>
Vec::value_type aie::mul_reduce(const Vec &v)
template<VectorVec>
constexpr Vec::value_type aie::mul_reduce(const Vec &v)
template<VectorVec>
constexpr auto aie::mul_square(const Vec &v)
More...
template<AccumElemBaseTypeAccumTag,VectorVec>
constexpr auto aie::mul_square(const Vec &v) -> accum< AccumTag, Vec::size()>
More...
template<ElemE>
constexpr auto aie::neg(const E &a) -> operand_base_type_t< E >
More...
template<VectorVec>
constexpr auto aie::neg(const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorOrOpVec,ElemOrOpE>
constexpr auto aie::negmul(const Vec &v, E a)
More...
template<AccumElemBaseTypeAccumTag,VectorOrOpVec,ElemOrOpE>
constexpr auto aie::negmul(const Vec &v, E a) -> accum< AccumTag, Vec::size()>
More...
template<VectorOrOpVec1,VectorOrOpVec2>
constexpr auto aie::negmul(const Vec1 &v1, const Vec2 &v2)
More...
template<AccumElemBaseTypeAccumTag,VectorOrOpVec1,VectorOrOpVec2>
constexpr auto aie::negmul(const Vec1 &v1, const Vec2 &v2) -> accum< AccumTag, Vec1::size()>
More...
template<ElemOrOpE,VectorOrOpVec>
constexpr auto aie::negmul(E a, const Vec &v)
More...
template<AccumElemBaseTypeAccumTag,ElemOrOpE,VectorOrOpVec>
constexpr auto aie::negmul(E a, const Vec &v) -> accum< AccumTag, Vec::size()>
More...
template<VectorVec,ElemE>
mask< Vec::size()> aie::neq(const Vec &v, E a)
More...
template<VectorVec1,VectorVec2>
mask< Vec1::size()> aie::neq(const Vec1 &v1, const Vec2 &v2)
More...
template<ElemE,VectorVec>
mask< Vec::size()> aie::neq(E a, const Vec &v)
More...
template
bool aie::neq(T a, T b)
More...
template<VectorVec1,VectorVec2>
constexpr bool aie::not_equal(const Vec1 &v1, const Vec2 &v2)
More...
template
constexpr unary_op< T, Operation::Abs > aie::op_abs(const T &e)
More...
template<AccumAcc>
constexpr unary_op< Acc, Operation::Acc_Add > aie::op_add(const Acc &acc)
More...
template
constexpr unary_op< T, Operation::Conj > aie::op_conj(const T &e)
More...
template<VectorVec>
constexpr binary_op< Vec, Vec, Operation::Max > aie::op_max(const Vec &a, const Vec &b)
More...
template<VectorVec>
constexpr binary_op< Vec, Vec, Operation::Min > aie::op_min(const Vec &a, const Vec &b)
More...
template
constexpr unary_op< T, Operation::None > aie::op_none(const T &e)
More...
template<AccumAcc>
constexpr unary_op< Acc, Operation::Acc_Sub > aie::op_sub(const Acc &acc)
More...
template<VectorVec>
Vec::value_type aie::reduce_add(const Vec &v)
More...
template<VectorVec, Vector... Others>
auto aie::reduce_add_v(const Vec &v, const Others &... others) ->aie_dm_resource_remove_t< Vec >
More...
template<RealVectorVec>
Vec::value_type aie::reduce_max(const Vec &v)
More...
template<RealVectorVec>
Vec::value_type aie::reduce_min(const Vec &v)
More...
template<AccumElemBaseTypeAccumTag,VectorVec>
Vec::value_type aie::reduce_mul(const Vec &v)
template<VectorVec>
constexpr Vec::value_type aie::reduce_mul(const Vec &v)
template<VectorVec>
auto aie::reverse(const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template<ElemE1,ElemE2,MaskM>
vector< operand_base_type_t< E1 >, M::size()> aie::select(const E1 &a, const E2 &b, const M &m)
More...
template<VectorVec,ElemE,MaskM>
auto aie::select(const Vec &v, E a, const M &m) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec1,VectorVec2,MaskM>
auto aie::select(const Vec1 &v1, const Vec2 &v2, const M &m) ->aie_dm_resource_remove_t< Vec1 >
More...
template<ElemE,VectorVec,MaskM>
auto aie::select(E a, const Vec &v, const M &m) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec>
auto aie::shuffle_down(const Vec &v, unsigned n) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec>
auto aie::shuffle_down_fill(const Vec &v, const Vec &fill, unsigned n) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec>
auto aie::shuffle_down_rotate(const Vec &v, unsigned n) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec>
auto aie::shuffle_up(const Vec &v, unsigned n) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec>
auto aie::shuffle_up_fill(const Vec &v, const Vec &fill, unsigned n) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec>
auto aie::shuffle_up_replicate(const Vec &v, unsigned n) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec>
auto aie::shuffle_up_rotate(const Vec &v, unsigned n) ->aie_dm_resource_remove_t< Vec >
More...
template<RealVectorVec>
auto aie::sin(const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template
auto aie::sin(E a)
More...
template<RealVectorVec>
auto aie::sincos(const Vec &v) -> std::pair<aie_dm_resource_remove_t< Vec >,aie_dm_resource_remove_t< Vec >>
More...
template
auto aie::sincos(E a)
More...
template<RealVectorVec>
auto aie::sincos_complex(const Vec &v) -> vector< std::conditional_t< Vec::is_floating_point(), cfloat, cint16 >, Vec::size()>
More...
template
auto aie::sincos_complex(E a) -> std::conditional_t< detail::is_floating_point_v< operand_base_type_t< E >>, cfloat, cint16 >
More...
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac(const Acc &acc, const VecCoeff &coeff, const VecData &data, unsigned data_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_antisym(const Acc &acc, const VecCoeff &coeff, const VecData &data, unsigned data_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_antisym(const Acc &acc, const VecCoeff &coeff, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_antisym(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_antisym(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned ldata_start, unsigned rdata_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_antisym(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_antisym_uct(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start, unsigned uct_shift)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_antisym_uct(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start, unsigned uct_shift)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_sym(const Acc &acc, const VecCoeff &coeff, const VecData &data, unsigned data_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_sym(const Acc &acc, const VecCoeff &coeff, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_sym(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_sym(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned ldata_start, unsigned rdata_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_sym(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_sym_uct(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start, unsigned uct_shift)
templateAccumAcc = void,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mac_sym_uct(const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start, unsigned uct_shift)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul(const VecCoeff &coeff, const VecData &data, unsigned data_start)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul(const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_antisym(const VecCoeff &coeff, const VecData &data, unsigned data_start)
templateAccumElemBaseTypeAccumTag = accauto, typename VecCoeff = void, typename VecData = void>
auto aie::sliding_mul_antisym(const VecCoeff &coeff, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_antisym(const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_antisym(const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned ldata_start, unsigned rdata_start)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_antisym(const VecCoeff &coeff, unsigned coeff_start, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_antisym_uct(const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start, unsigned uct_shift)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_antisym_uct(const VecCoeff &coeff, unsigned coeff_start, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start, unsigned uct_shift)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_sym(const VecCoeff &coeff, const VecData &data, unsigned data_start)
templateAccumElemBaseTypeAccumTag = accauto, typename VecCoeff = void, typename VecData = void>
auto aie::sliding_mul_sym(const VecCoeff &coeff, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_sym(const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_sym(const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned ldata_start, unsigned rdata_start)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_sym(const VecCoeff &coeff, unsigned coeff_start, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_sym_uct(const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start, unsigned uct_shift)
templateAccumElemBaseTypeAccumTag = accauto,VectorOrOpVecCoeff = void,VectorOrOpVecData = void>
auto aie::sliding_mul_sym_uct(const VecCoeff &coeff, unsigned coeff_start, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start, unsigned uct_shift)
template
accum< accfloat, Elems > aie::sqrt(const accum< accfloat, Elems > &v)
template<VectorVec>
auto aie::sqrt(const Vec &v) ->aie_dm_resource_remove_t< Vec >
template<ElemE>
auto aie::sqrt(E a)
templateaie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT1 = void,ElemBaseTypeT2 = void>
T1 * aie::store_unaligned_v(T1 *ptr, const vector< T2, Elems > &v, unsigned aligned_elems=1)
More...
template<aie_dm_resourceResource = aie_dm_resource::none,DecoratedElemBaseTypeT1 = void,ElemBaseTypeT2, unsigned Elems = 0>
T1 * aie::store_v(T1 *ptr, const vector< T2, Elems > &v)
More...
template<AccumAcc,VectorVec>
constexpr auto aie::sub(const Acc &acc, const Vec &v) ->aie_dm_resource_remove_t< Acc >
More...
template<AccumAcc,ElemE>
auto aie::sub(const Acc &acc, E a) ->aie_dm_resource_remove_t< Acc >
More...
template<VectorVec,ElemE>
auto aie::sub(const Vec &v, E a) ->aie_dm_resource_remove_t< Vec >
More...
template<VectorVec1,VectorVec2>
auto aie::sub(const Vec1 &v1, const Vec2 &v2) ->aie_dm_resource_remove_t< Vec1 >
More...
template<ElemE,VectorVec>
auto aie::sub(E a, const Vec &v) ->aie_dm_resource_remove_t< Vec >
More...
template
T aie::sub(T a, T b)
template
auto aie::to_fixed(const vector< T, Elems > &v, int shift=0) -> vector< std::conditional_t< std::is_same_v< T, float >,int32, cint32 >, Elems >
More...
template
auto aie::to_fixed(T a, int shift=0)
More...
template
auto aie::to_float(const vector< T, Elems > &v, int shift=0)
More...
template
auto aie::to_float(T a, int shift=0)
More...
templateVectorVec>
auto aie::transpose(const Vec &v) ->aie_dm_resource_remove_t< Vec >
template<VectorVec>
constexpr auto aie::upshift(const Vec &v, unsigned shift) ->aie_dm_resource_remove_t< Vec >
More...
template<ElemBaseTypeDstT,VectorVec>
auto aie::vector_cast(const Vec &v)
More...
template<ElemBaseTypeT>
constexpr T aie::zero()
More...
template<ElemBaseTypeT, unsigned Elems = native_vector_length_v>
vector< T, Elems > aie::zeros()
More...
template<AccumElemBaseTypeT, unsigned Elems = native_vector_length_v>
accum< T, Elems > aie::zeros()
More...

Class Documentation

aie::operand_base_type

struct aie::operand_base_type
template
struct aie::operand_base_type< T >
Class Members
typedefaie_dm_resource_remove_t< T > type

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

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

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

struct aie::operand_base_type< detail::vector_elem_const_ref< T, Elems > >
template
struct aie::operand_base_type< detail::vector_elem_const_ref< T, Elems > >
Class Members
typedef T type

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

struct aie::operand_base_type< detail::vector_elem_ref< T, Elems > >
template
struct aie::operand_base_type< detail::vector_elem_ref< T, Elems > >
Class Members
typedef T type

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

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