XII Release 0.1.0
Loading...
Searching...
No Matches
xiiSimdVec4f Class Reference

Copyright (c) Theophilus Eriata. All Rights Reserved. More...

#include <SimdVec4f.h>

Public Member Functions

 XII_DECLARE_POD_TYPE ()
 xiiSimdVec4f ()
 Copyright (c) Theophilus Eriata. All Rights Reserved.
 xiiSimdVec4f (float fXyzw)
 xiiSimdVec4f (const xiiSimdFloat &fXyzw)
 xiiSimdVec4f (float x, float y, float z, float w=1.0f)
 xiiSimdVec4f (xiiInternal::QuadFloat v)
 Copyright (c) Theophilus Eriata. All Rights Reserved.
void Set (float fXyzw)
void Set (float x, float y, float z, float w)
void SetX (const xiiSimdFloat &f)
void SetY (const xiiSimdFloat &f)
void SetZ (const xiiSimdFloat &f)
void SetW (const xiiSimdFloat &f)
void SetZero ()
template<xiiInt32 N>
void Load (const float *pFloats)
template<xiiInt32 N>
void Store (float *pFloats) const
template<xiiMathFloatBits::Enum acc = xiiMathFloatBits::FULL>
xiiSimdVec4f GetReciprocal () const
template<xiiMathFloatBits::Enum acc = xiiMathFloatBits::FULL>
xiiSimdVec4f GetSqrt () const
template<xiiMathFloatBits::Enum acc = xiiMathFloatBits::FULL>
xiiSimdVec4f GetInvSqrt () const
template<xiiInt32 N, xiiMathFloatBits::Enum acc = xiiMathFloatBits::FULL>
xiiSimdFloat GetLength () const
template<xiiInt32 N, xiiMathFloatBits::Enum acc = xiiMathFloatBits::FULL>
xiiSimdFloat GetInvLength () const
template<xiiInt32 N>
xiiSimdFloat GetLengthSquared () const
template<xiiInt32 N, xiiMathFloatBits::Enum acc = xiiMathFloatBits::FULL>
xiiSimdFloat GetLengthAndNormalize ()
template<xiiInt32 N, xiiMathFloatBits::Enum acc = xiiMathFloatBits::FULL>
xiiSimdVec4f GetNormalized () const
template<xiiInt32 N, xiiMathFloatBits::Enum acc = xiiMathFloatBits::FULL>
void Normalize ()
template<xiiInt32 N, xiiMathFloatBits::Enum acc = xiiMathFloatBits::FULL>
void NormalizeIfNotZero (const xiiSimdFloat &fEpsilon=xiiMath::SmallEpsilon< float >())
template<xiiInt32 N>
bool IsZero () const
template<xiiInt32 N>
bool IsZero (const xiiSimdFloat &fEpsilon) const
template<xiiInt32 N>
bool IsNormalized (const xiiSimdFloat &fEpsilon=xiiMath::HugeEpsilon< float >()) const
template<xiiInt32 N>
bool IsNaN () const
template<xiiInt32 N>
bool IsValid () const
template<xiiInt32 N>
xiiSimdFloat GetComponent () const
xiiSimdFloat GetComponent (xiiInt32 i) const
xiiSimdFloat x () const
xiiSimdFloat y () const
xiiSimdFloat z () const
xiiSimdFloat w () const
template<xiiSwizzle::Enum s>
xiiSimdVec4f Get () const
template<xiiSwizzle::Enum s>
xiiSimdVec4f GetCombined (const xiiSimdVec4f &other) const
 x = this[s0], y = this[s1], z = other[s2], w = other[s3]
