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

AIE API main entry point. More...

Detailed Description

AIE API main entry point.

#include <utility>
#include <cmath>
#include <cstdlib>
#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/transpose.hpp"
#include "detail/vector_accum_cast.hpp"
#include "aie_adf.hpp"
#include "operators.hpp"

Classes

struct  aie::is_lut< T >
 
struct  aie::is_lut< lut< ParallelAccesses, OffsetType, SlopeType > >
 
struct  aie::is_mmul< T >
 
struct  aie::is_mmul< mmul< M, K, N, TypeA, TypeB, AccumTag > >
 
struct  aie::is_same_vector< unaligned_vector_ref< T1, N >, vector_ref< T2, N, Resource > >
 
struct  aie::is_same_vector< unaligned_vector_ref< T1, N, Resource >, vector< T2, N > >
 
struct  aie::is_same_vector< unaligned_vector_ref< T1, N, Resource1 >, unaligned_vector_ref< T2, N, Resource2 > >
 
struct  aie::is_same_vector< vector< T, N >, vector< T, N > >
 
struct  aie::is_same_vector< vector< T1, N >, detail::unaligned_vector_ref< T2, N, Resource > >
 
struct  aie::is_same_vector< vector< T1, N >, vector_ref< T2, N, Resource > >
 
struct  aie::is_same_vector< vector_ref< T1, N >, unaligned_vector_ref< T2, N, Resource > >
 
struct  aie::is_same_vector< vector_ref< T1, N, Resource >, vector< T2, N > >
 
struct  aie::is_same_vector< vector_ref< T1, N, Resource1 >, vector_ref< T2, N, Resource2 > >
 
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::linear_approx< T, MyLUT >
 
struct  aie::lut< ParallelAccesses, OffsetType, SlopeType >
 
struct  aie::mmul< M, N, K, TypeA, TypeB, AccumTag >
 
struct  aie::op_value_type_helper< mmul< M, K, N, 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::parallel_lookup< T, MyLUT, oor_policy >
 
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_VERSION   202002L
 

Typedefs

template<typename T >
using aie::cfr = detail::cfr< T >
 
template<typename T , size_t Elems = dynamic_extent, aie_dm_resource Resource = aie_dm_resource::none>
using aie::circular_iterator = detail::circular_iterator< T, Elems, 1, Resource >
  More...
 
template<typename T , size_t Elems = dynamic_extent, aie_dm_resource Resource = aie_dm_resource::none>
using aie::const_circular_iterator = detail::const_circular_iterator< T, Elems, 1, Resource >
  More...
 
template<typename T , unsigned Steps>
using aie::const_pattern_iterator = detail::const_pattern_iterator< T, Steps >
 
template<typename T , size_t Elems = dynamic_extent, aie_dm_resource Resource = aie_dm_resource::none>
using aie::const_random_circular_iterator = detail::const_random_circular_iterator< T, Elems, 1, Resource >
  More...
 
template<DecoratedElemBaseType T, unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none>
using aie::const_restrict_vector_iterator = detail::const_restrict_vector_iterator< T, Elems, 1, Resource >
 
template<DecoratedElemBaseType T, unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none>
using aie::const_unaligned_vector_iterator = detail::unaligned_vector_iterator< T, Elems, Resource >
 
template<typename T , unsigned N, size_t Elems = dynamic_extent, aie_dm_resource Resource = aie_dm_resource::none>
using aie::const_vector_circular_iterator = detail::const_vector_circular_iterator< T, N, Elems, 1, Resource >
  More...
 
template<DecoratedElemBaseType T, unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none>
using aie::const_vector_iterator = detail::const_vector_iterator< T, Elems, 1, Resource >
 
template<typename T , unsigned Elems, size_t ArrayElems = dynamic_extent, aie_dm_resource Resource = aie_dm_resource::none>
using aie::const_vector_random_circular_iterator = detail::const_vector_random_circular_iterator< T, Elems, ArrayElems, 1, Resource >
  More...
 
template<unsigned Vectorization, unsigned Radix, typename T1 , typename T2 = T1>
using aie::fft_dit = detail::fft_dit< Vectorization, detail::fft_get_stage< Vectorization, Radix, T1, T2 >(), Radix, T1, T2 >
  More...
 
template<typename T >
using aie::operand_base_type_t = typename operand_base_type< Utils::remove_all_t< T > >::type
 
template<typename T , unsigned Steps>
using aie::pattern_iterator = detail::pattern_iterator< T, Steps >
 
template<typename T , size_t Elems = dynamic_extent, aie_dm_resource Resource = aie_dm_resource::none>
using aie::random_circular_iterator = detail::random_circular_iterator< T, Elems, 1, Resource >
  More...
 
template<DecoratedElemBaseType T, unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none>
using aie::restrict_vector_iterator = detail::restrict_vector_iterator< T, Elems, 1, Resource >
 
