tesseract++ 0.0.1
N-dimensional tensor library for embedded systems
Loading...
Searching...
No Matches
Public Types | Static Public Member Functions | Static Public Attributes | List of all members
Microkernel< int64_t, 256, X86_AVX > Struct Reference

#include <avx2_microkernel.h>

Public Types

using VecType = __m256i
 
using ScalarType = int64_t
 

Static Public Member Functions

static FORCE_INLINE VecType load (const ScalarType *ptr) noexcept
 
static FORCE_INLINE VecType loadu (const ScalarType *ptr) noexcept
 
static FORCE_INLINE void store (ScalarType *ptr, VecType val) noexcept
 
static FORCE_INLINE void storeu (ScalarType *ptr, VecType val) noexcept
 
static FORCE_INLINE VecType set1 (ScalarType scalar) noexcept
 
static FORCE_INLINE VecType add (VecType a, VecType b) noexcept
 
static FORCE_INLINE VecType add (VecType a, ScalarType b) noexcept
 
static FORCE_INLINE VecType mul (VecType a, VecType b) noexcept
 
static FORCE_INLINE VecType mul (VecType a, ScalarType b) noexcept
 
static FORCE_INLINE VecType sub (VecType a, VecType b) noexcept
 
static FORCE_INLINE VecType sub (VecType a, ScalarType b) noexcept
 
static FORCE_INLINE VecType sub (ScalarType a, VecType b) noexcept
 
static FORCE_INLINE VecType div (VecType a, VecType b) noexcept
 
static FORCE_INLINE VecType div (VecType a, ScalarType b) noexcept
 
static FORCE_INLINE VecType div (ScalarType a, VecType b) noexcept
 
static FORCE_INLINE VecType fmadd (VecType a, VecType b, VecType c) noexcept
 
static FORCE_INLINE VecType fmadd (VecType a, ScalarType b, VecType c) noexcept
 
static FORCE_INLINE VecType fmsub (VecType a, VecType b, VecType c) noexcept
 
static FORCE_INLINE VecType fmsub (VecType a, ScalarType b, VecType c) noexcept
 
static FORCE_INLINE VecType fnmadd (VecType a, VecType b, VecType c) noexcept
 
static FORCE_INLINE VecType fnmadd (VecType a, ScalarType b, VecType c) noexcept
 
static FORCE_INLINE VecType fnmsub (VecType a, VecType b, VecType c) noexcept
 
static FORCE_INLINE VecType fnmsub (VecType a, ScalarType b, VecType c) noexcept
 
static FORCE_INLINE VecType min (VecType a, VecType b) noexcept
 
static FORCE_INLINE VecType min (VecType a, ScalarType b) noexcept
 
static FORCE_INLINE VecType max (VecType a, VecType b) noexcept
 
static FORCE_INLINE VecType max (VecType a, ScalarType b) noexcept
 
static FORCE_INLINE VecType gather (const ScalarType *base, const my_size_t *indices) noexcept
 
static FORCE_INLINE void scatter (ScalarType *base, const my_size_t *indices, VecType val) noexcept
 
static FORCE_INLINE VecType abs (VecType v) noexcept
 
static FORCE_INLINE bool all_within_tolerance (VecType a, VecType b, ScalarType tol) noexcept
 

Static Public Attributes

static constexpr my_size_t simdWidth = 4
 
static constexpr my_size_t num_registers = 16
 
static constexpr my_size_t MR = 4
 
static constexpr my_size_t NR_VECS = 3
 
static constexpr my_size_t NR = NR_VECS * simdWidth
 

Member Typedef Documentation

◆ ScalarType

using Microkernel< int64_t, 256, X86_AVX >::ScalarType = int64_t

◆ VecType

using Microkernel< int64_t, 256, X86_AVX >::VecType = __m256i

Member Function Documentation

◆ abs()

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::abs ( VecType  v)
inlinestaticnoexcept