xiiSimdVec4f operator- () const
xiiSimdVec4f operator+ (const xiiSimdVec4f &v) const
xiiSimdVec4f operator- (const xiiSimdVec4f &v) const
xiiSimdVec4f operator* (const xiiSimdFloat &f) const
xiiSimdVec4f operator/ (const xiiSimdFloat &f) const
xiiSimdVec4f CompMul (const xiiSimdVec4f &v) const
template<xiiMathFloatBits::Enum acc = xiiMathFloatBits::FULL>
xiiSimdVec4f CompDiv (const xiiSimdVec4f &v) const
xiiSimdVec4f CompMin (const xiiSimdVec4f &rhs) const
xiiSimdVec4f CompMax (const xiiSimdVec4f &rhs) const
xiiSimdVec4f Abs () const
xiiSimdVec4f Round () const
xiiSimdVec4f Floor () const
xiiSimdVec4f Ceil () const
xiiSimdVec4f Trunc () const
xiiSimdVec4f Fraction () const
xiiSimdVec4f FlipSign (const xiiSimdVec4b &vCmp) const
xiiSimdVec4f & operator+= (const xiiSimdVec4f &v)
xiiSimdVec4f & operator-= (const xiiSimdVec4f &v)
xiiSimdVec4f & operator*= (const xiiSimdFloat &f)
xiiSimdVec4f & operator/= (const xiiSimdFloat &f)
xiiSimdVec4b IsEqual (const xiiSimdVec4f &rhs, const xiiSimdFloat &fEpsilon) const
xiiSimdVec4b operator== (const xiiSimdVec4f &v) const
xiiSimdVec4b operator!= (const xiiSimdVec4f &v) const
xiiSimdVec4b operator<= (const xiiSimdVec4f &v) const
xiiSimdVec4b operator< (const xiiSimdVec4f &v) const
xiiSimdVec4b operator>= (const xiiSimdVec4f &v) const
xiiSimdVec4b operator> (const xiiSimdVec4f &v) const
template<xiiInt32 N>
xiiSimdFloat HorizontalSum () const
template<xiiInt32 N>
xiiSimdFloat HorizontalMin () const
template<xiiInt32 N>
xiiSimdFloat HorizontalMax () const
template<xiiInt32 N>
xiiSimdFloat Dot (const xiiSimdVec4f &v) const
xiiSimdVec4f CrossRH (const xiiSimdVec4f &v) const
 3D cross product, w is ignored.
xiiSimdVec4f GetOrthogonalVector () const
 Generates an arbitrary vector such that Dot<3>(GetOrthogonalVector()) == 0.
template<xiiInt32 N>
XII_ALWAYS_INLINE void Load (const float *pFloats)
template<xiiInt32 N>
XII_ALWAYS_INLINE void Store (float *pFloats) const
template<xiiMathFloatBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdVec4f GetReciprocal () const
template<xiiMathFloatBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdVec4f GetSqrt () const
template<xiiInt32 N>
XII_ALWAYS_INLINE bool IsZero () const
template<xiiInt32 N>
XII_ALWAYS_INLINE bool IsZero (const xiiSimdFloat &fEpsilon) const
template<xiiInt32 N>
XII_ALWAYS_INLINE bool IsNaN () const
template<xiiInt32 N>
XII_ALWAYS_INLINE bool IsValid () const
template<xiiInt32 N>
XII_ALWAYS_INLINE xiiSimdFloat GetComponent () const
template<xiiSwizzle::Enum s>
XII_ALWAYS_INLINE xiiSimdVec4f Get () const
template<xiiSwizzle::Enum s>
XII_ALWAYS_INLINE xiiSimdVec4f GetCombined (const xiiSimdVec4f &other) const
template<xiiMathFloatBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdVec4f CompDiv (const xiiSimdVec4f &v) const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalSum () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalSum () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalSum () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMin () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMin () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMin () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMax () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMax () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMax () const
template<xiiInt32 N>
XII_ALWAYS_INLINE xiiSimdFloat Dot (const xiiSimdVec4f &v) const
template<>
XII_ALWAYS_INLINE void Load (const float *pFloat)
template<>
XII_ALWAYS_INLINE void Load (const float *pFloat)
template<>
XII_ALWAYS_INLINE void Load (const float *pFloat)
template<>
XII_ALWAYS_INLINE void Load (const float *pFloat)
template<>
XII_ALWAYS_INLINE void Store (float *pFloat) const
template<>
XII_ALWAYS_INLINE void Store (float *pFloat) const
template<>
XII_ALWAYS_INLINE void Store (float *pFloat) const
template<>
XII_ALWAYS_INLINE void Store (float *pFloat) const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalSum () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalSum () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalSum () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMin () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMin () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMin () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMax () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMax () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMax () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat Dot (const xiiSimdVec4f &v) const
template<>
XII_ALWAYS_INLINE xiiSimdFloat Dot (const xiiSimdVec4f &v) const
template<>
XII_ALWAYS_INLINE xiiSimdFloat Dot (const xiiSimdVec4f &v) const
template<>
XII_ALWAYS_INLINE xiiSimdFloat Dot (const xiiSimdVec4f &v) const
template<xiiInt32 N, xiiMathFloatBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdFloat GetLength () const
template<xiiInt32 N, xiiMathFloatBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdFloat GetInvLength () const
template<xiiInt32 N>
XII_ALWAYS_INLINE xiiSimdFloat GetLengthSquared () const
template<xiiInt32 N, xiiMathFloatBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdFloat GetLengthAndNormalize ()
template<xiiInt32 N, xiiMathFloatBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdVec4f GetNormalized () const
template<xiiInt32 N, xiiMathFloatBits::Enum acc>
XII_ALWAYS_INLINE void Normalize ()
template<xiiInt32 N>
XII_ALWAYS_INLINE bool IsNormalized (const xiiSimdFloat &fEpsilon) const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalSum () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMin () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMax () const
template<>
XII_ALWAYS_INLINE void Load (const float *pFloat)
template<>
XII_ALWAYS_INLINE void Load (const float *pFloat)
template<>
XII_ALWAYS_INLINE void Load (const float *pFloat)
template<>
XII_ALWAYS_INLINE void Load (const float *pFloat)
template<>
XII_ALWAYS_INLINE void Store (float *pFloat) const
template<>
XII_ALWAYS_INLINE void Store (float *pFloat) const
template<>
XII_ALWAYS_INLINE void Store (float *pFloat) const
template<>
XII_ALWAYS_INLINE void Store (float *pFloat) const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalSum () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalSum () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalSum () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMin () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMin () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMin () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMax () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMax () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat HorizontalMax () const
template<>
XII_ALWAYS_INLINE xiiSimdFloat Dot (const xiiSimdVec4f &v) const
template<>
XII_ALWAYS_INLINE xiiSimdFloat Dot (const xiiSimdVec4f &v) const
template<>
XII_ALWAYS_INLINE xiiSimdFloat Dot (const xiiSimdVec4f &v) const
template<>
XII_ALWAYS_INLINE xiiSimdFloat Dot (const xiiSimdVec4f &v) const