template<unsigned Lanes, unsigned Points, int CoeffStep, int DataStepX, ElemBaseType CoeffType, ElemBaseType DataType, AccumElemBaseType AccumTag = detail::default_accum_tag_t<CoeffType, DataType>>
using aie::sliding_mul_sym_x_ops = sliding_mul_sym_ops< Lanes, Points, CoeffStep, DataStepX, 1, CoeffType, DataType, AccumTag >
  More...
 
template<unsigned Lanes, unsigned Points, int CoeffStep, int DataStepXY, ElemBaseType CoeffType, ElemBaseType DataType, AccumElemBaseType AccumTag = detail::default_accum_tag_t<CoeffType, DataType>>
using aie::sliding_mul_sym_xy_ops = sliding_mul_sym_ops< Lanes, Points, CoeffStep, DataStepXY, DataStepXY, CoeffType, DataType, AccumTag >
  More...
 
template<unsigned Lanes, unsigned Points, int CoeffStep, int DataStepY, ElemBaseType CoeffType, ElemBaseType DataType, AccumElemBaseType AccumTag = detail::default_accum_tag_t<CoeffType, DataType>>
using aie::sliding_mul_sym_y_ops = sliding_mul_sym_ops< Lanes, Points, CoeffStep, 1, DataStepY, CoeffType, DataType, AccumTag >
  More...
 
template<unsigned Lanes, unsigned Points, int CoeffStep, int DataStepX, ElemBaseType CoeffType, ElemBaseType DataType, AccumElemBaseType AccumTag = detail::default_accum_tag_t<CoeffType, DataType>>
using aie::sliding_mul_x_ops = sliding_mul_ops< Lanes, Points, CoeffStep, DataStepX, 1, CoeffType, DataType, AccumTag >
  More...
 
template<unsigned Lanes, unsigned Points, int CoeffStep, int DataStepXY, ElemBaseType CoeffType, ElemBaseType DataType, AccumElemBaseType AccumTag = detail::default_accum_tag_t<CoeffType, DataType>>
using aie::sliding_mul_xy_ops = sliding_mul_ops< Lanes, Points, CoeffStep, DataStepXY, DataStepXY, CoeffType, DataType, AccumTag >
  More...
 
template<unsigned Lanes, unsigned Points, int CoeffStep, int DataStepY, ElemBaseType CoeffType, ElemBaseType DataType, AccumElemBaseType AccumTag = detail::default_accum_tag_t<CoeffType, DataType>>
using aie::sliding_mul_y_ops = sliding_mul_ops< Lanes, Points, CoeffStep, 1, DataStepY, CoeffType, DataType, AccumTag >
  More...
 
template<DecoratedElemBaseType T, unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none>
using aie::unaligned_vector_iterator = detail::unaligned_vector_iterator< T, Elems, Resource >
 
template<typename T , unsigned N, size_t Elems = dynamic_extent, aie_dm_resource Resource = aie_dm_resource::none>
using aie::vector_circular_iterator = detail::vector_circular_iterator< T, N, Elems, 1, Resource >
  More...
 
template<DecoratedElemBaseType T, unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none>
using aie::vector_iterator = detail::vector_iterator< T, Elems, 1, Resource >
 
template<typename T , unsigned Elems, size_t ArrayElems = dynamic_extent, aie_dm_resource Resource = aie_dm_resource::none>
using aie::vector_random_circular_iterator = detail::vector_random_circular_iterator< T, Elems, ArrayElems, 1, Resource >
  More...
 

Functions

template<Elem E>
constexpr auto aie::abs (const E &a) -> operand_base_type_t< E >
  More...
 
