AI Engine API User Guide (AIE) 2023.2
Loading...
Searching...
No Matches
detail/accum.hpp File Reference
#include <type_traits>
#include "../concepts.hpp"
#include "../types.hpp"
#include "utils.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< 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_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< 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_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::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_or_default< AccumTag, Tags >
 
struct  aie::detail::concat_accum_helper< Accum >
 
struct  aie::detail::deduce_accauto_helper< Tag >
 
struct  aie::detail::deduce_accauto_helper< Tag1, Tag2 >
 
struct  aie::detail::default_accum_tag< A, B >
 
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::is_accum< T >
 
struct  aie::detail::is_accum< accum< Tag, Elems > >
 
struct  aie::detail::is_valid_accum_type< T >
 

Namespaces

namespace  aie
 Base namespace for AIE operations and types.
 
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<typename T , unsigned Bits = default_accum_bits<T, T>()>
using aie::detail::accum_tag_for_type = accum_tag_t< accum_class_for_type< T >::value(), Bits >
 
template<typename AccumTag , typename ... Tags>
using aie::detail::accum_tag_or_default_t = typename accum_tag_or_default< AccumTag, Tags... >::type
 
template<AccumClass Class, unsigned Bits>
using aie::detail::accum_tag_t = typename accum_tag< Class, Bits >::type
 
template<typename ... Tags>
using aie::detail::deduce_accauto_helper_t = typename deduce_accauto_helper< Tags... >::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 Accum , typename... Accums>
auto aie::detail::concat_accum (const Accum &acc, const Accum &acc2, const Accums &...accums)
 

Class Documentation

◆ 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::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_or_default

struct aie::detail::accum_tag_or_default
template<typename AccumTag, typename ... Tags>
struct aie::detail::accum_tag_or_default< AccumTag, Tags >
Class Members
typedef conditional_t< is_same_v< AccumTag, accauto >, deduce_accauto_helper_t< Tags... >, AccumTag > type

◆ aie::detail::deduce_accauto_helper< Tag >

struct aie::detail::deduce_accauto_helper< Tag >
template<typename Tag>
requires (is_valid_element_type_v<Tag>)
struct aie::detail::deduce_accauto_helper< Tag >
Class Members
typedef default_accum_tag_t< Tag, Tag > type

◆ aie::detail::deduce_accauto_helper< Tag1, Tag2 >

struct aie::detail::deduce_accauto_helper< Tag1, Tag2 >
template<typename Tag1, typename Tag2>
requires (is_valid_element_type_v<Tag1, Tag2>)
struct aie::detail::deduce_accauto_helper< Tag1, Tag2 >
Class Members
typedef default_accum_tag_t< Tag1, Tag2 > 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< 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

◆ aie::detail::is_valid_accum_type

struct aie::detail::is_valid_accum_type
template<typename T>
struct aie::detail::is_valid_accum_type< T >

Macro Definition Documentation

◆ __AIE_API_DETAIL_ACCUM__HPP__

#define __AIE_API_DETAIL_ACCUM__HPP__