JUCE  v5.4.1-191-g0ab5e696f
JUCE API
Looking for a senior C++ dev?
I'm looking for work. Hire me!
juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType > Struct Template Reference

Useful fallback routines to use if the native SIMD op is not supported. More...

#include <juce_fallback_SIMDNativeOps.h>

Collaboration diagram for juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >:

Classes

struct  ScalarAdd
 
struct  ScalarAnd
 
struct  ScalarEq
 
struct  ScalarGeq
 
struct  ScalarGt
 
struct  ScalarMax
 
struct  ScalarMin
 
struct  ScalarMul
 
struct  ScalarNeq
 
struct  ScalarNot
 
struct  ScalarOr
 
struct  ScalarSub
 
struct  ScalarXor
 
union  UnionMaskType
 
union  UnionType
 

Public Types

using MaskType = typename SIMDInternal::MaskTypeFor< ScalarType >::type
 

Static Public Member Functions

static forcedinline vSIMDType add (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline bool allEqual (vSIMDType av, vSIMDType bv) noexcept
 
template<typename Op >
static forcedinline vSIMDType apply (vSIMDType av, vSIMDType bv) noexcept
 
static forcedinline vSIMDType bit_and (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline vSIMDType bit_not (vSIMDType av) noexcept
 
static forcedinline vSIMDType bit_notand (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline vSIMDType bit_or (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline vSIMDType bit_xor (vSIMDType a, vSIMDType b) noexcept
 
template<typename Op >
static forcedinline vSIMDType bitapply (vSIMDType av, vSIMDType bv) noexcept
 
template<typename Op >
static forcedinline vSIMDType cmp (vSIMDType av, vSIMDType bv) noexcept
 
static forcedinline vSIMDType cmplxmul (vSIMDType av, vSIMDType bv) noexcept
 
static forcedinline vSIMDType equal (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline vSIMDType expand (ScalarType s) noexcept
 
static forcedinline ScalarType get (vSIMDType v, size_t i) noexcept
 
static forcedinline vSIMDType greaterThan (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline vSIMDType greaterThanOrEqual (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline vSIMDType load (const ScalarType *a) noexcept
 
static forcedinline vSIMDType max (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline vSIMDType min (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline vSIMDType mul (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline vSIMDType multiplyAdd (vSIMDType av, vSIMDType bv, vSIMDType cv) noexcept
 
static forcedinline vSIMDType notEqual (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline vSIMDType set (vSIMDType v, size_t i, ScalarType s) noexcept
 
template<unsigned int shuffle_idx>
static forcedinline vSIMDType shuffle (vSIMDType av) noexcept
 
static forcedinline void store (vSIMDType av, ScalarType *dest) noexcept
 
static forcedinline vSIMDType sub (vSIMDType a, vSIMDType b) noexcept
 
static forcedinline ScalarType sum (vSIMDType av) noexcept
 

Static Public Attributes

static constexpr size_t bits = SIMDInternal::Log2Helper<(int) n>::value
 
static constexpr size_t mask = (sizeof (vSIMDType) / sizeof (ScalarType)) - 1
 
static constexpr size_t n = sizeof (vSIMDType) / sizeof (ScalarType)
 

Detailed Description

template<typename ScalarType, typename vSIMDType>
struct juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >

Useful fallback routines to use if the native SIMD op is not supported.

You should never need to use this directly. Use juce_SIMDRegister instead.

{DSP}

Member Typedef Documentation

◆ MaskType

template<typename ScalarType , typename vSIMDType >
using juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::MaskType = typename SIMDInternal::MaskTypeFor<ScalarType>::type

Member Function Documentation

◆ add()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::add ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ allEqual()

template<typename ScalarType , typename vSIMDType >
static forcedinline bool juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::allEqual ( vSIMDType  av,
vSIMDType  bv 
)
inlinestaticnoexcept

◆ apply()

template<typename ScalarType , typename vSIMDType >
template<typename Op >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::apply ( vSIMDType  av,
vSIMDType  bv 
)
inlinestaticnoexcept

◆ bit_and()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::bit_and ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ bit_not()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::bit_not ( vSIMDType  av)
inlinestaticnoexcept

◆ bit_notand()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::bit_notand ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ bit_or()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::bit_or ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ bit_xor()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::bit_xor ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ bitapply()

template<typename ScalarType , typename vSIMDType >
template<typename Op >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::bitapply ( vSIMDType  av,
vSIMDType  bv 
)
inlinestaticnoexcept

◆ cmp()

template<typename ScalarType , typename vSIMDType >
template<typename Op >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::cmp ( vSIMDType  av,
vSIMDType  bv 
)
inlinestaticnoexcept

◆ cmplxmul()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::cmplxmul ( vSIMDType  av,
vSIMDType  bv 
)
inlinestaticnoexcept

◆ equal()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::equal ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ expand()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::expand ( ScalarType  s)
inlinestaticnoexcept

◆ get()

template<typename ScalarType , typename vSIMDType >
static forcedinline ScalarType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::get ( vSIMDType  v,
size_t  i 
)
inlinestaticnoexcept

◆ greaterThan()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::greaterThan ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ greaterThanOrEqual()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::greaterThanOrEqual ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ load()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::load ( const ScalarType *  a)
inlinestaticnoexcept

◆ max()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::max ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ min()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::min ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ mul()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::mul ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ multiplyAdd()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::multiplyAdd ( vSIMDType  av,
vSIMDType  bv,
vSIMDType  cv 
)
inlinestaticnoexcept

◆ notEqual()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::notEqual ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ set()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::set ( vSIMDType  v,
size_t  i,
ScalarType  s 
)
inlinestaticnoexcept

◆ shuffle()

template<typename ScalarType , typename vSIMDType >
template<unsigned int shuffle_idx>
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::shuffle ( vSIMDType  av)
inlinestaticnoexcept

◆ store()

template<typename ScalarType , typename vSIMDType >
static forcedinline void juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::store ( vSIMDType  av,
ScalarType *  dest 
)
inlinestaticnoexcept

◆ sub()

template<typename ScalarType , typename vSIMDType >
static forcedinline vSIMDType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::sub ( vSIMDType  a,
vSIMDType  b 
)
inlinestaticnoexcept

◆ sum()

template<typename ScalarType , typename vSIMDType >
static forcedinline ScalarType juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::sum ( vSIMDType  av)
inlinestaticnoexcept

Member Data Documentation

◆ bits

template<typename ScalarType , typename vSIMDType >
constexpr size_t juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::bits = SIMDInternal::Log2Helper<(int) n>::value
static

◆ mask

template<typename ScalarType , typename vSIMDType >
constexpr size_t juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::mask = (sizeof (vSIMDType) / sizeof (ScalarType)) - 1
static

◆ n

template<typename ScalarType , typename vSIMDType >
constexpr size_t juce::dsp::SIMDFallbackOps< ScalarType, vSIMDType >::n = sizeof (vSIMDType) / sizeof (ScalarType)
static

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