template<Vector Vec>
constexpr auto aie::abs (const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<typename TR = int32, ComplexVector Vec>
constexpr auto aie::abs_square (const Vec &v, int shift=0)
  More...
 
template<unsigned Elems>
constexpr vector< float, Elems > aie::abs_square (const vector< cfloat, Elems > &v)
  More...
 
template<unsigned Lanes, AccumOrOp Acc, Vector VecCoeff = void, Vector VecData = 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...
 
template<unsigned Lanes, unsigned CoeffStart = 0, AccumElemBaseType AccumTag = accauto, Vector VecCoeff = void, Vector VecData = void, Vector... NextVecData>
auto aie::accumulate (const VecCoeff &coeff, const VecData &data, const NextVecData &...next_data)
 
template<unsigned Lanes, AccumElemBaseType AccumTag = accauto, Vector VecCoeff = void, Vector VecData = 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<Accum Acc, Vector Vec>
Acc aie::add (const Acc &acc, const Vec &v)
  More...
 
template<Accum Acc, Elem E>
Acc aie::add (const Acc &acc, E a)
  More...
 
template<Vector Vec, Elem E>
auto aie::add (const Vec &v, E a) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec1, Vector Vec2>
auto aie::add (const Vec1 &v1, const Vec2 &v2) -> aie_dm_resource_remove_t< Vec1 >
  More...
 
template<Elem E, Vector Vec>
auto aie::add (E a, const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<typename T >
aie::add (T a, T b)
 
template<Vector Vec>
Vec::value_type aie::add_reduce (const Vec &v)
 
template<Vector Vec, Vector... Others>
auto aie::add_reduce_v (const Vec &v, const Others &... others) -> aie_dm_resource_remove_t< Vec >
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin (T *base, size_t n)
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void, unsigned Elems = 0>
constexpr auto aie::begin (T(&base)[Elems])
  More...
 
template<size_t Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_circular (T *base)
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_circular (T *base, size_t n)
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void, size_t Elems = 0>
constexpr auto aie::begin_circular (T(&base)[Elems])
  More...
 
template<unsigned Steps, typename T , typename... Offsets>
constexpr auto aie::begin_pattern (T *base, Offsets &&... offsets)
 
template<size_t Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_random_circular (T *base)
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_random_circular (T *base, size_t n)
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void, size_t Elems = 0>
constexpr auto aie::begin_random_circular (T(&base)[Elems])
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
constexpr auto aie::begin_restrict_vector (const T *base)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
constexpr auto aie::begin_restrict_vector (T *base)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
constexpr auto aie::begin_unaligned_vector (T *base)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
constexpr auto aie::begin_vector (const T *base)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
constexpr auto aie::begin_vector (T *base)
  More...
 
template<unsigned Elems, size_t ArrayElems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_vector_circular (T *base)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_vector_circular (T *base, size_t n)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void, size_t ArrayElems = 0>
constexpr auto aie::begin_vector_circular (T(&base)[ArrayElems])
  More...
 
template<unsigned Elems, size_t ArrayElems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_vector_random_circular (T *base)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::begin_vector_random_circular (T *base, size_t n)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void, size_t ArrayElems = 0>
constexpr auto aie::begin_vector_random_circular (T(&base)[ArrayElems])
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType... Types>
constexpr auto aie::begin_vectors (Types *...ptrs)
 
template<Vector Vec1, Vector Vec2>
auto aie::bit_and (const Vec1 &v1, const Vec2 &v2) -> aie_dm_resource_remove_t< Vec1 >
  More...
 
template<Elem E, Vector Vec>
auto aie::bit_and (E a, const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec>
auto aie::bit_not (const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec1, Vector Vec2>
auto aie::bit_or (const Vec1 &v1, const Vec2 &v2) -> aie_dm_resource_remove_t< Vec1 >
  More...
 
template<Elem E, Vector Vec>
auto aie::bit_or (E a, const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec1, Vector Vec2>
auto aie::bit_xor (const Vec1 &v1, const Vec2 &v2) -> aie_dm_resource_remove_t< Vec1 >
  More...
 
template<Elem E, Vector Vec>
auto aie::bit_xor (E a, const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Elem E, unsigned Elems = native_vector_length_v<E>>
vector< operand_base_type_t< E >, Elems > aie::broadcast (E a)
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::cbegin (const T *base, size_t n)
  More...
 
template<size_t Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr const_circular_iterator< T, Elems, Resource > aie::cbegin_circular (const T *base)
  More...
 
template<aie_dm_resource Resource = 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_resource Resource = 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<unsigned Steps, typename T , typename... Offsets>
constexpr const_pattern_iterator< T, Steps > aie::cbegin_pattern (const T *base, Offsets &&... offsets)
 
template<size_t Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::cbegin_random_circular (const T *base)
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::cbegin_random_circular (const T *base, size_t n)
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void, size_t Elems = 0>
constexpr auto aie::cbegin_random_circular (const T(&base)[Elems])
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
constexpr auto aie::cbegin_restrict_vector (const T *base)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
constexpr auto aie::cbegin_unaligned_vector (T *base)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
constexpr auto aie::cbegin_vector (const T *base)
  More...
 
template<unsigned Elems, size_t ArrayElems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::cbegin_vector_circular (const T *base)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::cbegin_vector_circular (const T *base, size_t n)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void, size_t ArrayElems = 0>
constexpr auto aie::cbegin_vector_circular (const T(&base)[ArrayElems])
  More...
 
template<unsigned Elems, size_t ArrayElems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::cbegin_vector_random_circular (const T *base)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::cbegin_vector_random_circular (const T *base, size_t n)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T = void, size_t ArrayElems = 0>
constexpr auto aie::cbegin_vector_random_circular (const T(&base)[ArrayElems])
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType... Types>
constexpr auto aie::cbegin_vectors (const Types *...ptrs)
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::cend (const T *base, size_t n)
  More...
 
template<Accum Acc, Accum... Accums>
auto aie::concat (const Acc &acc, const Accums &...accums) -> accum< typename Acc::value_type, Acc::size() *(1+sizeof...(Accums))>
  More...
 
template<Vector Vec, Vector... Vectors>
auto aie::concat (const Vec &v, const Vectors &...vectors) -> vector< typename Vec::value_type, Vec::size() *(1+sizeof...(Vectors))>
  More...
 
template<ComplexElem E>
constexpr auto aie::conj (const E &a) -> operand_base_type_t< E >
  More...
 
template<ComplexVector Vec>
auto aie::conj (const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Elem E, Vector Vec>
bool aie::contains (E a, const Vec &v)
 
template<RealVector Vec>
auto aie::cos (const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<typename E >
auto aie::cos (E a)
  More...
 
float aie::div (float a, float b)
 
template<Vector Vec>
constexpr auto aie::downshift (const Vec &v, unsigned shift) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void>
constexpr auto aie::end (T *base, size_t n)
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, typename T = void, unsigned Elems = 0>
constexpr auto aie::end (T(&base)[Elems])
  More...
 
template<Vector Vec, Elem E>
mask< Vec::size()> aie::eq (const Vec &v, E a)
  More...
 
template<Vector Vec1, Vector Vec2>
mask< Vec1::size()> aie::eq (const Vec1 &v1, const Vec2 &v2)
  More...
 
template<Elem E, Vector Vec>
mask< Vec::size()> aie::eq (E a, const Vec &v)
  More...
 
template<typename T >
bool aie::eq (T a, T b)
  More...
 
template<Vector Vec1, Vector Vec2>
constexpr bool aie::equal (const Vec1 &v1, const Vec2 &v2)
  More...
 
template<Vector Vec>
auto aie::filter_even (const Vec &v, unsigned step=1) -> vector< typename Vec::value_type, Vec::size()/2 >
  More...
 
template<Vector Vec>
auto aie::filter_odd (const Vec &v, unsigned step=1) -> vector< typename Vec::value_type, Vec::size()/2 >
  More...
 
template<AccumElemBaseType AccumTag, VectorOrOp Vec>
accum< AccumTag, Vec::size()> aie::from_vector (const Vec &v, const int shift=0)
  More...
 
template<RealVector Vec, RealElem E>
mask< Vec::size()> aie::ge (const Vec &v, E a)
  More...
 
template<RealVector Vec1, RealVector Vec2>
mask< Vec1::size()> aie::ge (const Vec1 &v1, const Vec2 &v2)
  More...
 
template<RealElem E, RealVector Vec>
mask< Vec::size()> aie::ge (E a, const Vec &v)
  More...
 
template<typename T >
bool aie::ge (T a, T b)
  More...
 
template<RealVector Vec, RealElem E>
mask< Vec::size()> aie::gt (const Vec &v, E a)
  More...
 
template<RealVector Vec1, RealVector Vec2>
mask< Vec1::size()> aie::gt (const Vec1 &v1, const Vec2 &v2)
  More...
 
template<RealElem E, RealVector Vec>
mask< Vec::size()> aie::gt (E a, const Vec &v)
  More...
 
template<typename T >
bool aie::gt (T a, T b)
  More...
 
template<Vector Vec1, Vector Vec2>
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<Vector Vec1, Vector Vec2>
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<Vector Vec1, Vector Vec2>
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<Vector Vec1, Vector Vec2, 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 >>
 
template<unsigned S0, unsigned S1, unsigned S2, unsigned S3, unsigned S4, unsigned S5, unsigned S6, unsigned S7, unsigned S8, unsigned S9, unsigned S10, unsigned S11, unsigned S12, unsigned S13, unsigned S14, unsigned S15, unsigned S16, unsigned S17, unsigned S18, unsigned S19, unsigned S20, unsigned S21, unsigned S22, unsigned S23, unsigned S24, unsigned S25, unsigned S26, unsigned S27, unsigned S28, unsigned S29, unsigned S30, unsigned S31, Vector Vec1, Vector Vec2>
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<Vector Vec1, Vector Vec2>
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<Vector Vec1, Vector Vec2>
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<unsigned Elems>
accum< accfloat, Elems > aie::inv (const accum< accfloat, Elems > &v)
 
template<Vector Vec>
auto aie::inv (const Vec &v) -> aie_dm_resource_remove_t< Vec >
 
template<Elem E>
auto aie::inv (E a)
 
template<unsigned Elems>
accum< accfloat, Elems > aie::invsqrt (const accum< accfloat, Elems > &v)
 
template<Vector Vec>
auto aie::invsqrt (const Vec &v) -> aie_dm_resource_remove_t< Vec >
 
template<Elem E>
auto aie::invsqrt (E a)
 
template<RealVector Vec, RealElem E>
mask< Vec::size()> aie::le (const Vec &v, E a)
  More...
 
template<RealVector Vec1, RealVector Vec2>
mask< Vec1::size()> aie::le (const Vec1 &v1, const Vec2 &v2)
  More...
 
template<RealElem E, RealVector Vec>
mask< Vec::size()> aie::le (E a, const Vec &v)
  More...
 
template<typename T >
bool aie::le (T a, T b)
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
auto aie::load_floor_bytes_v (const T *ptr, size_t bytes) -> vector< aie_dm_resource_remove_t< T >, Elems >
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
auto aie::load_floor_v (const T *ptr, unsigned n=Elems) -> vector< aie_dm_resource_remove_t< T >, Elems >
  More...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = 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_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = 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...
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
auto aie::load_v (const T *ptr) -> vector< aie_dm_resource_remove_t< T >, Elems >
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T = void>
auto aie::load_v (const T *ptr) -> vector< aie_dm_resource_remove_t< T >, native_vector_length_v< T >>
  More...
 
template<RealVector Vec, RealElem E>
mask< Vec::size()> aie::lt (const Vec &v, E a)
  More...
 
template<RealVector Vec1, RealVector Vec2>
mask< Vec1::size()> aie::lt (const Vec1 &v1, const Vec2 &v2)
  More...
 
template<RealElem E, RealVector Vec>
mask< Vec::size()> aie::lt (E a, const Vec &v)
  More...
 
template<typename T >
bool aie::lt (T a, T b)
  More...
 
template<AccumOrOp Acc, VectorOrOp Vec, ElemOrOp E>
constexpr auto aie::mac (const Acc &acc, const Vec &v, E a) -> operand_base_type_t< Acc >
  More...
 
template<AccumOrOp Acc, VectorOrOp Vec1, VectorOrOp Vec2>
constexpr auto aie::mac (const Acc &acc, const Vec1 &v1, const Vec2 &v2) -> operand_base_type_t< Acc >
  More...
 
template<AccumOrOp Acc, ElemOrOp E, VectorOrOp Vec>
constexpr auto aie::mac (const Acc &acc, E a, const Vec &v) -> operand_base_type_t< Acc >
  More...
 
template<typename TR , typename T1 , typename T2 >
TR aie::mac (TR c, T1 a, T2 b)
 
template<AccumOrOp Acc, Vector Vec>
constexpr auto aie::mac_square (const Acc &acc, const Vec &v)
  More...
 
template<RealVector Vec, RealElem E>
auto aie::max (const Vec &v, E a) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<RealVector Vec1, RealVector Vec2>
auto aie::max (const Vec1 &v1, const Vec2 &v2) -> aie_dm_resource_remove_t< Vec1 >
  More...
 
template<RealElem E, RealVector Vec>
auto aie::max (E a, const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<typename T >
aie::max (T a, T b)
  More...
 
template<RealVector Vec1, RealVector Vec2>
auto aie::max_cmp (const Vec1 &v1, const Vec2 &v2) -> std::tuple< aie_dm_resource_remove_t< Vec1 >, mask< Vec1::size()>>
 
template<RealVector Vec>
Vec::value_type aie::max_reduce (const Vec &v)
 
template<RealVector Vec, RealElem E>
auto aie::maxdiff (const Vec &v, E a) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<RealVector Vec1, RealVector Vec2>
auto aie::maxdiff (const Vec1 &v1, const Vec2 &v2) -> aie_dm_resource_remove_t< Vec1 >
  More...
 
template<RealElem E, RealVector Vec>
auto aie::maxdiff (E a, const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<RealVector Vec, RealElem E>
auto aie::min (const Vec &v, E a) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<RealVector Vec1, RealVector Vec2>
auto aie::min (const Vec1 &v1, const Vec2 &v2) -> aie_dm_resource_remove_t< Vec1 >
  More...
 
template<RealElem E, RealVector Vec>
auto aie::min (E a, const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<typename T >
aie::min (T a, T b)
  More...
 
template<RealVector Vec1, RealVector Vec2>
auto aie::min_cmp (const Vec1 &v1, const Vec2 &v2) -> std::tuple< aie_dm_resource_remove_t< Vec1 >, mask< Vec1::size()>>
 
template<RealVector Vec>
Vec::value_type aie::min_reduce (const Vec &v)
 
template<unsigned M, unsigned K, unsigned N, Accum Acc, Vector VecA, Vector VecB>
auto aie::mmac_fn (Acc &c, const VecA &a, const VecB &b)
 
template<unsigned M, unsigned K, unsigned N, AccumElemBaseType AccumTag = accauto, Vector VecA = void, Vector VecB = void>
auto aie::mmul_fn (const VecA &a, const VecB &b)
 
template<Accum Acc, VectorOrOp Vec, ElemOrOp E>
constexpr auto aie::msc (const Acc &acc, const Vec &v, E a) -> aie_dm_resource_remove_t< Acc >
  More...
 
template<Accum Acc, VectorOrOp Vec1, VectorOrOp Vec2>
constexpr auto aie::msc (const Acc &acc, const Vec1 &v1, const Vec2 &v2) -> aie_dm_resource_remove_t< Acc >
  More...
 
template<Accum Acc, ElemOrOp E, VectorOrOp Vec>
constexpr auto aie::msc (const Acc &acc, E a, const Vec &v) -> aie_dm_resource_remove_t< Acc >
  More...
 
template<typename TR , typename T1 , typename T2 >
TR aie::msc (TR c, T1 a, T2 b)
 
template<Accum Acc, Vector Vec>
constexpr auto aie::msc_square (const Acc &acc, const Vec &v)
  More...
 
template<VectorOrOp Vec, ElemOrOp E>
constexpr auto aie::mul (const Vec &v, E a)
  More...
 
template<AccumElemBaseType AccumTag, VectorOrOp Vec, ElemOrOp E>
constexpr auto aie::mul (const Vec &v, E a) -> accum< AccumTag, Vec::size()>
  More...
 
template<VectorOrOp Vec1, VectorOrOp Vec2>
constexpr auto aie::mul (const Vec1 &v1, const Vec2 &v2)
  More...
 
template<AccumElemBaseType AccumTag, VectorOrOp Vec1, VectorOrOp Vec2>
constexpr auto aie::mul (const Vec1 &v1, const Vec2 &v2) -> accum< AccumTag, Vec1::size()>
  More...
 
template<ElemOrOp E, VectorOrOp Vec>
constexpr auto aie::mul (E a, const Vec &v)
  More...
 
template<AccumElemBaseType AccumTag, ElemOrOp E, VectorOrOp Vec>
constexpr auto aie::mul (E a, const Vec &v) -> accum< AccumTag, Vec::size()>
  More...
 
template<typename T1 , typename T2 >
auto aie::mul (T1 a, T2 b)
 
template<AccumElemBaseType AccumTag, Vector Vec>
Vec::value_type aie::mul_reduce (const Vec &v)
 
template<Vector Vec>
constexpr Vec::value_type aie::mul_reduce (const Vec &v)
 
template<Vector Vec>
constexpr auto aie::mul_square (const Vec &v)
  More...
 
template<AccumElemBaseType AccumTag, Vector Vec>
constexpr auto aie::mul_square (const Vec &v) -> accum< AccumTag, Vec::size()>
  More...
 
template<Elem E>
constexpr auto aie::neg (const E &a) -> operand_base_type_t< E >
  More...
 
template<Vector Vec>
constexpr auto aie::neg (const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<VectorOrOp Vec, ElemOrOp E>
constexpr auto aie::negmul (const Vec &v, E a)
  More...
 
template<AccumElemBaseType AccumTag, VectorOrOp Vec, ElemOrOp E>
constexpr auto aie::negmul (const Vec &v, E a) -> accum< AccumTag, Vec::size()>
  More...
 
template<VectorOrOp Vec1, VectorOrOp Vec2>
constexpr auto aie::negmul (const Vec1 &v1, const Vec2 &v2)
  More...
 
template<AccumElemBaseType AccumTag, VectorOrOp Vec1, VectorOrOp Vec2>
constexpr auto aie::negmul (const Vec1 &v1, const Vec2 &v2) -> accum< AccumTag, Vec1::size()>
  More...
 
template<ElemOrOp E, VectorOrOp Vec>
constexpr auto aie::negmul (E a, const Vec &v)
  More...
 
template<AccumElemBaseType AccumTag, ElemOrOp E, VectorOrOp Vec>
constexpr auto aie::negmul (E a, const Vec &v) -> accum< AccumTag, Vec::size()>
  More...
 
template<Vector Vec, Elem E>
mask< Vec::size()> aie::neq (const Vec &v, E a)
  More...
 
template<Vector Vec1, Vector Vec2>
mask< Vec1::size()> aie::neq (const Vec1 &v1, const Vec2 &v2)
  More...
 
template<Elem E, Vector Vec>
mask< Vec::size()> aie::neq (E a, const Vec &v)
  More...
 
template<typename T >
bool aie::neq (T a, T b)
  More...
 
template<Vector Vec1, Vector Vec2>
constexpr bool aie::not_equal (const Vec1 &v1, const Vec2 &v2)
  More...
 
template<typename T >
constexpr unary_op< T, Operation::Abs > aie::op_abs (const T &e)
  More...
 
template<Accum Acc>
constexpr unary_op< Acc, Operation::Acc_Add > aie::op_add (const Acc &acc)
  More...
 
template<typename T >
constexpr unary_op< T, Operation::Conj > aie::op_conj (const T &e)
  More...
 
template<VectorOrOp Vec1, VectorOrOp Vec2>
constexpr binary_op< Vec1, Vec2, Operation::Max > aie::op_max (const Vec1 &a, const Vec2 &b)
  More...
 
template<VectorOrOp Vec1, VectorOrOp Vec2>
constexpr binary_op< Vec1, Vec2, Operation::Min > aie::op_min (const Vec1 &a, const Vec2 &b)
  More...
 
template<typename T >
constexpr unary_op< T, Operation::None > aie::op_none (const T &e)
  More...
 
template<typename T >
constexpr binary_op< T, bool, Operation::Sign > aie::op_sign (const T &e, bool is_signed)
  More...
 
template<Accum Acc>
constexpr unary_op< Acc, Operation::Acc_Sub > aie::op_sub (const Acc &acc)
  More...
 
template<VectorOrOp Vec, typename T2 = Utils::get_prev_integer_type_t<typename Vec::value_type>>
auto aie::pack (const Vec &v) -> vector< T2, Vec::size()>
  More...
 
template<Vector Vec>
Vec::value_type aie::reduce_add (const Vec &v)
  More...
 
template<Vector Vec, Vector... Others>
auto aie::reduce_add_v (const Vec &v, const Others &... others) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<RealVector Vec>
Vec::value_type aie::reduce_max (const Vec &v)
  More...
 
template<RealVector Vec>
Vec::value_type aie::reduce_min (const Vec &v)
  More...
 
template<AccumElemBaseType AccumTag, Vector Vec>
Vec::value_type aie::reduce_mul (const Vec &v)
 
template<Vector Vec>
constexpr Vec::value_type aie::reduce_mul (const Vec &v)
 
template<Vector Vec>
auto aie::reverse (const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Elem E1, Elem E2, Mask M>
vector< operand_base_type_t< E1 >, M::size()> aie::select (const E1 &a, const E2 &b, const M &m)
  More...
 
template<Vector Vec, Elem E, Mask M>
auto aie::select (const Vec &v, E a, const M &m) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec1, Vector Vec2, Mask M>
auto aie::select (const Vec1 &v1, const Vec2 &v2, const M &m) -> aie_dm_resource_remove_t< Vec1 >
  More...
 
template<Elem E, Vector Vec, Mask M>
auto aie::select (E a, const Vec &v, const M &m) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec>
auto aie::shuffle_down (const Vec &v, unsigned n) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec>
auto aie::shuffle_down_fill (const Vec &v, const Vec &fill, unsigned n) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec>
auto aie::shuffle_down_replicate (const Vec &v, unsigned n) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec>
auto aie::shuffle_down_rotate (const Vec &v, unsigned n) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec>
auto aie::shuffle_up (const Vec &v, unsigned n) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec>
auto aie::shuffle_up_fill (const Vec &v, const Vec &fill, unsigned n) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec>
auto aie::shuffle_up_replicate (const Vec &v, unsigned n) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec>
auto aie::shuffle_up_rotate (const Vec &v, unsigned n) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<RealVector Vec>
auto aie::sin (const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<typename E >
auto aie::sin (E a)
  More...
 
template<RealVector Vec>
auto aie::sincos (const Vec &v) -> std::pair< aie_dm_resource_remove_t< Vec >, aie_dm_resource_remove_t< Vec >>
  More...
 
template<typename E >
auto aie::sincos (E a)
  More...
 
template<RealVector Vec>
auto aie::sincos_complex (const Vec &v) -> vector< std::conditional_t< Vec::is_floating_point(), cfloat, cint16 >, Vec::size()>
  More...
 
template<typename E >
auto aie::sincos_complex (E a) -> std::conditional_t< detail::is_floating_point_v< operand_base_type_t< E >>, cfloat, cint16 >
  More...
 
template<unsigned Lanes, unsigned Points, int CoeffStart = 0, int CoeffStep = 1, int DataStep = 1, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mac (const Acc &acc, const VecCoeff &coeff, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mac (const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStart = 0, int CoeffStep = 1, int DataStep = 1, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mac_antisym (const Acc &acc, const VecCoeff &coeff, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStart = 0, int CoeffStep = 1, int DataStep = 1, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mac_antisym (const Acc &acc, const VecCoeff &coeff, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mac_antisym (const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mac_antisym (const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned ldata_start, unsigned rdata_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = 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)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStep = 1, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = 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)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStep = 1, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = 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)
 
template<unsigned Lanes, unsigned Points, int CoeffStart = 0, int CoeffStep = 1, int DataStep = 1, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mac_sym (const Acc &acc, const VecCoeff &coeff, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStart = 0, int CoeffStep = 1, int DataStep = 1, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mac_sym (const Acc &acc, const VecCoeff &coeff, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mac_sym (const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mac_sym (const Acc &acc, const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned ldata_start, unsigned rdata_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = 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)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStep = 1, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = 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)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStep = 1, Accum Acc = void, VectorOrOp VecCoeff = void, VectorOrOp VecData = 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)
 
template<unsigned Lanes, unsigned Points, int CoeffStart = 0, int CoeffStep = 1, int DataStep = 1, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul (const VecCoeff &coeff, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul (const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStart = 0, int CoeffStep = 1, int DataStep = 1, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul_antisym (const VecCoeff &coeff, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStart = 0, int CoeffStep = 1, int DataStep = 1, AccumElemBaseType AccumTag = 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)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul_antisym (const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul_antisym (const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned ldata_start, unsigned rdata_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul_antisym (const VecCoeff &coeff, unsigned coeff_start, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStep = 1, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul_antisym_uct (const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start, unsigned uct_shift)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStep = 1, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = 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)
 
template<unsigned Lanes, unsigned Points, int CoeffStart = 0, int CoeffStep = 1, int DataStep = 1, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul_sym (const VecCoeff &coeff, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStart = 0, int CoeffStep = 1, int DataStep = 1, AccumElemBaseType AccumTag = 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)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul_sym (const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul_sym (const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned ldata_start, unsigned rdata_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul_sym (const VecCoeff &coeff, unsigned coeff_start, const VecData &ldata, unsigned ldata_start, const VecData &rdata, unsigned rdata_start)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStep = 1, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = void>
auto aie::sliding_mul_sym_uct (const VecCoeff &coeff, unsigned coeff_start, const VecData &data, unsigned data_start, unsigned uct_shift)
 
template<unsigned Lanes, unsigned Points, int CoeffStep = 1, int DataStep = 1, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff = void, VectorOrOp VecData = 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<unsigned Elems>
accum< accfloat, Elems > aie::sqrt (const accum< accfloat, Elems > &v)
 
template<Vector Vec>
auto aie::sqrt (const Vec &v) -> aie_dm_resource_remove_t< Vec >
 
template<Elem E>
auto aie::sqrt (E a)
 
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T1 = void, ElemBaseType T2 = void>
T1 * aie::store_unaligned_v (T1 *ptr, const vector< T2, Elems > &v, unsigned aligned_elems=1)
  More...
 
template<aie_dm_resource Resource = aie_dm_resource::none, DecoratedElemBaseType T1 = void, ElemBaseType T2, unsigned Elems = 0>
T1 * aie::store_v (T1 *ptr, const vector< T2, Elems > &v)
  More...
 
template<Accum Acc, Vector Vec>
constexpr auto aie::sub (const Acc &acc, const Vec &v) -> aie_dm_resource_remove_t< Acc >
  More...
 
template<Accum Acc, Elem E>
auto aie::sub (const Acc &acc, E a) -> aie_dm_resource_remove_t< Acc >
  More...
 
template<Vector Vec, Elem E>
auto aie::sub (const Vec &v, E a) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<Vector Vec1, Vector Vec2>
auto aie::sub (const Vec1 &v1, const Vec2 &v2) -> aie_dm_resource_remove_t< Vec1 >
  More...
 
template<Elem E, Vector Vec>
auto aie::sub (E a, const Vec &v) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<typename T >
aie::sub (T a, T b)
 
template<typename T , unsigned Elems>
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<typename T >
auto aie::to_fixed (T a, int shift=0)
  More...
 
template<typename T , unsigned Elems>
auto aie::to_float (const vector< T, Elems > &v, int shift=0)
  More...
 
template<Elem E>
auto aie::to_float (E a, int shift=0)
  More...
 
template<typename TR , typename T >
vector< TR, T::size()> aie::to_vector (const T &acc, const int shift=0)
  More...
 
template<Vector Vec>
auto aie::transpose (const Vec &v, unsigned Row, unsigned Col) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<VectorOrOp Vec, typename T2 = Utils::get_next_integer_type_t<typename Vec::value_type>>
auto aie::unpack (const Vec &v) -> vector< T2, Vec::size()>
  More...
 
template<Vector Vec>
constexpr auto aie::upshift (const Vec &v, unsigned shift) -> aie_dm_resource_remove_t< Vec >
  More...
 
template<ElemBaseType DstT, Vector Vec>
auto aie::vector_cast (const Vec &v)
  More...
 
template<ElemBaseType T>
constexpr T aie::zero ()
  More...
 
template<ElemBaseType T, unsigned Elems = native_vector_length_v<T>>
vector< T, Elems > aie::zeros ()
  More...
 
template<AccumElemBaseType T, unsigned Elems = native_vector_length_v<T>>
accum< T, Elems > aie::zeros ()
  More...
 

Class Documentation

◆ aie::op_value_type_helper< mmul< M, K, N, TypeA, TypeB, AccumTag > >

struct aie::op_value_type_helper< mmul< M, K, N, TypeA, TypeB, AccumTag > >
template<unsigned M, unsigned K, unsigned N, ElemBaseType TypeA, ElemBaseType TypeB, AccumElemBaseType AccumTag>
struct aie::op_value_type_helper< mmul< M, K, N, TypeA, TypeB, AccumTag > >
Class Members
typedef typename value_type type

◆ aie::operand_base_type

struct aie::operand_base_type
template<typename T>
struct aie::operand_base_type< T >
Class Members
typedef aie_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 > >
template<typename Parent1, typename Parent2, Operation Op>
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<typename T, unsigned Elems>
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<typename T, unsigned Elems>
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 > >
template<typename Parent, Operation Op>
struct aie::operand_base_type< unary_op< Parent, Op > >
Class Members
typedef typename value_type type