Tensorium
Loading...
Searching...
No Matches
simd::SimdTraits< double, avx2_t > Struct Reference

#include <SIMD.hpp>

Collaboration diagram for simd::SimdTraits< double, avx2_t >:

Public Types

using reg = __m256d
 
using reg_aligned = aligned_reg<reg, alignment>
 

Static Public Member Functions

static reg set1 (double x)
 
static reg set (double a, double b, double c, double d)
 
static double extract (reg x, size_t index)
 
static void maskstore (double *ptr, __m256i mask, __m256d value)
 
static reg maskload (const double *ptr, __m256i m)
 
static reg broadcast (const double *ptr)
 
static void stream (double *ptr, reg x)
 
static reg setzero ()
 
static float horizontal_add (reg v)
 
static reg load (const double *ptr)
 
static reg loadu (const double *ptr)
 
static void store (double *ptr, reg x)
 
static void storeu (double *ptr, reg x)
 
static reg zero ()
 
static reg fmadd (reg a, reg b, reg c)
 
static reg add (reg a, reg b)
 
static reg mul (reg a, reg b)
 
static reg sub (reg a, reg b)
 
static reg andnot (reg a, reg b)
 
static void store_stream (double *ptr, reg x)
 
static reg max (reg a, reg b)
 

Static Public Attributes

static constexpr size_t width = 4
 
static constexpr size_t alignment = 32
 

Member Typedef Documentation

◆ reg

using simd::SimdTraits< double, avx2_t >::reg = __m256d

◆ reg_aligned

using simd::SimdTraits< double, avx2_t >::reg_aligned = aligned_reg<reg, alignment>

Member Function Documentation

◆ add()

static reg simd::SimdTraits< double, avx2_t >::add ( reg a,
reg b )
inlinestatic

◆ andnot()

static reg simd::SimdTraits< double, avx2_t >::andnot ( reg a,
reg b )
inlinestatic

◆ broadcast()

static reg simd::SimdTraits< double, avx2_t >::broadcast ( const double * ptr)
inlinestatic

◆ extract()

static double simd::SimdTraits< double, avx2_t >::extract ( reg x,
size_t index )
inlinestatic

◆ fmadd()

static reg simd::SimdTraits< double, avx2_t >::fmadd ( reg a,
reg b,
reg c )
inlinestatic

◆ horizontal_add()

static float simd::SimdTraits< double, avx2_t >::horizontal_add ( reg v)
inlinestatic

◆ load()

static reg simd::SimdTraits< double, avx2_t >::load ( const double * ptr)
inlinestatic

◆ loadu()

static reg simd::SimdTraits< double, avx2_t >::loadu ( const double * ptr)
inlinestatic

◆ maskload()

static reg simd::SimdTraits< double, avx2_t >::maskload ( const double * ptr,
__m256i m )
inlinestatic

◆ maskstore()

static void simd::SimdTraits< double, avx2_t >::maskstore ( double * ptr,
__m256i mask,
__m256d value )
inlinestatic

◆ max()

static reg simd::SimdTraits< double, avx2_t >::max ( reg a,
reg b )
inlinestatic

◆ mul()

static reg simd::SimdTraits< double, avx2_t >::mul ( reg a,
reg b )
inlinestatic

◆ set()

static reg simd::SimdTraits< double, avx2_t >::set ( double a,
double b,
double c,
double d )
inlinestatic

◆ set1()

static reg simd::SimdTraits< double, avx2_t >::set1 ( double x)
inlinestatic

◆ setzero()

static reg simd::SimdTraits< double, avx2_t >::setzero ( )
inlinestatic

◆ store()

static void simd::SimdTraits< double, avx2_t >::store ( double * ptr,
reg x )
inlinestatic

◆ store_stream()

static void simd::SimdTraits< double, avx2_t >::store_stream ( double * ptr,
reg x )
inlinestatic

◆ storeu()

static void simd::SimdTraits< double, avx2_t >::storeu ( double * ptr,
reg x )
inlinestatic

◆ stream()

static void simd::SimdTraits< double, avx2_t >::stream ( double * ptr,
reg x )
inlinestatic

◆ sub()

static reg simd::SimdTraits< double, avx2_t >::sub ( reg a,
reg b )
inlinestatic

◆ zero()

static reg simd::SimdTraits< double, avx2_t >::zero ( )
inlinestatic

Member Data Documentation

◆ alignment

constexpr size_t simd::SimdTraits< double, avx2_t >::alignment = 32
staticconstexpr

◆ width

constexpr size_t simd::SimdTraits< double, avx2_t >::width = 4
staticconstexpr

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