SuperDex Physics C++ API
Loading...
Searching...
No Matches
superdex::Simd< T, N > Class Template Reference

#include <simd_arch_emulator_inl.h>

Public Types

using NativeType = Array<Scalar, N>
using Scalar = T

Public Member Functions

Scalar constexpr Get (int i) const
constexpr bool operator!= (Simd rhs) const
constexpr Simd operator& (Simd rhs) const
Simd operator&& (Simd rhs) const
Simdoperator&= (Simd rhs)
constexpr Simd operator* (Simd rhs) const
Simdoperator*= (Simd rhs)
constexpr Simd operator+ (Simd rhs) const
Simdoperator+= (Simd rhs)
constexpr Simd operator- () const
constexpr Simd operator- (Simd rhs) const
Simdoperator-= (Simd rhs)
constexpr Simd operator/ (Simd rhs) const
Simdoperator/= (Simd rhs)
constexpr Simd operator< (Simd rhs) const
constexpr Simd operator<< (Simd rhs) const
constexpr Simd operator<= (Simd rhs) const
constexpr Simdoperator= (Simd const &rhs)=default
template<class U, std::enable_if_t<(std::is_convertible_v< U, Scalar > &&!std::is_same_v< U, bool >), superdex::ConceptMatch > = superdex::ConceptMatch::True>
constexpr Simdoperator= (U a)
constexpr bool operator== (Simd rhs) const
constexpr Simd operator> (Simd rhs) const
constexpr Simd operator>= (Simd rhs) const
constexpr Simd operator>> (Simd rhs) const
Scalar constexpr operator[] (int i) const
constexpr Simd operator^ (Simd rhs) const
Simdoperator^= (Simd rhs)
constexpr Simd operator| (Simd rhs) const
Simdoperator|= (Simd rhs)
Simd operator|| (Simd rhs) const
constexpr Simd operator~ () const
constexpr Simd ()=default
template<typename... Args>
constexpr Simd (Args... args)
template<typename F, typename... Args>
requires IsInvokableWithRaw<F, Args...>
constexpr Simd (F const &f, Args const &... args)
constexpr Simd (NativeType const &rhs)
constexpr Simd (Simd const &rhs)=default
constexpr Simd (Simd< T, N/2 > a, Simd< T, N/2 > b)
template<class U, std::enable_if_t<(std::is_convertible_v< U, Scalar > &&!std::is_same_v< U, bool >), superdex::ConceptMatch > = superdex::ConceptMatch::True>
constexpr Simd (U a)

Static Public Member Functions

template<int M = kSize>
static constexpr bool AllTrue (Simd a)
template<int M = kSize>
static constexpr bool AnyTrue (Simd a)
static constexpr Simd AsDirection (Simd a)
static constexpr Simd AsPoint (Simd a)
template<int... x>
requires (sizeof...(x) == N)
static constexpr Simd Blend (Simd a, Simd b)
static constexpr Simd Broadcast (Scalar const *p)
template<int i>
static constexpr Simd Broadcast (Simd v)
template<int M = kSize>
static constexpr Simd Dot (Simd a, Simd b)
static Simd Equal (Simd const &x, Simd const &y)
template<int i>
static constexpr Scalar Get (Simd v)
static constexpr Scalar Get (Simd v, int i)
template<int i>
requires (N >= 2 && N % 2 == 0)
static constexpr Simd< T, N/2 > GetHalf (Simd v)
template<int M = kSize>
static constexpr Scalar HMax (Simd a)
template<int M = kSize>
static constexpr Scalar HMin (Simd a)
template<int M = kSize>
static constexpr Scalar HProd (Simd a)
template<int M = kSize>
static constexpr Scalar HSum (Simd a)
template<int M = kSize>
static Simd Load (Scalar const *ptr)
static Simd Load (Scalar const *ptr, int n)
template<typename IntT>
requires (std::integral<IntT>)
static Simd LoadIndexed (Scalar const *ptr, Simd< IntT, N > const &indices)
template<int kTupleCount = kSize>
static void LoadTransposed (Scalar const *ptr, Simd &out0, Simd &out1, Simd &out2)
static Simd NotEqual (Simd const &x, Simd const &y)
static constexpr Simd Select (Simd mask, Simd a, Simd b)
static constexpr Simd Set (Simd v, int i, Scalar value)
template<int i>
static Simd Set (Simd v, Scalar value)
template<int i>
requires (N == 4)
static constexpr Simd SetBasisVector ()
template<int kShift>
static constexpr Simd ShiftRight (Simd a)
template<int x = 0, int y = 1>
requires (N == 2)
static constexpr Simd Shuffle (Simd a)
template<int x = 0, int y = 1, int z = 2, int w = 3>
requires (N == 4)
static constexpr Simd Shuffle (Simd a, Simd b)
template<int x = 0, int y = 1, int z = 2, int w = 3>
requires (N == 4)
static constexpr Simd Shuffle (Simd v)
static constexpr size_t size ()
template<int M = kSize>
static void Store (Scalar *ptr, Simd v)
static void Store (Scalar *ptr, Simd v, int n)
static int StoreSelected (Scalar *ptr, Simd condition, Simd values)
template<int kTupleCount = kSize>
static void StoreTransposed (Scalar *ptr, Simd out0, Simd out1, Simd out2)
static constexpr Simd Zero ()

Public Attributes

NativeType raw

Static Public Attributes

static constexpr auto Abs = Xapply<std::abs>
static constexpr auto ACos = Xapply<std::acos>
static constexpr auto ASin = Xapply<std::asin>
static constexpr auto ATan = Xapply<std::atan>
static constexpr auto Cos = Xapply<std::cos>
static constexpr auto Exp = Xapply<std::exp>
static constexpr auto FastRound = Xapply<std::round>
static constexpr auto Floor = Xapply<std::floor>
static constexpr bool kIsComposite = false
static constexpr bool kIsEmulated = true
static constexpr bool kIsSupported = true
static constexpr int kSize = N
static constexpr auto Ln = Xapply<std::log>
static constexpr auto Max = XYapply<T const&, superdex::Max<T>>
static constexpr auto Min = XYapply<T const&, superdex::Min<T>>
static constexpr auto MulAdd = XYZapply<T, superdex::MulAdd<T, T, T>>
static constexpr auto MulSub = XYZapply<T, superdex::MulSub<T, T, T>>
static constexpr auto NegMulAdd = XYZapply<T, superdex::NegMulAdd<T, T, T>>
static constexpr auto NegMulSub = XYZapply<T, superdex::NegMulSub<T, T, T>>
static constexpr auto RcpApprox = Xapply<[](ST a) { return ST{1} / a; }>
static constexpr auto RcpSqrtApprox = Xapply<[](ST a) { return ST{1} / std::sqrt(a); }>
static constexpr auto Sin = Xapply<std::sin>
static constexpr auto Sqrt = Xapply<std::sqrt>
static constexpr auto Tan = Xapply<std::tan>
static constexpr auto Tanh = Xapply<std::tanh>

Detailed Description

template<typename T, int N>
requires (IsSimdSupportedType<T> && !IsHalf<T> && (N % kSimdDefaultSize<T> == 0))
class superdex::Simd< T, N >

Definition at line 50 of file simd_arch_emulator_inl.h.

Member Typedef Documentation

◆ NativeType

template<typename T, int N>
using superdex::Simd< T, N >::NativeType = Array<Scalar, N>

Definition at line 118 of file simd_arch_emulator_inl.h.

◆ Scalar

template<typename T, int N>
using superdex::Simd< T, N >::Scalar = T

Definition at line 116 of file simd_arch_emulator_inl.h.

Constructor & Destructor Documentation

◆ Simd() [1/7]

template<typename T, int N>
superdex::Simd< T, N >::Simd ( )
inlineconstexprdefault

◆ Simd() [2/7]

template<typename T, int N>
superdex::Simd< T, N >::Simd ( Simd< T, N > const & rhs)
inlineconstexprdefault

◆ Simd() [3/7]

template<typename T, int N>
superdex::Simd< T, N >::Simd ( NativeType const & rhs)
inlineconstexpr

Definition at line 123 of file simd_arch_emulator_inl.h.

◆ Simd() [4/7]

template<typename T, int N>
template<class U, std::enable_if_t<(std::is_convertible_v< U, Scalar > &&!std::is_same_v< U, bool >), superdex::ConceptMatch > = superdex::ConceptMatch::True>
superdex::Simd< T, N >::Simd ( U a)
inlineconstexpr

Definition at line 125 of file simd_arch_emulator_inl.h.

◆ Simd() [5/7]

template<typename T, int N>
superdex::Simd< T, N >::Simd ( Simd< T, N/2 > a,
Simd< T, N/2 > b )
inlineconstexpr

Definition at line 130 of file simd_arch_emulator_inl.h.

◆ Simd() [6/7]

template<typename T, int N>
template<typename... Args>
superdex::Simd< T, N >::Simd ( Args... args)
inlineconstexpr

Definition at line 144 of file simd_arch_emulator_inl.h.

◆ Simd() [7/7]

template<typename T, int N>
template<typename F, typename... Args>
requires IsInvokableWithRaw<F, Args...>
superdex::Simd< T, N >::Simd ( F const & f,
Args const &... args )
inlineconstexpr

Definition at line 148 of file simd_arch_emulator_inl.h.

Member Function Documentation

◆ AllTrue()

template<typename T, int N>
template<int M = kSize>
constexpr bool superdex::Simd< T, N >::AllTrue ( Simd< T, N > a)
inlinestaticnodiscardconstexpr

Definition at line 418 of file simd_arch_emulator_inl.h.

◆ AnyTrue()

template<typename T, int N>
template<int M = kSize>
constexpr bool superdex::Simd< T, N >::AnyTrue ( Simd< T, N > a)
inlinestaticnodiscardconstexpr

Definition at line 419 of file simd_arch_emulator_inl.h.

◆ AsDirection()

template<typename T, int N>
constexpr Simd superdex::Simd< T, N >::AsDirection ( Simd< T, N > a)
inlinestaticnodiscardconstexpr

Definition at line 224 of file simd_arch_emulator_inl.h.

◆ AsPoint()

template<typename T, int N>
constexpr Simd superdex::Simd< T, N >::AsPoint ( Simd< T, N > a)
inlinestaticnodiscardconstexpr

Definition at line 218 of file simd_arch_emulator_inl.h.

◆ Blend()

template<typename T, int N>
template<int... x>
requires (sizeof...(x) == N)
constexpr Simd superdex::Simd< T, N >::Blend ( Simd< T, N > a,
Simd< T, N > b )
inlinestaticnodiscardconstexpr

Definition at line 243 of file simd_arch_emulator_inl.h.

◆ Broadcast() [1/2]

template<typename T, int N>
constexpr Simd superdex::Simd< T, N >::Broadcast ( Scalar const * p)
inlinestaticnodiscardconstexpr

Definition at line 253 of file simd_arch_emulator_inl.h.

◆ Broadcast() [2/2]

template<typename T, int N>
template<int i>
constexpr Simd superdex::Simd< T, N >::Broadcast ( Simd< T, N > v)
inlinestaticnodiscardconstexpr

Definition at line 258 of file simd_arch_emulator_inl.h.

◆ Dot()

template<typename T, int N>
template<int M = kSize>
constexpr Simd superdex::Simd< T, N >::Dot ( Simd< T, N > a,
Simd< T, N > b )
inlinestaticnodiscardconstexpr

Definition at line 410 of file simd_arch_emulator_inl.h.

◆ Equal()

template<typename T, int N>
Simd superdex::Simd< T, N >::Equal ( Simd< T, N > const & x,
Simd< T, N > const & y )
inlinestatic

Definition at line 452 of file simd_arch_emulator_inl.h.

◆ Get() [1/3]

template<typename T, int N>
Scalar constexpr superdex::Simd< T, N >::Get ( int i) const
inlinenodiscardconstexpr

Definition at line 178 of file simd_arch_emulator_inl.h.

◆ Get() [2/3]

template<typename T, int N>
template<int i>
constexpr Scalar superdex::Simd< T, N >::Get ( Simd< T, N > v)
inlinestaticnodiscardconstexpr

Definition at line 183 of file simd_arch_emulator_inl.h.

◆ Get() [3/3]

template<typename T, int N>
constexpr Scalar superdex::Simd< T, N >::Get ( Simd< T, N > v,
int i )
inlinestaticnodiscardconstexpr

Definition at line 188 of file simd_arch_emulator_inl.h.

◆ GetHalf()

template<typename T, int N>
template<int i>
requires (N >= 2 && N % 2 == 0)
constexpr Simd< T, N/2 > superdex::Simd< T, N >::GetHalf ( Simd< T, N > v)
inlinestaticnodiscardconstexpr

Definition at line 194 of file simd_arch_emulator_inl.h.

◆ HMax()

template<typename T, int N>
template<int M = kSize>
constexpr Scalar superdex::Simd< T, N >::HMax ( Simd< T, N > a)
inlinestaticnodiscardconstexpr

Definition at line 392 of file simd_arch_emulator_inl.h.

◆ HMin()

template<typename T, int N>
template<int M = kSize>
constexpr Scalar superdex::Simd< T, N >::HMin ( Simd< T, N > a)
inlinestaticnodiscardconstexpr

Definition at line 386 of file simd_arch_emulator_inl.h.

◆ HProd()

template<typename T, int N>
template<int M = kSize>
constexpr Scalar superdex::Simd< T, N >::HProd ( Simd< T, N > a)
inlinestaticnodiscardconstexpr

Definition at line 404 of file simd_arch_emulator_inl.h.

◆ HSum()

template<typename T, int N>
template<int M = kSize>
constexpr Scalar superdex::Simd< T, N >::HSum ( Simd< T, N > a)
inlinestaticnodiscardconstexpr

Definition at line 398 of file simd_arch_emulator_inl.h.

◆ Load() [1/2]

template<typename T, int N>
template<int M = kSize>
Simd superdex::Simd< T, N >::Load ( Scalar const * ptr)
inlinestaticnodiscard

Definition at line 288 of file simd_arch_emulator_inl.h.

◆ Load() [2/2]

template<typename T, int N>
Simd superdex::Simd< T, N >::Load ( Scalar const * ptr,
int n )
inlinestaticnodiscard

Definition at line 302 of file simd_arch_emulator_inl.h.

◆ LoadIndexed()

template<typename T, int N>
template<typename IntT>
requires (std::integral<IntT>)
Simd superdex::Simd< T, N >::LoadIndexed ( Scalar const * ptr,
Simd< IntT, N > const & indices )
inlinestaticnodiscard

Definition at line 315 of file simd_arch_emulator_inl.h.

◆ LoadTransposed()

template<typename T, int N>
template<int kTupleCount = kSize>
void superdex::Simd< T, N >::LoadTransposed ( Scalar const * ptr,
Simd< T, N > & out0,
Simd< T, N > & out1,
Simd< T, N > & out2 )
inlinestatic

Definition at line 329 of file simd_arch_emulator_inl.h.

◆ NotEqual()

template<typename T, int N>
Simd superdex::Simd< T, N >::NotEqual ( Simd< T, N > const & x,
Simd< T, N > const & y )
inlinestatic

Definition at line 456 of file simd_arch_emulator_inl.h.

◆ operator!=()

template<typename T, int N>
bool superdex::Simd< T, N >::operator!= ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 498 of file simd_arch_emulator_inl.h.

◆ operator&()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator& ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 485 of file simd_arch_emulator_inl.h.

◆ operator&&()

Simd superdex::Simd< T, N, Concept >::operator&& ( Simd< T, N > rhs) const

◆ operator&=()

Simd & superdex::Simd< T, N, Concept >::operator&= ( Simd< T, N > rhs)

◆ operator*()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator* ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 483 of file simd_arch_emulator_inl.h.

◆ operator*=()

Simd & superdex::Simd< T, N, Concept >::operator*= ( Simd< T, N > rhs)

◆ operator+()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator+ ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 481 of file simd_arch_emulator_inl.h.

◆ operator+=()

Simd & superdex::Simd< T, N, Concept >::operator+= ( Simd< T, N > rhs)

◆ operator-() [1/2]

template<typename T, int N>
Simd superdex::Simd< T, N >::operator- ( ) const
inlinenodiscardconstexpr

