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

A 4-component SIMD vector class. More...

#include <SimdVec4f.h>

Public Member Functions

 XII_DECLARE_POD_TYPE ()
 
 xiiSimdVec4f (float fXyzw)
 
 xiiSimdVec4f (const xiiSimdFloat &fXyzw)
 
 xiiSimdVec4f (float x, float y, float z, float w=1.0f)
 
 xiiSimdVec4f (xiiInternal::QuadFloat v)
 
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
 
xiiSimdVec4foperator+= (const xiiSimdVec4f &v)
 
xiiSimdVec4foperator-= (const xiiSimdVec4f &v)
 
xiiSimdVec4foperator*= (const xiiSimdFloat &f)
 
xiiSimdVec4foperator/= (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

A 4-component SIMD vector class.


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