FflasFfpack
Simd256_impl< true, true, true, 8 > Struct Reference
Inheritance diagram for Simd256_impl< true, true, true, 8 >:

Data Structures

union  Converter

Public Types

using vect_t = __m256i
using half_t = __m128i
using scalar_t = int64_t
using simdHalf = Simd128<scalar_t>
using aligned_allocator = AlignedAllocator<scalar_t, Alignment(alignment)>
using aligned_vector = std::vector<scalar_t, aligned_allocator>
template<class Field>
using is_same_element = std::is_same<typename Field::Element, scalar_t>

Static Public Member Functions

static const std::string type_string ()
template<class T>
static constexpr bool valid (T *p)
template<class T>
static constexpr bool compliant (T n)
static INLINE CONST vect_t set1 (const scalar_t x)
static INLINE CONST vect_t set (const scalar_t x0, const scalar_t x1, const scalar_t x2, const scalar_t x3)
template<class T>
static INLINE PURE vect_t gather (const scalar_t *const p, const T *const idx)
template<int idx>
static INLINE CONST scalar_t get (vect_t v)
static INLINE PURE vect_t load (const scalar_t *const p)
static INLINE PURE vect_t loadu (const scalar_t *const p)
static INLINE void store (scalar_t *p, vect_t v)
static INLINE void storeu (scalar_t *p, vect_t v)
static INLINE void stream (scalar_t *p, const vect_t v)
template<int s>
static INLINE CONST vect_t sll (const vect_t a)
template<int s>
static INLINE CONST vect_t srl (const vect_t a)
template<int s>
static INLINE CONST vect_t sra (const vect_t a)
template<uint8_t s>
static INLINE CONST vect_t shuffle (const vect_t a)
static INLINE CONST vect_t unpacklo_intrinsic (const vect_t a, const vect_t b)
static INLINE CONST vect_t unpackhi_intrinsic (const vect_t a, const vect_t b)
static INLINE CONST vect_t unpacklo (const vect_t a, const vect_t b)
static INLINE CONST vect_t unpackhi (const vect_t a, const vect_t b)
static INLINE void unpacklohi (vect_t &lo, vect_t &hi, const vect_t a, const vect_t b)
static INLINE CONST vect_t pack_even (const vect_t a, const vect_t b)
static INLINE CONST vect_t pack_odd (const vect_t a, const vect_t b)
static INLINE void pack (vect_t &even, vect_t &odd, const vect_t a, const vect_t b)
static INLINE void transpose (vect_t &r0, vect_t &r1, vect_t &r2, vect_t &r3)
template<uint8_t s>
static INLINE CONST vect_t blend (const vect_t a, const vect_t b)
static INLINE CONST vect_t add (const vect_t a, const vect_t b)
static INLINE vect_t addin (vect_t &a, const vect_t b)
static INLINE CONST vect_t sub (const vect_t a, const vect_t b)
static INLINE vect_t subin (vect_t &a, const vect_t b)
static INLINE CONST vect_t mullo (vect_t a, vect_t b)
static INLINE CONST vect_t mul (const vect_t a, const vect_t b)
static INLINE CONST vect_t mulhi (vect_t a, vect_t b)
static INLINE CONST vect_t mulx (const vect_t a, const vect_t b)
static INLINE CONST vect_t fmadd (const vect_t c, const vect_t a, const vect_t b)
static INLINE vect_t fmaddin (vect_t &c, const vect_t a, const vect_t b)
static INLINE CONST vect_t fmaddx (const vect_t c, const vect_t a, const vect_t b)
static INLINE vect_t fmaddxin (vect_t &c, const vect_t a, const vect_t b)
static INLINE CONST vect_t fnmadd (const vect_t c, const vect_t a, const vect_t b)
static INLINE vect_t fnmaddin (vect_t &c, const vect_t a, const vect_t b)
static INLINE CONST vect_t fnmaddx (const vect_t c, const vect_t a, const vect_t b)
static INLINE vect_t fnmaddxin (vect_t &c, const vect_t a, const vect_t b)
static INLINE CONST vect_t fmsub (const vect_t c, const vect_t a, const vect_t b)
static INLINE vect_t fmsubin (vect_t &c, const vect_t a, const vect_t b)
static INLINE CONST vect_t fmsubx (const vect_t c, const vect_t a, const vect_t b)
static INLINE vect_t fmsubxin (vect_t &c, const vect_t a, const vect_t b)
static INLINE CONST vect_t eq (const vect_t a, const vect_t b)
static INLINE CONST vect_t greater (const vect_t a, const vect_t b)
static INLINE CONST vect_t lesser (const vect_t a, const vect_t b)
static INLINE CONST vect_t greater_eq (const vect_t a, const vect_t b)
static INLINE CONST vect_t lesser_eq (const vect_t a, const vect_t b)
static INLINE CONST scalar_t hadd_to_scal (const vect_t a)
static INLINE CONST vect_t round (const vect_t a)
static INLINE CONST vect_t mask_high ()
static INLINE CONST vect_t mulhi_fast (vect_t x, vect_t y)
static INLINE vect_t mod (vect_t &C, const __m256d &P, const __m256d &INVP, const __m256d &NEGP, const vect_t &POW50REM, const __m256d &MIN, const __m256d &MAX, __m256d &Q, __m256d &T)
static INLINE CONST vect_t zero ()