◆ add() [1/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::add ( VecType  a,
ScalarType  b 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ add() [2/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::add ( VecType  a,
VecType  b 
)
inlinestaticnoexcept

◆ all_within_tolerance()

static FORCE_INLINE bool Microkernel< int64_t, 256, X86_AVX >::all_within_tolerance ( VecType  a,
VecType  b,
ScalarType  tol 
)
inlinestaticnoexcept

◆ div() [1/3]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::div ( ScalarType  a,
VecType  b 
)
inlinestaticnoexcept

◆ div() [2/3]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::div ( VecType  a,
ScalarType  b 
)
inlinestaticnoexcept

◆ div() [3/3]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::div ( VecType  a,
VecType  b 
)
inlinestaticnoexcept

◆ fmadd() [1/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::fmadd ( VecType  a,
ScalarType  b,
VecType  c 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ fmadd() [2/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::fmadd ( VecType  a,
VecType  b,
VecType  c 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ fmsub() [1/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::fmsub ( VecType  a,
ScalarType  b,
VecType  c 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ fmsub() [2/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::fmsub ( VecType  a,
VecType  b,
VecType  c 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ fnmadd() [1/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::fnmadd ( VecType  a,
ScalarType  b,
VecType  c 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ fnmadd() [2/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::fnmadd ( VecType  a,
VecType  b,
VecType  c 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ fnmsub() [1/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::fnmsub ( VecType  a,
ScalarType  b,
VecType  c 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ fnmsub() [2/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::fnmsub ( VecType  a,
VecType  b,
VecType  c 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ gather()

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::gather ( const ScalarType base,
const my_size_t indices 
)
inlinestaticnoexcept

◆ load()

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::load ( const ScalarType ptr)
inlinestaticnoexcept

◆ loadu()

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::loadu ( const ScalarType ptr)
inlinestaticnoexcept

◆ max() [1/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::max ( VecType  a,
ScalarType  b 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ max() [2/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::max ( VecType  a,
VecType  b 
)
inlinestaticnoexcept

◆ min() [1/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::min ( VecType  a,
ScalarType  b 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ min() [2/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::min ( VecType  a,
VecType  b 
)
inlinestaticnoexcept

◆ mul() [1/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::mul ( VecType  a,
ScalarType  b 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ mul() [2/2]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::mul ( VecType  a,
VecType  b 
)
inlinestaticnoexcept

◆ scatter()

static FORCE_INLINE void Microkernel< int64_t, 256, X86_AVX >::scatter ( ScalarType base,
const my_size_t indices,
VecType  val 
)
inlinestaticnoexcept

◆ set1()

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::set1 ( ScalarType  scalar)
inlinestaticnoexcept

◆ store()

static FORCE_INLINE void Microkernel< int64_t, 256, X86_AVX >::store ( ScalarType ptr,
VecType  val 
)
inlinestaticnoexcept

◆ storeu()

static FORCE_INLINE void Microkernel< int64_t, 256, X86_AVX >::storeu ( ScalarType ptr,
VecType  val 
)
inlinestaticnoexcept

◆ sub() [1/3]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::sub ( ScalarType  a,
VecType  b 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ sub() [2/3]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::sub ( VecType  a,
ScalarType  b 
)
inlinestaticnoexcept
Here is the call graph for this function:

◆ sub() [3/3]

static FORCE_INLINE VecType Microkernel< int64_t, 256, X86_AVX >::sub ( VecType  a,
VecType  b 
)
inlinestaticnoexcept

Member Data Documentation

◆ MR

constexpr my_size_t Microkernel< int64_t, 256, X86_AVX >::MR = 4
staticconstexpr

◆ NR

constexpr my_size_t Microkernel< int64_t, 256, X86_AVX >::NR = NR_VECS * simdWidth
staticconstexpr

◆ NR_VECS

constexpr my_size_t Microkernel< int64_t, 256, X86_AVX >::NR_VECS = 3
staticconstexpr

◆ num_registers

constexpr my_size_t Microkernel< int64_t, 256, X86_AVX >::num_registers = 16
staticconstexpr

◆ simdWidth

constexpr my_size_t Microkernel< int64_t, 256, X86_AVX >::simdWidth = 4
staticconstexpr

The documentation for this struct was generated from the following file: