| AI Engine API User Guide (AIE-API) 2025.2

Loading...
Searching...
No Matches
Classes | Namespaces | Macros | Typedefs | Functions
sliding_mul.hpp File Reference
`#include "concepts.hpp"`

## Classes
class | aie::partial_sliding_mul< Lanes, Points, CoeffStep, DataStepX, DataStepY, CoeffType, DataType, AccumTag >
| Object oriented interface to sliding_mul_ops. More...
struct | aie::sliding_mul_ch_ops< Outputs, Channels, Points, CoeffStep, DataStepX, DataStepY, CoeffType, DataType, AccumTag >
struct | aie::sliding_mul_ops< Lanes, Points, CoeffStep, DataStepX, DataStepY, CoeffType, DataType, AccumTag >
| This type provides a parametrized multiplication that implements the following compute pattern: More...
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
| Base namespace for AIE operations and types.

## Macros
#define | __AIE_API_SLIDING_MUL__HPP__

## Typedefs
template<unsigned Outputs, unsigned Channels, unsigned Points, int CoeffStep, int DataStepX, ElemBaseType CoeffType, ElemBaseType DataType, AccumElemBaseType AccumTag = detail::default_accum_tag_t<CoeffType, DataType>>
using | aie::sliding_mul_ch_x_ops = sliding_mul_ch_ops<Outputs, Channels, Points, CoeffStep, DataStepX, 1, CoeffType, DataType, AccumTag>
template<unsigned Outputs, unsigned Channels, unsigned Points, int CoeffStep, int DataStep, ElemBaseType CoeffType, ElemBaseType DataType, AccumElemBaseType AccumTag = detail::default_accum_tag_t<CoeffType, DataType>>
using | aie::sliding_mul_ch_xy_ops = sliding_mul_ch_ops<Outputs, Channels, Points, CoeffStep, DataStep, DataStep, CoeffType, DataType, AccumTag>
template<unsigned Outputs, unsigned Channels, unsigned Points, int CoeffStep, int DataStepY, ElemBaseType CoeffType, ElemBaseType DataType, AccumElemBaseType AccumTag = detail::default_accum_tag_t<CoeffType, DataType>>
using | aie::sliding_mul_ch_y_ops = sliding_mul_ch_ops<Outputs, Channels, Points, CoeffStep, 1, DataStepY, CoeffType, DataType, AccumTag>
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>
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>
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>
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>
| Similar to sliding_mul_ops, but DataStepY is always 1.
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>
| Similar to sliding_mul_ops, but DataStepX is equal to DataStepY.
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>
| Similar to sliding_mul_ops, but DataStepX is always 1.

## Functions
template<unsigned Lanes, unsigned Points, int CoeffStart = 0, int CoeffStep = 1, int DataStep = 1, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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 Outputs, unsigned Channels, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::Gen2) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Outputs * Channels))
auto | aie::sliding_mac_ch (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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, AccumOrOp Acc, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type> && (Acc::size() == Lanes))
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, VectorOrOp VecData> requires (is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, typename VecData> requires (arch::is(arch::AIE) && VectorOrOp<VecCoeff> && VectorOrOp<VecData> && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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 Outputs, unsigned Channels, unsigned Points, int CoeffStep = 1, int DataStepX = 1, int DataStepY = DataStepX, AccumElemBaseType AccumTag = accauto, VectorOrOp VecCoeff, VectorOrOp VecData> requires (arch::is(arch::Gen2) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
auto | aie::sliding_mul_ch (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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, typename VecData> requires (arch::is(arch::AIE) && VectorOrOp<VecCoeff> && VectorOrOp<VecData> && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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, VectorOrOp VecData> requires (arch::is(arch::AIE) && is_valid_mul_op_v<typename VecCoeff::value_type, typename VecData::value_type>)
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)

## Macro Definition Documentation

## ◆ __AIE_API_SLIDING_MUL__HPP__

#define __AIE_API_SLIDING_MUL__HPP__