AI Engine API User Guide (AIE) 2022.2
mul.hpp File Reference
#include <cstdlib>
#include <cmath>
#include <climits>
#include "vector.hpp"
#include "aie1/mul.hpp"
#include "aie1/mul_reduce.hpp"
#include "aie1/sliding_mul.hpp"
#include "aie1/sliding_mul_sym.hpp"

Namespaces

namespace  aie
 
namespace  aie::detail
 

Macros

#define __AIE_API_DETAIL_MUL__HPP__
 

Typedefs

template<MulMacroOp MulOp, unsigned AccumBits, typename T1 , typename T2 >
using aie::detail::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 aie::detail::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 aie::detail::mul_reduce = mul_reduce_bits< AccumBits, type_bits_v< T >, T, Elems >
 
template<unsigned OutElems, unsigned Points, int CoeffStep, int DataStepX, int DataStepY, unsigned AccumBits, typename CoeffType , typename DataType >
using aie::detail::sliding_mul = sliding_mul_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 DataStepX, int DataStepY, unsigned AccumBits, typename CoeffType , typename DataType >
using aie::detail::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 aie::detail::sliding_mul_sym_uct = sliding_mul_sym_uct_bits< OutElems, Points, CoeffStep, DataStep, AccumBits, type_bits_v< CoeffType >, type_bits_v< DataType >, CoeffType, DataType >
 

Enumerations

enum class  aie::detail::MulMacroOp {
  aie::detail::Mul , aie::detail::NegMul , aie::detail::Add_Mul , aie::detail::Add_NegMul ,
  aie::detail::Sub_Mul = Add_NegMul , aie::detail::MulSym , aie::detail::NegMulSym , aie::detail::MulAntisym ,
  aie::detail::NegMulAntisym , aie::detail::Add_MulSym , aie::detail::Add_NegMulSym , aie::detail::Sub_MulSym = Add_NegMulSym ,
  aie::detail::Add_MulAntisym , aie::detail::Add_NegMulAntisym , aie::detail::Sub_MulAntisym = Add_NegMulAntisym , aie::detail::MulAbs1 ,
  aie::detail::MulAbs1Conj2 , aie::detail::MulConj1 , aie::detail::MulConj1Conj2 , aie::detail::MulConj2 ,
  aie::detail::NegMulAbs1 , aie::detail::NegMulAbs1Conj2 , aie::detail::NegMulConj1 , aie::detail::NegMulConj1Conj2 ,
  aie::detail::NegMulConj2 , aie::detail::MulSymConj1 , aie::detail::MulSymConj1Conj2 , aie::detail::MulSymConj2 ,
  aie::detail::NegMulSymConj1 , aie::detail::NegMulSymConj1Conj2 , aie::detail::NegMulSymConj2 , aie::detail::MulAntisymConj1 ,
  aie::detail::MulAntisymConj1Conj2 , aie::detail::MulAntisymConj2 , aie::detail::NegMulAntisymConj1 , aie::detail::NegMulAntisymConj1Conj2 ,
  aie::detail::NegMulAntisymConj2 , aie::detail::MulMax , aie::detail::MulMin , aie::detail::Add_MulAbs1 ,
  aie::detail::Add_MulAbs1Conj2 , aie::detail::Add_MulConj1 , aie::detail::Add_MulConj1Conj2 , aie::detail::Add_MulConj2 ,
  aie::detail::Sub_MulAbs1 , aie::detail::Sub_MulAbs1Conj2 , aie::detail::Sub_MulConj1 , aie::detail::Sub_MulConj1Conj2 ,
  aie::detail::Sub_MulConj2 , aie::detail::Add_MulSymConj1 , aie::detail::Add_MulSymConj1Conj2 , aie::detail::Add_MulSymConj2 ,
  aie::detail::Sub_MulSymConj1 , aie::detail::Sub_MulSymConj1Conj2 , aie::detail::Sub_MulSymConj2 , aie::detail::Add_MulAntisymConj1 ,
  aie::detail::Add_MulAntisymConj1Conj2 , aie::detail::Add_MulAntisymConj2 , aie::detail::Sub_MulAntisymConj1 , aie::detail::Sub_MulAntisymConj1Conj2 ,
  aie::detail::Sub_MulAntisymConj2 , aie::detail::Add_MulMax , aie::detail::Add_MulMin , aie::detail::Sub_MulMax ,
  aie::detail::Sub_MulMin
}
 

Functions

template<MulMacroOp Op>
constexpr MulMacroOp aie::detail::add_to_op ()
 
template<typename T >
constexpr Operation aie::detail::evaluate_mul_operation ()
 
template<typename T >
constexpr bool aie::detail::get_mul_sign (T v)
 
template<MulMacroOp Op>
constexpr bool aie::detail::has_abs ()
 
template<MulMacroOp Op>
constexpr bool aie::detail::has_conj1 ()
 
template<MulMacroOp Op>
constexpr bool aie::detail::has_conj2 ()
 
template<Operation Op1, Operation Op2>
constexpr MulMacroOp aie::detail::to_mul_antisym_macro_op ()
 
template<Operation AccOp, Operation Op1, Operation Op2>
constexpr MulMacroOp aie::detail::to_mul_antisym_macro_op ()
 
template<Operation Op1, Operation Op2>
constexpr MulMacroOp aie::detail::to_mul_macro_op ()
 
template<Operation AccOp, Operation Op1, Operation Op2>
constexpr MulMacroOp aie::detail::to_mul_macro_op ()
 
template<Operation Op1, Operation Op2>
constexpr MulMacroOp aie::detail::to_mul_sym_macro_op ()
 
template<Operation AccOp, Operation Op1, Operation Op2>
constexpr MulMacroOp aie::detail::to_mul_sym_macro_op ()
 
template<Operation Op1, Operation Op2>
constexpr MulMacroOp aie::detail::to_negmul_antisym_macro_op ()
 
template<Operation Op1, Operation Op2>
constexpr MulMacroOp aie::detail::to_negmul_macro_op ()
 
template<Operation Op1, Operation Op2>
constexpr MulMacroOp aie::detail::to_negmul_sym_macro_op ()