AI Engine API User Guide (AIE) 2022.2
accum.hpp File Reference
#include <type_traits>
#include "utils.hpp"
#include "vector.hpp"
#include "aie1/accum.hpp"

Classes

struct  aie::detail::accum_bits_for_tag< acc16 >
 
struct  aie::detail::accum_bits_for_tag< acc24 >
 
struct  aie::detail::accum_bits_for_tag< acc32 >
 
struct  aie::detail::accum_bits_for_tag< acc40 >
 
struct  aie::detail::accum_bits_for_tag< acc48 >
 
struct  aie::detail::accum_bits_for_tag< acc56 >
 
struct  aie::detail::accum_bits_for_tag< acc64 >
 
struct  aie::detail::accum_bits_for_tag< acc72 >
 
struct  aie::detail::accum_bits_for_tag< acc80 >
 
struct  aie::detail::accum_bits_for_tag< accfloat >
 
struct  aie::detail::accum_bits_for_tag< cacc16 >
 
struct  aie::detail::accum_bits_for_tag< cacc24 >
 
struct  aie::detail::accum_bits_for_tag< cacc32 >
 
struct  aie::detail::accum_bits_for_tag< cacc40 >
 
struct  aie::detail::accum_bits_for_tag< cacc48 >
 
struct  aie::detail::accum_bits_for_tag< cacc56 >
 
struct  aie::detail::accum_bits_for_tag< cacc64 >
 
struct  aie::detail::accum_bits_for_tag< cacc72 >
 
struct  aie::detail::accum_bits_for_tag< cacc80 >
 
struct  aie::detail::accum_bits_for_tag< caccfloat >
 
struct  aie::detail::accum_class_for_tag< acc16 >
 
struct  aie::detail::accum_class_for_tag< acc24 >
 
struct  aie::detail::accum_class_for_tag< acc32 >
 
struct  aie::detail::accum_class_for_tag< acc40 >
 
struct  aie::detail::accum_class_for_tag< acc48 >
 
struct  aie::detail::accum_class_for_tag< acc56 >
 
struct  aie::detail::accum_class_for_tag< acc64 >
 
struct  aie::detail::accum_class_for_tag< acc72 >
 
struct  aie::detail::accum_class_for_tag< acc80 >
 
struct  aie::detail::accum_class_for_tag< accfloat >
 
struct  aie::detail::accum_class_for_tag< cacc16 >
 
struct  aie::detail::accum_class_for_tag< cacc24 >
 
struct  aie::detail::accum_class_for_tag< cacc32 >
 
struct  aie::detail::accum_class_for_tag< cacc40 >
 
struct  aie::detail::accum_class_for_tag< cacc48 >
 
struct  aie::detail::accum_class_for_tag< cacc56 >
 
struct  aie::detail::accum_class_for_tag< cacc64 >
 
struct  aie::detail::accum_class_for_tag< cacc72 >
 
struct  aie::detail::accum_class_for_tag< cacc80 >
 
struct  aie::detail::accum_class_for_tag< caccfloat >
 
struct  aie::detail::accum_tag< AccumClass::CFP, 32 >
 
struct  aie::detail::accum_tag< AccumClass::CInt, 16 >
 
struct  aie::detail::accum_tag< AccumClass::CInt, 24 >
 
struct  aie::detail::accum_tag< AccumClass::CInt, 32 >
 
struct  aie::detail::accum_tag< AccumClass::CInt, 40 >
 
struct  aie::detail::accum_tag< AccumClass::CInt, 48 >
 
struct  aie::detail::accum_tag< AccumClass::CInt, 56 >
 
struct  aie::detail::accum_tag< AccumClass::CInt, 64 >
 
struct  aie::detail::accum_tag< AccumClass::CInt, 72 >
 
struct  aie::detail::accum_tag< AccumClass::CInt, 80 >
 
struct  aie::detail::accum_tag< AccumClass::FP, 32 >
 
struct  aie::detail::accum_tag< AccumClass::Int, 16 >
 
struct  aie::detail::accum_tag< AccumClass::Int, 24 >
 
struct  aie::detail::accum_tag< AccumClass::Int, 32 >
 
struct  aie::detail::accum_tag< AccumClass::Int, 40 >
 
struct  aie::detail::accum_tag< AccumClass::Int, 48 >
 
struct  aie::detail::accum_tag< AccumClass::Int, 56 >
 
struct  aie::detail::accum_tag< AccumClass::Int, 64 >
 
struct  aie::detail::accum_tag< AccumClass::Int, 72 >
 
struct  aie::detail::accum_tag< AccumClass::Int, 80 >
 
struct  aie::detail::concat_accum_helper< Class, Bits, Elems >
 
struct  aie::detail::default_accum_tag< A, B >
 
struct  aie::detail::default_accum_tag_helper< 32, false >
 
struct  aie::detail::default_accum_tag_helper< 32, true >
 
struct  aie::detail::default_accum_tag_helper< 48 >
 
struct  aie::detail::default_accum_tag_helper< 64 >
 
struct  aie::detail::is_accum< T >
 
struct  aie::detail::is_accum< accum< Class, Bits, Elems > >
 
struct  aie::detail::is_valid_accum_type< T >
 

Namespaces

namespace  aie
 
namespace  aie::detail
 

Macros

#define __AIE_API_DETAIL_ACCUM__HPP__
 

Typedefs

template<typename T >
using aie::detail::accum_native_type_t = typename accum_native_type< T >::type
 
