Tensorium
Loading...
Searching...
No Matches
simd::SimdTraits< float, sse_t > Struct Reference

#include <SIMD.hpp>

Collaboration diagram for simd::SimdTraits< float, sse_t >:

Public Types

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

Static Public Member Functions

static reg set1 (float x)
 
static reg set (float a, float b, float c, float d)
 
template<int i0, int i1, int i2, int i3>
static reg permute (reg x)
 
static reg set4 (float a0, float a1, float a2, float a3)
 
static void maskstore (float *ptr, reg mask, reg value)
 
static float extract (reg x, size_t index)
 
static void stream (float *ptr, reg x)
 
static reg setzero ()
 
static reg fma (reg a, reg b, reg c)
 
static float horizontal_add (reg v)
 
static reg load (const float *ptr)
 
static reg loadu (const float *ptr)
 
static void store (float *ptr, reg x)
 
static void storeu (float *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 (float *ptr, reg x)
 
static reg max (reg a, reg b)
 
static reg min (reg a, reg b)
 

Static Public Attributes

static constexpr size_t width = 4
 
static constexpr size_t alignment = 16
 

Member Typedef Documentation

◆ reg

using simd::SimdTraits< float, sse_t >::reg = __m128

◆ reg_aligned

using simd::SimdTraits< float, sse_t >::reg_aligned = aligned_reg<reg, alignment>

Member Function Documentation

◆ add()

static reg simd::SimdTraits< float, sse_t >::add ( reg a,
reg b )
inlinestatic

◆ andnot()

static reg simd::SimdTraits< float, sse_t >::andnot ( reg a,
reg b )
inlinestatic

◆ extract()

static float simd::SimdTraits< float, sse_t >::extract ( reg x,
size_t index )
inlinestatic

◆ fma()

static reg simd::SimdTraits< float, sse_t >::fma ( reg a,
reg b,
reg c )
inlinestatic

◆ fmadd()

static reg simd::SimdTraits< float, sse_t >::fmadd ( reg a,
reg b,
reg c )
inlinestatic

◆ horizontal_add()

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

◆ load()

static reg simd::SimdTraits< float, sse_t >::load ( const float * ptr)
inlinestatic

◆ loadu()

static reg simd::SimdTraits< float, sse_t >::loadu ( const float * ptr)
inlinestatic

◆ maskstore()

static void simd::SimdTraits< float, sse_t >::maskstore ( float * ptr,
reg mask,
reg value )
inlinestatic

◆ max()

static reg simd::SimdTraits< float, sse_t >::max ( reg a,
reg b )
inlinestatic

◆ min()

static reg simd::SimdTraits< float, sse_t >::min ( reg a,
reg b )
inlinestatic

◆ mul()

static reg simd::SimdTraits< float, sse_t >::mul ( reg a,
reg b )
inlinestatic

◆ permute()

template<int i0, int i1, int i2, int i3>
static reg simd::SimdTraits< float, sse_t >::permute ( reg x)
inlinestatic

◆ set()

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

◆ set1()

static reg simd::SimdTraits< float, sse_t >::set1 ( float x)
inlinestatic

◆ set4()

static reg simd::SimdTraits< float, sse_t >::set4 ( float a0,
float a1,
float a2,
float a3 )
inlinestatic

◆ setzero()

static reg simd::SimdTraits< float, sse_t >::setzero ( )
inlinestatic

◆ store()

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

◆ store_stream()

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

◆ storeu()

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

◆ stream()

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

◆ sub()

static reg simd::SimdTraits< float, sse_t >::sub ( reg a,
reg b )
inlinestatic

◆ zero()

static reg simd::SimdTraits< float, sse_t >::zero ( )
inlinestatic

Member Data Documentation

◆ alignment

constexpr size_t simd::SimdTraits< float, sse_t >::alignment = 16
staticconstexpr

◆ width

constexpr size_t simd::SimdTraits< float, sse_t >::width = 4
staticconstexpr

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