Definition at line 467 of file simd_arch_emulator_inl.h.

◆ operator-() [2/2]

template<typename T, int N>
Simd superdex::Simd< T, N >::operator- ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 482 of file simd_arch_emulator_inl.h.

◆ operator-=()

Simd & superdex::Simd< T, N, Concept >::operator-= ( Simd< T, N > rhs)

◆ operator/()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator/ ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 484 of file simd_arch_emulator_inl.h.

◆ operator/=()

Simd & superdex::Simd< T, N, Concept >::operator/= ( Simd< T, N > rhs)

◆ operator<()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator< ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 477 of file simd_arch_emulator_inl.h.

◆ operator<<()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator<< ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 488 of file simd_arch_emulator_inl.h.

◆ operator<=()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator<= ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 479 of file simd_arch_emulator_inl.h.

◆ operator=() [1/2]

template<typename T, int N>
Simd & superdex::Simd< T, N >::operator= ( Simd< T, N > const & rhs)
inlineconstexprdefault

◆ operator=() [2/2]

template<typename T, int N>
template<class U, std::enable_if_t<(std::is_convertible_v< U, Scalar > &&!std::is_same_v< U, bool >), superdex::ConceptMatch > = superdex::ConceptMatch::True>
Simd & superdex::Simd< T, N >::operator= ( U a)
inlineconstexpr

Definition at line 163 of file simd_arch_emulator_inl.h.

◆ operator==()

template<typename T, int N>
bool superdex::Simd< T, N >::operator== ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 491 of file simd_arch_emulator_inl.h.

◆ operator>()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator> ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 478 of file simd_arch_emulator_inl.h.

◆ operator>=()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator>= ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 480 of file simd_arch_emulator_inl.h.

◆ operator>>()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator>> ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 489 of file simd_arch_emulator_inl.h.

◆ operator[]()

template<typename T, int N>
Scalar constexpr superdex::Simd< T, N >::operator[] ( int i) const
inlinenodiscardconstexpr

Definition at line 174 of file simd_arch_emulator_inl.h.

◆ operator^()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator^ ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 487 of file simd_arch_emulator_inl.h.

◆ operator^=()

Simd & superdex::Simd< T, N, Concept >::operator^= ( Simd< T, N > rhs)

◆ operator|()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator| ( Simd< T, N > rhs) const
inlinenodiscardconstexpr

Definition at line 486 of file simd_arch_emulator_inl.h.

◆ operator|=()

Simd & superdex::Simd< T, N, Concept >::operator|= ( Simd< T, N > rhs)

◆ operator||()

Simd superdex::Simd< T, N, Concept >::operator|| ( Simd< T, N > rhs) const

◆ operator~()

template<typename T, int N>
Simd superdex::Simd< T, N >::operator~ ( ) const
inlinenodiscardconstexpr

Definition at line 472 of file simd_arch_emulator_inl.h.

◆ Select()

template<typename T, int N>
constexpr Simd superdex::Simd< T, N >::Select ( Simd< T, N > mask,
Simd< T, N > a,
Simd< T, N > b )
inlinestaticnodiscardconstexpr

Definition at line 422 of file simd_arch_emulator_inl.h.

◆ Set() [1/2]

template<typename T, int N>
constexpr Simd superdex::Simd< T, N >::Set ( Simd< T, N > v,
int i,
Scalar value )
inlinestaticnodiscardconstexpr

Definition at line 205 of file simd_arch_emulator_inl.h.

◆ Set() [2/2]

template<typename T, int N>
template<int i>
Simd superdex::Simd< T, N >::Set ( Simd< T, N > v,
Scalar value )
inlinestaticnodiscard

Definition at line 213 of file simd_arch_emulator_inl.h.

◆ SetBasisVector()

template<typename T, int N>
template<int i>
requires (N == 4)
constexpr Simd superdex::Simd< T, N >::SetBasisVector ( )
inlinestaticnodiscardconstexpr

Definition at line 231 of file simd_arch_emulator_inl.h.

◆ ShiftRight()

template<typename T, int N>
template<int kShift>
constexpr Simd superdex::Simd< T, N >::ShiftRight ( Simd< T, N > a)
inlinestaticnodiscardconstexpr