Static Public Attributes

static const constexpr size_t vect_size = 4
static const constexpr size_t alignment = 32

Static Protected Member Functions

static INLINE CONST vect_t signbits (const vect_t x)

Member Typedef Documentation

◆ vect_t

using vect_t = __m256i

◆ half_t

using half_t = __m128i

◆ scalar_t

using scalar_t = int64_t

◆ simdHalf

◆ aligned_allocator

using aligned_allocator = AlignedAllocator<scalar_t, Alignment(alignment)>

◆ aligned_vector

using aligned_vector = std::vector<scalar_t, aligned_allocator>

◆ is_same_element

template<class Field>
using is_same_element = std::is_same<typename Field::Element, scalar_t>

Member Function Documentation

◆ type_string()

const std::string type_string ( )
inlinestatic

◆ valid()

template<class T>
constexpr bool valid ( T * p)
inlinestaticconstexpr

◆ compliant()

template<class T>
constexpr bool compliant ( T n)
inlinestaticconstexpr

◆ set1()

INLINE CONST vect_t set1 ( const scalar_t x)
inlinestatic

◆ set()

INLINE CONST vect_t set ( const scalar_t x0,
const scalar_t x1,
const scalar_t x2,
const scalar_t x3 )
inlinestatic

◆ gather()

template<class T>
INLINE PURE vect_t gather ( const scalar_t *const p,
const T *const idx )
inlinestatic

◆ get()

template<int idx>
INLINE CONST scalar_t get ( vect_t v)
inlinestatic

◆ load()

INLINE PURE vect_t load ( const scalar_t *const p)
inlinestatic

◆ loadu()

INLINE PURE vect_t loadu ( const scalar_t *const p)
inlinestatic

◆ store()

INLINE void store ( scalar_t * p,
vect_t v )
inlinestatic

◆ storeu()

INLINE void storeu ( scalar_t * p,
vect_t v )
inlinestatic

◆ stream()

INLINE void stream ( scalar_t * p,
const vect_t v )
inlinestatic

◆ sll()

template<int s>
INLINE CONST vect_t sll ( const vect_t a)
inlinestatic

◆ srl()

template<int s>
INLINE CONST vect_t srl ( const vect_t a)
inlinestatic

◆ sra()

template<int s>
INLINE CONST vect_t sra ( const vect_t a)
inlinestatic

◆ shuffle()

template<uint8_t s>
INLINE CONST vect_t shuffle ( const vect_t a)
inlinestatic

◆ unpacklo_intrinsic()

INLINE CONST vect_t unpacklo_intrinsic ( const vect_t a,
const vect_t b )
inlinestatic

◆ unpackhi_intrinsic()

INLINE CONST vect_t unpackhi_intrinsic ( const vect_t a,
const vect_t b )
inlinestatic

◆ unpacklo()

INLINE CONST vect_t unpacklo ( const vect_t a,
const vect_t b )
inlinestatic

◆ unpackhi()

INLINE CONST vect_t unpackhi ( const vect_t a,
const vect_t b )
inlinestatic

◆ unpacklohi()

INLINE void unpacklohi ( vect_t & lo,
vect_t & hi,
const vect_t a,
const vect_t b )
inlinestatic

◆ pack_even()

INLINE CONST vect_t pack_even ( const vect_t a,
const vect_t b )
inlinestatic

◆ pack_odd()

INLINE CONST vect_t pack_odd ( const vect_t a,
const vect_t b )
inlinestatic

◆ pack()

INLINE void pack ( vect_t & even,
vect_t & odd,
const vect_t a,
const vect_t b )
inlinestatic

◆ transpose()

INLINE void transpose ( vect_t & r0,
vect_t & r1,
vect_t & r2,
vect_t & r3 )
inlinestatic

