#include <sse_vector_2f64.h>
The class and the default constructor are always defined. The functions of this class are only defined when C4D_HAS_SSE2_CAPABILITY is set. Instances of this class must be aligned to 16 bytes. The layout in the memory is as follows: address + 0 + 1 R0 R1
Public Types | |
using | ValueType = Float64 |
Public Member Functions | |
Vector2f64 ()=default | |
MAXON_ATTRIBUTE_FORCE_INLINE | Vector2f64 (Float64 d0, Float64 d1) |
MAXON_ATTRIBUTE_FORCE_INLINE | Vector2f64 (const Float64 *p, Bool aligned) |
MAXON_ATTRIBUTE_FORCE_INLINE void | LoadUnaligned (const Float64 *p) |
MAXON_ATTRIBUTE_FORCE_INLINE void | LoadAligned (const Float64 *p) |
MAXON_ATTRIBUTE_FORCE_INLINE void | LoadSingle (const double *p) |
Static Public Member Functions | |
template<int mb1, int ma1> | |
static MAXON_ATTRIBUTE_FORCE_INLINE Vector2f64 | Shuffle (const Vector2f64 &a) |
Protected Attributes | |
Float64 | v [2] |
Friends | |
Vector4f32 | ConvertToVector4f32 (const Vector2f64 &a, const Vector2f64 &b) |
Vector4f32 | ConvertToVector4f32 (const Vector2f64 &a) |
void | ConvertToVectors2f64 (const Vector4f32 &a, Vector2f64 &result1, Vector2f64 &result2) |
void | ConvertToVectors2f64 (const Vector4f64 &a, Vector2f64 &result1, Vector2f64 &result2) |
MAXON_ATTRIBUTE_FORCE_INLINE friend Vector2f64 | operator+ (const Vector2f64 &a, const Vector2f64 &b) |
MAXON_ATTRIBUTE_FORCE_INLINE friend Vector2f64 | operator* (const Vector2f64 &a, const Vector2f64 &b) |
|
default |
Constructs the object. It does not set a default value.
|
explicit |
Constructs the object and sets all values to f0...f3.
[in] | d0 | The value that is assigned to vector element 0. |
[in] | d1 | The value that is assigned to vector element 1. |
|
explicit |
Constructs a vector from an address in the memory.
[in] | p | The address where the vector is loaded from. |
[in] | aligned | Should be set to true, if p is known to be 16-byte aligned. |
MAXON_ATTRIBUTE_FORCE_INLINE void LoadUnaligned | ( | const Float64 * | p | ) |
Loads a vector from an address in the memory.
[in] | p | The address where the vector is loaded from. |
MAXON_ATTRIBUTE_FORCE_INLINE void LoadAligned | ( | const Float64 * | p | ) |
Loads a vector from an address in the memory.
[in] | p | The address where the vector is loaded from. It must be 16-byte aligned. |
MAXON_ATTRIBUTE_FORCE_INLINE void LoadSingle | ( | const double * | p | ) |
Loads a single value from an address in the memory to the lower value of the vector. The upper part is set to zero.
[in] | p | The address where the vector is loaded from. |
|
static |
Shuffles the components of the input vectors. Note that the template arguments must be numeric constants and be either 0 or 1.
[in] | a | Input vector A. |
ma1 | Decides which element of vector A becomes the new R0. |
mb1 | Decides which element of vector B becomes the new R0. |
|
friend |
Converts two Vector2f64 to a Vector4f32 vector.
|
friend |
Converts one Vector2f64 to a Vector4f32 vector.
|
friend |
|
friend |
|
friend |
Adds two vectors.
[in] | a | The first operand. |
[in] | b | The second operand. |
|
friend |
Multiplies two vectors.
[in] | a | The first operand. |
[in] | b | The second operand. |
|
protected |