Definition at line 503 of file simd_arch_emulator_inl.h.

◆ Shuffle() [1/3]

template<typename T, int N>
template<int x = 0, int y = 1>
requires (N == 2)
constexpr Simd superdex::Simd< T, N >::Shuffle ( Simd< T, N > a)
inlinestaticnodiscardconstexpr

Definition at line 264 of file simd_arch_emulator_inl.h.

◆ Shuffle() [2/3]

template<typename T, int N>
template<int x = 0, int y = 1, int z = 2, int w = 3>
requires (N == 4)
constexpr Simd superdex::Simd< T, N >::Shuffle ( Simd< T, N > a,
Simd< T, N > b )
inlinestaticnodiscardconstexpr

Definition at line 272 of file simd_arch_emulator_inl.h.

◆ Shuffle() [3/3]

template<typename T, int N>
template<int x = 0, int y = 1, int z = 2, int w = 3>
requires (N == 4)
constexpr Simd superdex::Simd< T, N >::Shuffle ( Simd< T, N > v)
inlinestaticnodiscardconstexpr

Definition at line 281 of file simd_arch_emulator_inl.h.

◆ size()

template<typename T, int N>
constexpr size_t superdex::Simd< T, N >::size ( )
inlinestaticconstexpr

Definition at line 156 of file simd_arch_emulator_inl.h.

◆ Store() [1/2]

template<typename T, int N>
template<int M = kSize>
void superdex::Simd< T, N >::Store ( Scalar * ptr,
Simd< T, N > v )
inlinestatic

Definition at line 342 of file simd_arch_emulator_inl.h.

◆ Store() [2/2]

template<typename T, int N>
void superdex::Simd< T, N >::Store ( Scalar * ptr,
Simd< T, N > v,
int n )
inlinestatic

Definition at line 351 of file simd_arch_emulator_inl.h.

◆ StoreSelected()

template<typename T, int N>
int superdex::Simd< T, N >::StoreSelected ( Scalar * ptr,
Simd< T, N > condition,
Simd< T, N > values )
inlinestatic

Definition at line 358 of file simd_arch_emulator_inl.h.

◆ StoreTransposed()

template<typename T, int N>
template<int kTupleCount = kSize>
void superdex::Simd< T, N >::StoreTransposed ( Scalar * ptr,
Simd< T, N > out0,
Simd< T, N > out1,
Simd< T, N > out2 )
inlinestatic

Definition at line 373 of file simd_arch_emulator_inl.h.

◆ Zero()

template<typename T, int N>
constexpr Simd superdex::Simd< T, N >::Zero ( )
inlinestaticnodiscardconstexpr

Definition at line 170 of file simd_arch_emulator_inl.h.

Member Data Documentation

◆ Abs

template<typename T, int N>
auto superdex::Simd< T, N >::Abs = Xapply<std::abs>
staticconstexpr

Definition at line 433 of file simd_arch_emulator_inl.h.

◆ ACos

template<typename T, int N>
auto superdex::Simd< T, N >::ACos = Xapply<std::acos>
staticconstexpr

Definition at line 441 of file simd_arch_emulator_inl.h.

◆ ASin

template<typename T, int N>
auto superdex::Simd< T, N >::ASin = Xapply<std::asin>
staticconstexpr

Definition at line 442 of file simd_arch_emulator_inl.h.

◆ ATan

template<typename T, int N>
auto superdex::Simd< T, N >::ATan = Xapply<std::atan>
staticconstexpr

Definition at line 443 of file simd_arch_emulator_inl.h.

◆ Cos

template<typename T, int N>
auto superdex::Simd< T, N >::Cos = Xapply<std::cos>
staticconstexpr

Definition at line 438 of file simd_arch_emulator_inl.h.

◆ Exp

template<typename T, int N>
auto superdex::Simd< T, N >::Exp = Xapply<std::exp>
staticconstexpr

Definition at line 444 of file simd_arch_emulator_inl.h.

◆ FastRound

template<typename T, int N>
auto superdex::Simd< T, N >::FastRound = Xapply<std::round>
staticconstexpr

Definition at line 435 of file simd_arch_emulator_inl.h.

