![]() |
AI Engine API User Guide (AIE) 2023.2
|
Namespaces | |
namespace | adf |
namespace | sync |
namespace | utils |
Typedefs | |
template<typename T , unsigned Elems> | |
using | abs = abs_bits< type_bits_v< T >, T, Elems > |
template<typename T , typename TR , unsigned Elems> | |
using | abs_square = abs_square_bits< T, TR, Elems > |
template<typename T > | |
using | accum_native_type_t = typename accum_native_type< T >::type |
template<typename T1 , typename T2 , unsigned Bits = default_accum_bits<T1, T2>()> | |
using | accum_tag_for_mul_types = accum_tag_t< accum_class_for_mul_types_v< T1, T2 >, Bits > |
template<typename T , unsigned Bits = default_accum_bits<T, T>()> | |
using | accum_tag_for_type = accum_tag_t< accum_class_for_type< T >::value(), Bits > |
template<typename AccumTag , typename ... Tags> | |
using | accum_tag_or_default_t = typename accum_tag_or_default< AccumTag, Tags... >::type |
template<AccumClass Class, unsigned Bits> | |
using | accum_tag_t = typename accum_tag< Class, Bits >::type |
template<typename DstT , typename Tag , unsigned Elems> | |
using | accum_to_vector_cast = accum_to_vector_cast_bits< DstT, accum_class_for_tag_v< Tag >, accum_bits_for_tag_v< Tag >, Elems > |
template<typename T , unsigned Elems> | |
using | add = add_sub_bits< type_bits_v< T >, T, Elems, AddSubOperation::Add > |
template<AccumElemBaseType AccumTag, unsigned Elems> | |
using | add_accum = add_sub_accum_bits< accum_native_type_t< AccumTag >, Elems, AddSubOperation::Add > |
template<unsigned AccumBits, typename T , unsigned Elems> | |
using | add_accum_vector = add_sub_accum_vector_bits< AccumBits, type_bits_v< T >, T, Elems, AddSubOperation::Add > |
template<aie_dm_resource Resource, typename T > | |
using | add_memory_bank_t = typename add_memory_bank< Resource, T >::type |
template<typename T , unsigned Elems> | |
using | add_reduce = add_reduce_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | add_reduce_v = add_reduce_v_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems, BitOp Op> | |
using | bit = bit_bits< type_bits_v< T >, T, Elems, Op > |
template<typename T , unsigned Elems> | |
using | broadcast = broadcast_bits< type_bits_v< T >, T, Elems > |
template<typename TypeA , typename TypeB > | |
using | compute_C_type_t = typename compute_C_type< TypeA, TypeB >::type |
template<typename T , unsigned Elems> | |
using | conj = conj_bits< type_bits_v< T >, T, Elems > |
template<typename T , size_t Elems, size_t Stride = 1, aie_dm_resource Resource = aie_dm_resource::none> | |
using | const_circular_iterator = circular_iterator< const T, Elems, Stride, Resource > |
template<typename T , unsigned Steps> | |
using | const_pattern_iterator = pattern_iterator< const std::remove_const_t< T >, Steps > |
template<typename T , size_t Elems, size_t Stride = 1, aie_dm_resource Resource = aie_dm_resource::none> | |
using | const_random_circular_iterator = random_circular_iterator< const T, Elems, Stride, Resource > |
template<typename T , unsigned Elems, size_t Stride = 1, aie_dm_resource Resource = aie_dm_resource::none> | |
using | const_restrict_vector_iterator = restrict_vector_iterator< const std::remove_const_t< T >, Elems, Stride, Resource > |
template<typename T , unsigned Elems, typename IterDescriptor , aie_dm_resource Resource = aie_dm_resource::none> | |
using | const_sliding_window_buffer_stream = sliding_window_buffer_stream< const std::remove_const_t< T >, Elems, IterDescriptor, Resource > |
template<typename T , unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none> | |
using | const_unaligned_vector_iterator = unaligned_vector_iterator< const std::remove_const_t< T >, Elems, Resource > |
template<typename T , unsigned N, size_t Elems, size_t Stride = 1, aie_dm_resource Resource = aie_dm_resource::none> | |
using | const_vector_circular_iterator = vector_circular_iterator< const T, N, Elems, Stride, Resource > |
template<typename T , unsigned Elems, size_t Stride = 1, aie_dm_resource Resource = aie_dm_resource::none> | |
using | const_vector_iterator = vector_iterator< const std::remove_const_t< T >, Elems, Stride, Resource > |
template<typename T , unsigned N, size_t Elems, size_t Stride = 1, aie_dm_resource Resource = aie_dm_resource::none> | |
using | const_vector_random_circular_iterator = vector_random_circular_iterator< const T, N, Elems, Stride, Resource > |
template<unsigned NumReaders, unsigned NumWriters> | |
using | consumer_lock = scoped_lock_impl< consumer_sem< NumReaders, NumWriters > > |
template<typename ... Tags> | |
using | deduce_accauto_helper_t = typename deduce_accauto_helper< Tags... >::type |
template<typename A , typename B > | |
using | default_accum_tag_t = typename default_accum_tag< A, B >::type |
template<unsigned N> | |
using | default_repr_t = typename default_repr< N >::type |
template<typename Input , typename Output = Input> | |
using | default_twiddle_type_t = typename default_twiddle_type< Input, Output >::type |
template<size_t Rank> | |
using | dyn_extents = std::array< size_t, Rank > |
template<ElementaryOp Op, typename TR , typename T > | |
using | elementary = elementary_bits< Op, type_bits_v< T >, TR, T > |
template<ElementaryOp Op, typename TR , typename T , unsigned N> | |
using | elementary_vector = elementary_vector_bits< Op, type_bits_v< T >, TR, T, N > |
template<typename T , unsigned Elems> | |
using | eq = cmp_impl< CmpOp::EQ, T, Elems > |
template<size_t... Extents> | |
using | extents = std::integer_sequence< size_t, Extents... > |
template<typename T , unsigned Elems, FilterOp Op> | |
using | filter = filter_bits< type_bits_v< T >, T, Elems, Op > |
template<typename T , unsigned Elems> | |
using | ge = cmp_impl< CmpOp::GE, T, Elems > |
template<typename T > | |
using | get_value_type_t = typename get_value_type< T >::type |
template<typename T , unsigned Elems> | |
using | interleave_butterfly = interleave_bits_butterfly< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | interleave_butterfly_half = interleave_bits_butterfly_half< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | interleave_crossover = interleave_bits_crossover< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems, unsigned... Select> | |
using | interleave_custom = interleave_bits_custom< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems, unsigned... Select> | |
using | interleave_custom_static = interleave_bits_custom_static< type_bits_v< T >, T, Elems, Select... > |
template<typename T , unsigned Elems> | |
using | interleave_unzip = interleave_bits_unzip< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | interleave_zip = interleave_bits_zip< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | lt = cmp_impl< CmpOp::LT, T, Elems > |
template<size_t Rank> | |
using | make_dynamic_extents = utils::make_integer_broadcast< size_t, Rank, dynamic_extent > |
template<typename T , unsigned Elems> | |
using | max = max_min_bits< type_bits_v< T >, T, Elems, MaxMinOperation::Max > |
template<typename T , unsigned Elems> | |
using | max_cmp = max_min_cmp_bits< type_bits_v< T >, T, Elems, MaxMinOperation::MaxCmp > |
template<typename T , unsigned Elems> | |
using | max_reduce = max_min_reduce_bits< type_bits_v< T >, T, Elems, MaxMinOperation::Max > |
template<typename T , unsigned Elems> | |
using | maxdiff = max_min_bits< type_bits_v< T >, T, Elems, MaxMinOperation::MaxDiff > |
template<typename T , unsigned Elems> | |
using | min = max_min_bits< type_bits_v< T >, T, Elems, MaxMinOperation::Min > |
template<typename T , unsigned Elems> | |
using | min_cmp = max_min_cmp_bits< type_bits_v< T >, T, Elems, MaxMinOperation::MinCmp > |
template<typename T , unsigned Elems> | |
using | min_reduce = max_min_reduce_bits< type_bits_v< T >, T, Elems, MaxMinOperation::Min > |
template<MulMacroOp MulOp, unsigned AccumBits, typename T1 , typename T2 > | |
using | mul = mul_bits< MulOp, AccumBits, type_bits_v< T1 >, T1, type_bits_v< T2 >, T2 > |
template<MulMacroOp MulOp, unsigned AccumBits, typename T1 , typename T2 > | |
using | mul_maxmin = mul_maxmin_bits< MulOp, AccumBits, type_bits_v< T1 >, T1, type_bits_v< T2 >, T2 > |
template<unsigned AccumBits, typename T , unsigned Elems> | |
using | mul_reduce = mul_reduce_bits< AccumBits, type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | native_vector_type_t = typename native_vector_type< T, Elems >::type |
template<typename T , unsigned Elems> | |
using | neg = neg_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | neq = cmp_impl< CmpOp::NEQ, T, Elems > |
template<unsigned NumReaders, unsigned NumWriters> | |
using | producer_lock = scoped_lock_impl< producer_sem< NumReaders, NumWriters > > |
using | scoped_lock = scoped_lock_impl< mutex > |
template<typename T , unsigned Elems> | |
using | select = select_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | shift = shift_bits< T, type_bits_v< T >, Elems > |
template<typename T , unsigned Elems> | |
using | shuffle_down = shuffle_down_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | shuffle_down_fill = shuffle_down_fill_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | shuffle_down_replicate = shuffle_down_replicate_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | shuffle_down_rotate = shuffle_down_rotate_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | shuffle_up = shuffle_up_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | shuffle_up_fill = shuffle_up_fill_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | shuffle_up_replicate = shuffle_up_replicate_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | shuffle_up_rotate = shuffle_up_rotate_bits< type_bits_v< T >, T, Elems > |
template<unsigned OutElems, unsigned Points, int CoeffStep, int DataStepX, int DataStepY, unsigned AccumBits, typename CoeffType , typename DataType > | |
using | sliding_mul = sliding_mul_bits< OutElems, Points, CoeffStep, DataStepX, DataStepY, AccumBits, type_bits_v< CoeffType >, type_bits_v< DataType >, CoeffType, DataType > |
template<unsigned Outputs, unsigned Channels, unsigned Points, int CoeffStep, int DataStepX, int DataStepY, unsigned AccumBits, typename CoeffType , typename DataType > | |
using | sliding_mul_ch = sliding_mul_ch_bits< Outputs, Channels, Points, CoeffStep, DataStepX, DataStepY, AccumBits, type_bits_v< CoeffType >, type_bits_v< DataType >, CoeffType, DataType > |
template<unsigned OutElems, unsigned Points, int CoeffStep, int DataStepX, int DataStepY, unsigned AccumBits, typename CoeffType , typename DataType > | |
using | sliding_mul_sym = sliding_mul_sym_bits< OutElems, Points, CoeffStep, DataStepX, DataStepY, AccumBits, type_bits_v< CoeffType >, type_bits_v< DataType >, CoeffType, DataType > |
template<unsigned OutElems, unsigned Points, int CoeffStep, int DataStep, unsigned AccumBits, typename CoeffType , typename DataType > | |
using | sliding_mul_sym_uct = sliding_mul_sym_uct_bits< OutElems, Points, CoeffStep, DataStep, AccumBits, type_bits_v< CoeffType >, type_bits_v< DataType >, CoeffType, DataType > |
template<MulMacroOp MulOp, unsigned AccumBits, typename T > | |
using | square = square_bits< MulOp, AccumBits, type_bits_v< T >, T > |
template<typename T , unsigned Elems> | |
using | sub = add_sub_bits< type_bits_v< T >, T, Elems, AddSubOperation::Sub > |
template<AccumElemBaseType AccumTag, unsigned Elems> | |
using | sub_accum = add_sub_accum_bits< accum_native_type_t< AccumTag >, Elems, AddSubOperation::Sub > |
template<unsigned AccumBits, typename T , unsigned Elems> | |
using | sub_accum_vector = add_sub_accum_vector_bits< AccumBits, type_bits_v< T >, T, Elems, AddSubOperation::Sub > |
template<typename T , unsigned Elems> | |
using | transpose = transpose_bits< type_bits_v< T >, T, Elems > |
template<typename T , unsigned Elems> | |
using | vector_storage_t = typename vector_storage< T, Elems >::type |
template<typename DstTag , typename T , unsigned Elems> | |
using | vector_to_accum_cast = vector_to_accum_cast_bits< DstTag, T, Elems > |
template<typename T , unsigned Elems> | |
using | zeros = zeros_bits< type_bits_v< T >, T, Elems > |
template<AccumClass Class, unsigned AccumBits, unsigned Elems> | |
using | zeros_acc = zeros_acc_bits< Class, AccumBits, Elems > |
template<AccumClass Class> | |
using | zeros_type_for_accum_t = typename zeros_type_for_accum< Class >::type |
Enumerations | |
enum class | AccumClass { Int , CInt , FP , CFP } |
enum class | AddSubOperation { Add , Sub } |
enum class | BitOp { And , Not , Or , Xor } |
enum class | CmpOp { LT , GE , EQ , NEQ } |
enum class | ElementaryOp { Sqrt , Inv , InvSqrt , SinCos , SinCosComplex , Sin , Cos , Fix2Float , Float2Fix , Tanh , Exp2 } |
enum class | FifoDirection { In , Out } |
enum class | FilterOp { Odd , Even } |
enum class | lut_oor_policy { saturate , truncate } |
enum class | MaxMinOperation { Max , Min , MaxCmp , MinCmp , MaxDiff } |
enum class | MulMacroOp { Unavailable = -1 , Mul = 0 , NegMul , Add_Mul , Add_NegMul , Sub_Mul = Add_NegMul } |
enum class | rounding_mode : unsigned { floor = rnd_floor , ceil = rnd_ceil , positive_inf = rnd_pos_inf , negative_inf = rnd_neg_inf , symmetric_inf = rnd_sym_inf , symmetric_zero = rnd_sym_zero , conv_even = rnd_conv_even , conv_odd = rnd_conv_odd } |
enum class | saturation_mode : unsigned { none = 0 , truncate = 1 , saturate = 1 , symmetric = 3 } |
Functions | |
template<typename DstTag , typename Acc > | |
auto | accum_cast (const Acc &acc) |
template<MulMacroOp Op> | |
constexpr MulMacroOp | add_to_op () |
template<typename T > | |
constexpr bool | check_alignment (const T *ptr, unsigned aligned_elems) |
template<unsigned Elems, typename T > | |
constexpr bool | check_vector_alignment (const T *ptr) |
template<typename Accum , typename... Accums> | |
auto | concat_accum (const Accum &acc, const Accum &acc2, const Accums &...accums) |
template<typename... Vectors> | |
auto | concat_vector (Vectors &&...vectors) |
template<typename T > | |
constexpr Operation | evaluate_mul_operation () |
template<typename T > | |
constexpr bool | get_mul_sign (T v) |
template<Accum Acc> requires (!Acc::is_floating_point()) | |
auto | get_sub_accum (const Acc &acc, unsigned i) |
template<MulMacroOp Op> | |
constexpr bool | has_abs () |
template<MulMacroOp Op> | |
constexpr bool | has_conj1 () |
template<MulMacroOp Op> | |
constexpr bool | has_conj2 () |
template<typename T , unsigned Elems> | |
constexpr unsigned | largest_valid_vector_size () |
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T > | |
auto | load_unaligned_vector (const T *ptr, unsigned aligned_elems=1) |
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T > | |
auto | load_vector (const T *ptr) |
template<typename Fn , typename... MutexTypes> | |
void | locked (Fn fn, MutexTypes &...mutexes) |
template<typename T , unsigned Elems, aie_dm_resource Resource, aie_dm_resource ResourceIn> | |
constexpr unaligned_vector_output_buffer_stream< T, Elems, Resource > & | operator<< (unaligned_vector_output_buffer_stream< T, Elems, Resource > &out, unaligned_vector_input_buffer_stream< T, Elems, ResourceIn > &in) |
template<typename T , unsigned Elems, aie_dm_resource Resource, aie_dm_resource ResourceIn> | |
constexpr unaligned_vector_output_buffer_stream< T, Elems, Resource > & | operator<< (unaligned_vector_output_buffer_stream< T, Elems, Resource > &out, vector_input_buffer_stream< T, Elems, ResourceIn > &in) |
template<typename T , unsigned Elems, aie_dm_resource Resource, aie_dm_resource ResourceIn> | |
constexpr vector_output_buffer_stream< T, Elems, Resource > & | operator<< (vector_output_buffer_stream< T, Elems, Resource > &out, unaligned_vector_input_buffer_stream< T, Elems, ResourceIn > &in) |
template<typename T , unsigned Elems, aie_dm_resource Resource, aie_dm_resource ResourceIn> | |
constexpr vector_output_buffer_stream< T, Elems, Resource > & | operator<< (vector_output_buffer_stream< T, Elems, Resource > &out, vector_input_buffer_stream< T, Elems, ResourceIn > &in) |
template<RegularAcc Acc> requires (Acc::is_floating_point()) | |
void | print_elem (const Acc &acc, unsigned i) |
template<RegularAcc Acc> requires (!Acc::is_floating_point() && !Acc::is_complex()) | |
void | print_elem (const Acc &acc, unsigned i) |
template<RegularAcc Acc> requires (!Acc::is_floating_point() && Acc::is_complex()) | |
void | print_elem (const Acc &acc, unsigned i) |
template<OverlappingAcc Acc> requires (Acc::is_complex()) | |
void | print_elem (const Acc &acc, unsigned i) |
template<OverlappingAcc Acc> requires (!Acc::is_complex()) | |
void | print_elem (const Acc &acc, unsigned i, const char *prefix="", const char *suffix=" ") |
template<typename T , unsigned Elems> | |
void | print_elem (const vector< T, Elems > &v, unsigned i) |
template<RegularAcc Acc, unsigned memory_bits> requires (!Acc::is_floating_point()) | |
void | print_int_component (const char *acc_ptr, const char *prefix="", const char *suffix="") |
template<typename T > | |
void | print_value (const T &e, int scale=0) |
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T1 , typename T2 > | |
T1 * | store_unaligned_vector (T1 *ptr, const vector< T2, Elems > &v, unsigned aligned_elems=1) |
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T1 , typename T2 > | |
T1 * | store_vector (T1 *ptr, const vector< T2, Elems > &v) |
template<Operation Op1, Operation Op2> | |
constexpr MulMacroOp | to_mul_antisym_macro_op () |
template<Operation AccOp, Operation Op1, Operation Op2> | |
constexpr MulMacroOp | to_mul_antisym_macro_op () |
template<Operation Op1, Operation Op2> | |
constexpr MulMacroOp | to_mul_macro_op () |
template<Operation AccOp, Operation Op1, Operation Op2> | |
constexpr MulMacroOp | to_mul_macro_op () |
template<Operation Op1, Operation Op2> | |
constexpr MulMacroOp | to_mul_sym_macro_op () |
template<Operation AccOp, Operation Op1, Operation Op2> | |
constexpr MulMacroOp | to_mul_sym_macro_op () |
template<Operation Op1, Operation Op2> | |
constexpr MulMacroOp | to_negmul_antisym_macro_op () |
template<Operation Op1, Operation Op2> | |
constexpr MulMacroOp | to_negmul_macro_op () |
template<Operation Op1, Operation Op2> | |
constexpr MulMacroOp | to_negmul_sym_macro_op () |
template<size_t... Indices, typename... MutexTypes> | |
void | unlock_reverse_helper (const std::index_sequence< Indices... > &, MutexTypes &&...mutexes) |
template<typename DstT , typename SrcT , unsigned SrcElems> | |
auto | vector_cast (const vector< SrcT, SrcElems > &v) |
Variables | |
constexpr size_t | dynamic_extent = std::numeric_limits<size_t>::max() |
struct aie::detail::accum_bits_for_tag |
struct aie::detail::accum_class_for_mul_types |
struct aie::detail::accum_class_for_tag |
struct aie::detail::accum_class_for_type |
struct aie::detail::accum_native_type |
struct aie::detail::accum_tag |
struct aie::detail::accum_tag< AccumClass::CInt, 32 > |
Class Members | ||
---|---|---|
typedef cacc32 | type |
struct aie::detail::accum_tag< AccumClass::CInt, 40 > |
Class Members | ||
---|---|---|
typedef cacc40 | type |
struct aie::detail::accum_tag< AccumClass::CInt, 48 > |
Class Members | ||
---|---|---|
typedef cacc48 | type |
struct aie::detail::accum_tag< AccumClass::CInt, 56 > |
Class Members | ||
---|---|---|
typedef cacc56 | type |
struct aie::detail::accum_tag< AccumClass::CInt, 64 > |
Class Members | ||
---|---|---|
typedef cacc64 | type |
struct aie::detail::accum_tag< AccumClass::FP, 32 > |
Class Members | ||
---|---|---|
typedef accfloat | type |
struct aie::detail::accum_tag< AccumClass::Int, 32 > |
Class Members | ||
---|---|---|
typedef acc32 | type |
struct aie::detail::accum_tag< AccumClass::Int, 40 > |
Class Members | ||
---|---|---|
typedef acc40 | type |
struct aie::detail::accum_tag< AccumClass::Int, 48 > |
Class Members | ||
---|---|---|
typedef acc48 | type |
struct aie::detail::accum_tag< AccumClass::Int, 56 > |
Class Members | ||
---|---|---|
typedef acc56 | type |
struct aie::detail::accum_tag< AccumClass::Int, 64 > |
Class Members | ||
---|---|---|
typedef acc64 | type |
struct aie::detail::accum_tag_or_default |
Class Members | ||
---|---|---|
typedef conditional_t< is_same_v< AccumTag, accauto >, deduce_accauto_helper_t< Tags... >, AccumTag > | type |
struct aie::detail::add_memory_bank |
struct aie::detail::add_memory_bank< aie_dm_resource::a, T > |
struct aie::detail::add_memory_bank< aie_dm_resource::b, T > |
struct aie::detail::add_memory_bank< aie_dm_resource::c, T > |
struct aie::detail::add_memory_bank< aie_dm_resource::d, T > |
struct aie::detail::add_memory_bank< aie_dm_resource::stack, T > |
struct aie::detail::adopt_lock_t |
class aie::detail::basic_mdspan |
class aie::detail::basic_tiled_mdspan |
struct aie::detail::C_block |
struct aie::detail::cfr |
class aie::detail::circular_iterator |
struct aie::detail::compute_C_type |
struct aie::detail::compute_C_type< int8, int8 > |
Class Members | ||
---|---|---|
typedef int8 | type |
struct aie::detail::compute_C_type< int8, uint8 > |
Class Members | ||
---|---|---|
typedef int8 | type |
struct aie::detail::compute_C_type< uint8, int8 > |
Class Members | ||
---|---|---|
typedef int8 | type |
struct aie::detail::compute_C_type< uint8, uint8 > |
Class Members | ||
---|---|---|
typedef uint8 | type |
struct aie::detail::consume_terms |
class aie::detail::consumer_sem |
struct aie::detail::deduce_accauto_helper |
struct aie::detail::deduce_accauto_helper< Tag > |
Class Members | ||
---|---|---|
typedef default_accum_tag_t< Tag, Tag > | type |
struct aie::detail::deduce_accauto_helper< Tag1, Tag2 > |
Class Members | ||
---|---|---|
typedef default_accum_tag_t< Tag1, Tag2 > | type |
struct aie::detail::default_accum_tag |
Class Members | ||
---|---|---|
typedef conditional_t< is_complex_v< A >||is_complex_v< B >, typename default_accum_tag_helper< default_accum_bits< A, B >(), is_floating_point_v< A > >::ctype, typename default_accum_tag_helper< default_accum_bits< A, B >(), is_floating_point_v< A > >::type > | type |
struct aie::detail::default_accum_tag_helper |
struct aie::detail::default_accum_tag_helper< 32, false > |
struct aie::detail::default_accum_tag_helper< 48 > |
struct aie::detail::default_accum_tag_helper< 64 > |
struct aie::detail::default_repr |
struct aie::detail::default_repr< 2 > |
Class Members | ||
---|---|---|
typedef tuple< dim_2d > | type |
struct aie::detail::default_twiddle_type |
struct aie::detail::fft_dit |
struct aie::detail::fft_dit_stage |
struct aie::detail::get_value_type |
struct aie::detail::get_value_type< vector< T, Elems > > |
struct aie::detail::is_complex |
struct aie::detail::is_floating_point |
struct aie::detail::is_integral |
struct aie::detail::is_signed |
struct aie::detail::is_valid_accum_type |
struct aie::detail::is_valid_element_type |
struct aie::detail::iter_state |
Class Members | ||
---|---|---|
typedef conditional_t< is_one_of_v< U, dim_3d, sliding_window_dim_3d >, state_3d, conditional_t< is_one_of_v< U, dim_2d, sliding_window_dim_2d >, state_2d, state_1d > > | storage_t |
Class Members | ||
---|---|---|
storage_t | state_ |
struct aie::detail::linear_approx |
struct aie::detail::native_vector_length |
struct aie::detail::native_vector_traits |
struct aie::detail::native_vector_type |
struct aie::detail::parallel_lookup |
class aie::detail::producer_sem |
struct aie::detail::random_circular_iterator_storage_dynamic |
class aie::detail::restrict_tensor_buffer_stream |
class aie::detail::sliding_window_buffer_stream |
class aie::detail::sparse_vector |
class aie::detail::sparse_vector_input_buffer_stream |
class aie::detail::tensor_buffer_stream |
struct aie::detail::tiled_span_extents |
struct aie::detail::tiled_span_extents_common |
class aie::detail::vector_circular_iterator |
struct aie::detail::vector_ldst_align |
struct aie::detail::vector_storage |
struct aie::detail::zeros_type_for_accum |
struct aie::detail::zeros_type_for_accum< AccumClass::Int > |
Class Members | ||
---|---|---|
typedef int32 | type |
using aie::detail::abs = typedef abs_bits<type_bits_v<T>, T, Elems> |
using aie::detail::abs_square = typedef abs_square_bits<T, TR, Elems> |
using aie::detail::accum_native_type_t = typedef typename accum_native_type<T>::type |
using aie::detail::accum_tag_for_mul_types = typedef accum_tag_t<accum_class_for_mul_types_v<T1, T2>, Bits> |
using aie::detail::accum_tag_for_type = typedef accum_tag_t<accum_class_for_type<T>::value(), Bits> |
using aie::detail::accum_tag_or_default_t = typedef typename accum_tag_or_default<AccumTag, Tags...>::type |
using aie::detail::accum_tag_t = typedef typename accum_tag<Class, Bits>::type |
using aie::detail::accum_to_vector_cast = typedef accum_to_vector_cast_bits<DstT, accum_class_for_tag_v<Tag>, accum_bits_for_tag_v<Tag>, Elems> |
using aie::detail::add = typedef add_sub_bits<type_bits_v<T>, T, Elems, AddSubOperation::Add> |
using aie::detail::add_accum = typedef add_sub_accum_bits<accum_native_type_t<AccumTag>, Elems, AddSubOperation::Add> |
using aie::detail::add_accum_vector = typedef add_sub_accum_vector_bits<AccumBits, type_bits_v<T>, T, Elems, AddSubOperation::Add> |
using aie::detail::add_memory_bank_t = typedef typename add_memory_bank<Resource, T>::type |
using aie::detail::add_reduce = typedef add_reduce_bits<type_bits_v<T>, T, Elems> |
using aie::detail::add_reduce_v = typedef add_reduce_v_bits<type_bits_v<T>, T, Elems> |
using aie::detail::bit = typedef bit_bits<type_bits_v<T>, T, Elems, Op> |
using aie::detail::broadcast = typedef broadcast_bits<type_bits_v<T>, T, Elems> |
using aie::detail::compute_C_type_t = typedef typename compute_C_type<TypeA, TypeB>::type |
using aie::detail::conj = typedef conj_bits<type_bits_v<T>, T, Elems> |
using aie::detail::const_circular_iterator = typedef circular_iterator<const T, Elems, Stride, Resource> |
using aie::detail::const_pattern_iterator = typedef pattern_iterator<const std::remove_const_t<T>, Steps> |
using aie::detail::const_random_circular_iterator = typedef random_circular_iterator<const T, Elems, Stride, Resource> |
using aie::detail::const_restrict_vector_iterator = typedef restrict_vector_iterator<const std::remove_const_t<T>, Elems, Stride, Resource> |
using aie::detail::const_sliding_window_buffer_stream = typedef sliding_window_buffer_stream<const std::remove_const_t<T>, Elems, IterDescriptor, Resource> |
using aie::detail::const_unaligned_vector_iterator = typedef unaligned_vector_iterator<const std::remove_const_t<T>, Elems, Resource> |
using aie::detail::const_vector_circular_iterator = typedef vector_circular_iterator<const T, N, Elems, Stride, Resource> |
using aie::detail::const_vector_iterator = typedef vector_iterator<const std::remove_const_t<T>, Elems, Stride, Resource> |
using aie::detail::const_vector_random_circular_iterator = typedef vector_random_circular_iterator<const T, N, Elems, Stride, Resource> |
using aie::detail::consumer_lock = typedef scoped_lock_impl<consumer_sem<NumReaders, NumWriters> > |
using aie::detail::deduce_accauto_helper_t = typedef typename deduce_accauto_helper<Tags...>::type |
using aie::detail::default_accum_tag_t = typedef typename default_accum_tag<A, B>::type |
using aie::detail::default_repr_t = typedef typename default_repr<N>::type |
using aie::detail::default_twiddle_type_t = typedef typename default_twiddle_type<Input, Output>::type |
using aie::detail::dyn_extents = typedef std::array<size_t, Rank> |
using aie::detail::elementary = typedef elementary_bits<Op, type_bits_v<T>, TR, T> |
using aie::detail::elementary_vector = typedef elementary_vector_bits<Op, type_bits_v<T>, TR, T, N> |
using aie::detail::eq = typedef cmp_impl<CmpOp::EQ, T, Elems> |
using aie::detail::extents = typedef std::integer_sequence<size_t, Extents...> |
using aie::detail::filter = typedef filter_bits<type_bits_v<T>, T, Elems, Op> |
using aie::detail::ge = typedef cmp_impl<CmpOp::GE, T, Elems> |
using aie::detail::get_value_type_t = typedef typename get_value_type<T>::type |
using aie::detail::interleave_butterfly = typedef interleave_bits_butterfly<type_bits_v<T>, T, Elems> |
using aie::detail::interleave_butterfly_half = typedef interleave_bits_butterfly_half<type_bits_v<T>, T, Elems> |
using aie::detail::interleave_crossover = typedef interleave_bits_crossover<type_bits_v<T>, T, Elems> |
using aie::detail::interleave_custom = typedef interleave_bits_custom<type_bits_v<T>, T, Elems> |
using aie::detail::interleave_custom_static = typedef interleave_bits_custom_static<type_bits_v<T>, T, Elems, Select...> |
using aie::detail::interleave_unzip = typedef interleave_bits_unzip<type_bits_v<T>, T, Elems> |
using aie::detail::interleave_zip = typedef interleave_bits_zip<type_bits_v<T>, T, Elems> |
using aie::detail::lt = typedef cmp_impl<CmpOp::LT, T, Elems> |
using aie::detail::make_dynamic_extents = typedef utils::make_integer_broadcast<size_t, Rank, dynamic_extent> |
using aie::detail::max = typedef max_min_bits<type_bits_v<T>, T, Elems, MaxMinOperation::Max> |
using aie::detail::max_cmp = typedef max_min_cmp_bits<type_bits_v<T>, T, Elems, MaxMinOperation::MaxCmp> |
using aie::detail::max_reduce = typedef max_min_reduce_bits<type_bits_v<T>, T, Elems, MaxMinOperation::Max> |
using aie::detail::maxdiff = typedef max_min_bits<type_bits_v<T>, T, Elems, MaxMinOperation::MaxDiff> |
using aie::detail::min = typedef max_min_bits<type_bits_v<T>, T, Elems, MaxMinOperation::Min> |
using aie::detail::min_cmp = typedef max_min_cmp_bits<type_bits_v<T>, T, Elems, MaxMinOperation::MinCmp> |
using aie::detail::min_reduce = typedef max_min_reduce_bits<type_bits_v<T>, T, Elems, MaxMinOperation::Min> |
using aie::detail::mul = typedef mul_bits<MulOp, AccumBits, type_bits_v<T1>, T1, type_bits_v<T2>, T2> |
using aie::detail::mul_maxmin = typedef mul_maxmin_bits<MulOp, AccumBits, type_bits_v<T1>, T1, type_bits_v<T2>, T2> |
using aie::detail::mul_reduce = typedef mul_reduce_bits<AccumBits, type_bits_v<T>, T, Elems> |
using aie::detail::native_vector_type_t = typedef typename native_vector_type<T, Elems>::type |
using aie::detail::neg = typedef neg_bits<type_bits_v<T>, T, Elems> |
using aie::detail::neq = typedef cmp_impl<CmpOp::NEQ, T, Elems> |
using aie::detail::producer_lock = typedef scoped_lock_impl<producer_sem<NumReaders, NumWriters> > |
using aie::detail::scoped_lock = typedef scoped_lock_impl<mutex> |
using aie::detail::select = typedef select_bits<type_bits_v<T>, T, Elems> |
using aie::detail::shift = typedef shift_bits<T, type_bits_v<T>, Elems> |
using aie::detail::shuffle_down = typedef shuffle_down_bits<type_bits_v<T>, T, Elems> |
using aie::detail::shuffle_down_fill = typedef shuffle_down_fill_bits<type_bits_v<T>, T, Elems> |
using aie::detail::shuffle_down_replicate = typedef shuffle_down_replicate_bits<type_bits_v<T>, T, Elems> |
using aie::detail::shuffle_down_rotate = typedef shuffle_down_rotate_bits<type_bits_v<T>, T, Elems> |
using aie::detail::shuffle_up = typedef shuffle_up_bits<type_bits_v<T>, T, Elems> |
using aie::detail::shuffle_up_fill = typedef shuffle_up_fill_bits<type_bits_v<T>, T, Elems> |
using aie::detail::shuffle_up_replicate = typedef shuffle_up_replicate_bits<type_bits_v<T>, T, Elems> |
using aie::detail::shuffle_up_rotate = typedef shuffle_up_rotate_bits<type_bits_v<T>, T, Elems> |
using aie::detail::sliding_mul = typedef sliding_mul_bits <OutElems, Points, CoeffStep, DataStepX, DataStepY, AccumBits, type_bits_v<CoeffType>, type_bits_v<DataType>, CoeffType, DataType> |
using aie::detail::sliding_mul_ch = typedef sliding_mul_ch_bits <Outputs, Channels, Points, CoeffStep, DataStepX, DataStepY, AccumBits, type_bits_v<CoeffType>, type_bits_v<DataType>, CoeffType, DataType> |
using aie::detail::sliding_mul_sym = typedef sliding_mul_sym_bits<OutElems, Points, CoeffStep, DataStepX, DataStepY, AccumBits, type_bits_v<CoeffType>, type_bits_v<DataType>, CoeffType, DataType> |
using aie::detail::sliding_mul_sym_uct = typedef sliding_mul_sym_uct_bits<OutElems, Points, CoeffStep, DataStep, AccumBits, type_bits_v<CoeffType>, type_bits_v<DataType>, CoeffType, DataType> |
using aie::detail::square = typedef square_bits<MulOp, AccumBits, type_bits_v<T>, T> |
using aie::detail::sub = typedef add_sub_bits<type_bits_v<T>, T, Elems, AddSubOperation::Sub> |
using aie::detail::sub_accum = typedef add_sub_accum_bits<accum_native_type_t<AccumTag>, Elems, AddSubOperation::Sub> |
using aie::detail::sub_accum_vector = typedef add_sub_accum_vector_bits<AccumBits, type_bits_v<T>, T, Elems, AddSubOperation::Sub> |
using aie::detail::transpose = typedef transpose_bits<type_bits_v<T>, T, Elems> |
using aie::detail::vector_storage_t = typedef typename vector_storage<T, Elems>::type |
using aie::detail::vector_to_accum_cast = typedef vector_to_accum_cast_bits<DstTag, T, Elems> |
using aie::detail::zeros = typedef zeros_bits<type_bits_v<T>, T, Elems> |
using aie::detail::zeros_acc = typedef zeros_acc_bits<Class, AccumBits, Elems> |
using aie::detail::zeros_type_for_accum_t = typedef typename zeros_type_for_accum<Class>::type |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
auto aie::detail::accum_cast | ( | const Acc & | acc | ) |
|
constexpr |
|
constexpr |
|
constexpr |
auto aie::detail::concat_accum | ( | const Accum & | acc, |
const Accum & | acc2, | ||
const Accums &... | accums | ||
) |
auto aie::detail::concat_vector | ( | Vectors &&... | vectors | ) |
|
constexpr |
|
constexpr |
auto aie::detail::get_sub_accum | ( | const Acc & | acc, |
unsigned | i | ||
) |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
auto aie::detail::load_unaligned_vector | ( | const T * | ptr, |
unsigned | aligned_elems = 1 |
||
) |
auto aie::detail::load_vector | ( | const T * | ptr | ) |
void aie::detail::locked | ( | Fn | fn, |
MutexTypes &... | mutexes | ||
) |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
void aie::detail::print_elem | ( | const Acc & | acc, |
unsigned | i | ||
) |
void aie::detail::print_elem | ( | const Acc & | acc, |
unsigned | i | ||
) |
void aie::detail::print_elem | ( | const Acc & | acc, |
unsigned | i | ||
) |
void aie::detail::print_elem | ( | const Acc & | acc, |
unsigned | i | ||
) |
void aie::detail::print_elem | ( | const Acc & | acc, |
unsigned | i, | ||
const char * | prefix = "" , |
||
const char * | suffix = " " |
||
) |
void aie::detail::print_elem | ( | const vector< T, Elems > & | v, |
unsigned | i | ||
) |
void aie::detail::print_int_component | ( | const char * | acc_ptr, |
const char * | prefix = "" , |
||
const char * | suffix = "" |
||
) |
void aie::detail::print_value | ( | const T & | e, |
int | scale = 0 |
||
) |
T1 * aie::detail::store_unaligned_vector | ( | T1 * | ptr, |
const vector< T2, Elems > & | v, | ||
unsigned | aligned_elems = 1 |
||
) |
T1 * aie::detail::store_vector | ( | T1 * | ptr, |
const vector< T2, Elems > & | v | ||
) |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
void aie::detail::unlock_reverse_helper | ( | const std::index_sequence< Indices... > & | , |
MutexTypes &&... | mutexes | ||
) |
auto aie::detail::vector_cast | ( | const vector< SrcT, SrcElems > & | v | ) |
|
inlineconstexpr |