template<typename T1 , typename T2 , unsigned Bits = default_accum_bits<T1, T2>()>
using aie::detail::accum_tag_for_mul_types = accum_tag_t< accum_class_for_mul_types_v< T1, T2 >, Bits >
 
template<AccumClass Class, unsigned Bits>
using aie::detail::accum_tag_t = typename accum_tag< Class, Bits >::type
 
template<typename A , typename B >
using aie::detail::default_accum_tag_t = typename default_accum_tag< A, B >::type
 

Enumerations

enum class  aie::detail::AccumClass { aie::detail::Int , aie::detail::CInt , aie::detail::FP , aie::detail::CFP }
 

Functions

template<typename DstTag , typename Acc >
auto aie::detail::accum_cast (const Acc &acc)
 
template<typename... Accums>
auto aie::detail::concat_accum (Accums &&...accums)
 

Class Documentation

◆ aie::detail::accum_tag< AccumClass::CFP, 32 >

struct aie::detail::accum_tag< AccumClass::CFP, 32 >
Class Members
typedef caccfloat type

◆ aie::detail::accum_tag< AccumClass::CInt, 16 >

struct aie::detail::accum_tag< AccumClass::CInt, 16 >
Class Members
typedef cacc16 type

◆ aie::detail::accum_tag< AccumClass::CInt, 24 >

struct aie::detail::accum_tag< AccumClass::CInt, 24 >
Class Members
typedef cacc24 type

◆ aie::detail::accum_tag< AccumClass::CInt, 32 >

struct aie::detail::accum_tag< AccumClass::CInt, 32 >
Class Members
typedef cacc32 type

◆ aie::detail::accum_tag< AccumClass::CInt, 40 >

struct aie::detail::accum_tag< AccumClass::CInt, 40 >
Class Members
typedef cacc40 type

◆ aie::detail::accum_tag< AccumClass::CInt, 48 >

struct aie::detail::accum_tag< AccumClass::CInt, 48 >
Class Members
typedef cacc48 type

◆ aie::detail::accum_tag< AccumClass::CInt, 56 >

struct aie::detail::accum_tag< AccumClass::CInt, 56 >
Class Members
typedef cacc56 type

◆ aie::detail::accum_tag< AccumClass::CInt, 64 >

struct aie::detail::accum_tag< AccumClass::CInt, 64 >
Class Members
typedef cacc64 type

◆ aie::detail::accum_tag< AccumClass::CInt, 72 >

struct aie::detail::accum_tag< AccumClass::CInt, 72 >
Class Members
typedef cacc72 type

◆ aie::detail::accum_tag< AccumClass::CInt, 80 >

struct aie::detail::accum_tag< AccumClass::CInt, 80 >
Class Members
typedef cacc80 type

◆ aie::detail::accum_tag< AccumClass::FP, 32 >

struct aie::detail::accum_tag< AccumClass::FP, 32 >
Class Members
typedef accfloat type

◆ aie::detail::accum_tag< AccumClass::Int, 16 >

struct aie::detail::accum_tag< AccumClass::Int, 16 >
Class Members
typedef acc16 type

◆ aie::detail::accum_tag< AccumClass::Int, 24 >

struct aie::detail::accum_tag< AccumClass::Int, 24 >
Class Members
typedef acc24 type

◆ aie::detail::accum_tag< AccumClass::Int, 32 >

struct aie::detail::accum_tag< AccumClass::Int, 32 >
Class Members
typedef acc32 type

◆ aie::detail::accum_tag< AccumClass::Int, 40 >

struct aie::detail::accum_tag< AccumClass::Int, 40 >
Class Members
typedef acc40 type

◆ aie::detail::accum_tag< AccumClass::Int, 48 >

struct aie::detail::accum_tag< AccumClass::Int, 48 >
Class Members
typedef acc48 type

◆ aie::detail::accum_tag< AccumClass::Int, 56 >

struct aie::detail::accum_tag< AccumClass::Int, 56 >
Class Members
typedef acc56 type

◆ aie::detail::accum_tag< AccumClass::Int, 64 >

struct aie::detail::accum_tag< AccumClass::Int, 64 >
Class Members
typedef acc64 type

◆ aie::detail::accum_tag< AccumClass::Int, 72 >

struct aie::detail::accum_tag< AccumClass::Int, 72 >
Class Members
typedef acc72 type

◆ aie::detail::accum_tag< AccumClass::Int, 80 >

struct aie::detail::accum_tag< AccumClass::Int, 80 >
Class Members
typedef acc80 type

◆ aie::detail::default_accum_tag

struct aie::detail::default_accum_tag
template<typename A, typename B>
struct aie::detail::default_accum_tag< A, B >
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

◆ aie::detail::default_accum_tag_helper< 32, false >

struct aie::detail::default_accum_tag_helper< 32, false >
Class Members
typedef cacc32 ctype
typedef acc32 type

◆ aie::detail::default_accum_tag_helper< 32, true >

struct aie::detail::default_accum_tag_helper< 32, true >
Class Members
typedef caccfloat ctype
typedef accfloat type

◆ aie::detail::default_accum_tag_helper< 48 >

struct aie::detail::default_accum_tag_helper< 48 >
Class Members
typedef cacc48 ctype
typedef acc48 type

◆ aie::detail::default_accum_tag_helper< 64 >

struct aie::detail::default_accum_tag_helper< 64 >
Class Members
typedef cacc64 ctype
typedef acc64 type