◆ Floor

template<typename T, int N>
auto superdex::Simd< T, N >::Floor = Xapply<std::floor>
staticconstexpr

Definition at line 434 of file simd_arch_emulator_inl.h.

◆ kIsComposite

template<typename T, int N>
bool superdex::Simd< T, N >::kIsComposite = false
staticconstexpr

Definition at line 114 of file simd_arch_emulator_inl.h.

◆ kIsEmulated

template<typename T, int N>
bool superdex::Simd< T, N >::kIsEmulated = true
staticconstexpr

Definition at line 115 of file simd_arch_emulator_inl.h.

◆ kIsSupported

template<typename T, int N>
bool superdex::Simd< T, N >::kIsSupported = true
staticconstexpr

Definition at line 113 of file simd_arch_emulator_inl.h.

◆ kSize

template<typename T, int N>
int superdex::Simd< T, N >::kSize = N
staticconstexpr

Definition at line 112 of file simd_arch_emulator_inl.h.

◆ Ln

template<typename T, int N>
auto superdex::Simd< T, N >::Ln = Xapply<std::log>
staticconstexpr

Definition at line 445 of file simd_arch_emulator_inl.h.

◆ Max

template<typename T, int N>
auto superdex::Simd< T, N >::Max = XYapply<T const&, superdex::Max<T>>
staticconstexpr

Definition at line 450 of file simd_arch_emulator_inl.h.

◆ Min

template<typename T, int N>
auto superdex::Simd< T, N >::Min = XYapply<T const&, superdex::Min<T>>
staticconstexpr

Definition at line 449 of file simd_arch_emulator_inl.h.

◆ MulAdd

template<typename T, int N>
auto superdex::Simd< T, N >::MulAdd = XYZapply<T, superdex::MulAdd<T, T, T>>
staticconstexpr

Definition at line 461 of file simd_arch_emulator_inl.h.

◆ MulSub

template<typename T, int N>
auto superdex::Simd< T, N >::MulSub = XYZapply<T, superdex::MulSub<T, T, T>>
staticconstexpr

Definition at line 462 of file simd_arch_emulator_inl.h.

◆ NegMulAdd

template<typename T, int N>
auto superdex::Simd< T, N >::NegMulAdd = XYZapply<T, superdex::NegMulAdd<T, T, T>>
staticconstexpr

Definition at line 463 of file simd_arch_emulator_inl.h.

◆ NegMulSub

template<typename T, int N>
auto superdex::Simd< T, N >::NegMulSub = XYZapply<T, superdex::NegMulSub<T, T, T>>
staticconstexpr

Definition at line 464 of file simd_arch_emulator_inl.h.

◆ raw

template<typename T, int N>
NativeType superdex::Simd< T, N >::raw

Definition at line 119 of file simd_arch_emulator_inl.h.

◆ RcpApprox

template<typename T, int N>
auto superdex::Simd< T, N >::RcpApprox = Xapply<[](ST a) { return ST{1} / a; }>
staticconstexpr

Definition at line 436 of file simd_arch_emulator_inl.h.

◆ RcpSqrtApprox

template<typename T, int N>
auto superdex::Simd< T, N >::RcpSqrtApprox = Xapply<[](ST a) { return ST{1} / std::sqrt(a); }>
staticconstexpr

Definition at line 437 of file simd_arch_emulator_inl.h.

◆ Sin

template<typename T, int N>
auto superdex::Simd< T, N >::Sin = Xapply<std::sin>
staticconstexpr

Definition at line 439 of file simd_arch_emulator_inl.h.

◆ Sqrt

template<typename T, int N>
auto superdex::Simd< T, N >::Sqrt = Xapply<std::sqrt>
staticconstexpr

Definition at line 432 of file simd_arch_emulator_inl.h.

◆ Tan

template<typename T, int N>
auto superdex::Simd< T, N >::Tan = Xapply<std::tan>
staticconstexpr

Definition at line 440 of file simd_arch_emulator_inl.h.

◆ Tanh

template<typename T, int N>
auto superdex::Simd< T, N >::Tanh = Xapply<std::tanh>
staticconstexpr

Definition at line 446 of file simd_arch_emulator_inl.h.


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