Static Public Member Functions

static xiiSimdVec4f MakeZero ()
 Creates a xiiSimdVec4f that is initialized to zero.
static xiiSimdVec4f MakeNaN ()
 Creates a xiiSimdVec4f that is initialized to Not-A-Number (NaN).
static xiiSimdVec4f Select (const xiiSimdVec4b &vCmp, const xiiSimdVec4f &vTrue, const xiiSimdVec4f &vFalse)
static xiiSimdVec4f Lerp (const xiiSimdVec4f &a, const xiiSimdVec4f &b, const xiiSimdVec4f &t)
static xiiSimdVec4f MulAdd (const xiiSimdVec4f &a, const xiiSimdVec4f &b, const xiiSimdVec4f &c)
static xiiSimdVec4f MulAdd (const xiiSimdVec4f &a, const xiiSimdFloat &b, const xiiSimdVec4f &c)
static xiiSimdVec4f MulSub (const xiiSimdVec4f &a, const xiiSimdVec4f &b, const xiiSimdVec4f &c)
static xiiSimdVec4f MulSub (const xiiSimdVec4f &a, const xiiSimdFloat &b, const xiiSimdVec4f &c)
static xiiSimdVec4f CopySign (const xiiSimdVec4f &vMagnitude, const xiiSimdVec4f &vSign)

Public Attributes

xiiInternal::QuadFloat m_v

Detailed Description

Copyright (c) Theophilus Eriata. All Rights Reserved.

A 4-component SIMD vector class


The documentation for this class was generated from the following files:
  • /home/runner/work/XII/XII/Source/Engine/Foundation/SimdMath/SimdVec4f.h
  • /home/runner/work/XII/XII/Source/Engine/Foundation/SimdMath/Implementation/FPU/FPUVec4f_inl.h
  • /home/runner/work/XII/XII/Source/Engine/Foundation/SimdMath/Implementation/NEON/NEONVec4f_inl.h
  • /home/runner/work/XII/XII/Source/Engine/Foundation/SimdMath/Implementation/SimdVec4f_inl.h
  • /home/runner/work/XII/XII/Source/Engine/Foundation/SimdMath/Implementation/SSE/SSEVec4f_inl.h