◆ blend()

template<uint8_t s>
INLINE CONST vect_t blend ( const vect_t a,
const vect_t b )
inlinestatic

◆ add()

INLINE CONST vect_t add ( const vect_t a,
const vect_t b )
inlinestatic

◆ addin()

INLINE vect_t addin ( vect_t & a,
const vect_t b )
inlinestatic

◆ sub()

INLINE CONST vect_t sub ( const vect_t a,
const vect_t b )
inlinestatic

◆ subin()

INLINE vect_t subin ( vect_t & a,
const vect_t b )
inlinestatic

◆ mullo()

INLINE CONST vect_t mullo ( vect_t a,
vect_t b )
inlinestatic

◆ mul()

INLINE CONST vect_t mul ( const vect_t a,
const vect_t b )
inlinestatic

◆ mulhi()

INLINE CONST vect_t mulhi ( vect_t a,
vect_t b )
inlinestatic

◆ mulx()

INLINE CONST vect_t mulx ( const vect_t a,
const vect_t b )
inlinestatic

◆ fmadd()

INLINE CONST vect_t fmadd ( const vect_t c,
const vect_t a,
const vect_t b )
inlinestatic

◆ fmaddin()

INLINE vect_t fmaddin ( vect_t & c,
const vect_t a,
const vect_t b )
inlinestatic

◆ fmaddx()

INLINE CONST vect_t fmaddx ( const vect_t c,
const vect_t a,
const vect_t b )
inlinestatic

◆ fmaddxin()

INLINE vect_t fmaddxin ( vect_t & c,
const vect_t a,
const vect_t b )
inlinestatic

◆ fnmadd()

INLINE CONST vect_t fnmadd ( const vect_t c,
const vect_t a,
const vect_t b )
inlinestatic

◆ fnmaddin()

INLINE vect_t fnmaddin ( vect_t & c,
const vect_t a,
const vect_t b )
inlinestatic

◆ fnmaddx()

INLINE CONST vect_t fnmaddx ( const vect_t c,
const vect_t a,
const vect_t b )
inlinestatic

◆ fnmaddxin()

INLINE vect_t fnmaddxin ( vect_t & c,
const vect_t a,
const vect_t b )
inlinestatic

◆ fmsub()

INLINE CONST vect_t fmsub ( const vect_t c,
const vect_t a,
const vect_t b )
inlinestatic

◆ fmsubin()

INLINE vect_t fmsubin ( vect_t & c,
const vect_t a,
const vect_t b )
inlinestatic

◆ fmsubx()

INLINE CONST vect_t fmsubx ( const vect_t c,
const vect_t a,
const vect_t b )
inlinestatic

◆ fmsubxin()

INLINE vect_t fmsubxin ( vect_t & c,
const vect_t a,
const vect_t b )
inlinestatic

◆ eq()

INLINE CONST vect_t eq ( const vect_t a,
const vect_t b )
inlinestatic

◆ greater()

INLINE CONST vect_t greater ( const vect_t a,
const vect_t b )
inlinestatic

◆ lesser()

INLINE CONST vect_t lesser ( const vect_t a,
const vect_t b )
inlinestatic

◆ greater_eq()

INLINE CONST vect_t greater_eq ( const vect_t a,
const vect_t b )
inlinestatic

◆ lesser_eq()

INLINE CONST vect_t lesser_eq ( const vect_t a,
const vect_t b )
inlinestatic

◆ hadd_to_scal()

INLINE CONST scalar_t hadd_to_scal ( const vect_t a)
inlinestatic

◆ round()

INLINE CONST vect_t round ( const vect_t a)
inlinestatic

◆ mask_high()

INLINE CONST vect_t mask_high ( )
inlinestatic

◆ mulhi_fast()

INLINE CONST vect_t mulhi_fast ( vect_t x,
vect_t y )
static

◆ mod()

INLINE vect_t mod ( vect_t & C,
const __m256d & P,
const __m256d & INVP,
const __m256d & NEGP,
const vect_t & POW50REM,
const __m256d & MIN,
const __m256d & MAX,
__m256d & Q,
__m256d & T )
static

◆ signbits()

INLINE CONST vect_t signbits ( const vect_t x)
inlinestaticprotected

◆ zero()

INLINE CONST vect_t zero ( )
inlinestaticinherited

Field Documentation

◆ vect_size

const constexpr size_t vect_size = 4
staticconstexpr

◆ alignment

const constexpr size_t alignment = 32
staticconstexpr

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