Vecmat 0.2.3
C math and linear algebra library for 2D/3D graphics, physics, and science.
Loading...
Searching...
No Matches
vector4_ptr.c File Reference
#include <immintrin.h>
#include <math.h>
#include <vecmat.h>

Go to the source code of this file.

Functions

static __m256d load4 (const vector4 *v)
static void store4 (vector4 *v, const __m256d x)
static __m256d hadamard_div (__m256d a, __m256d b)
static __m256d sign4 (__m256d x)
void vec4_add_ptr_avx2 (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_sub_ptr_avx2 (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_mul_ptr_avx2 (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_mul_scalar_ptr_avx2 (vector4 *res, const vector4 *v, const vm_float_t s)
void vec4_div_scalar_ptr_avx2 (vector4 *res, const vector4 *v, const vm_float_t s)
void vec4_neg_ptr_avx2 (vector4 *res, const vector4 *v)
void vec4_abs_ptr_avx2 (vector4 *res, const vector4 *v)
void vec4_normalize_ptr_avx2 (vector4 *res, const vector4 *v)
void vec4_min_ptr_avx2 (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_max_ptr_avx2 (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_lerp_ptr_avx2 (vector4 *res, const vector4 *a, const vector4 *b, const vm_float_t t)
void vec4_clamp_ptr_avx2 (vector4 *res, const vector4 *v, const vector4 *min, const vector4 *max)
void vec4_div_ptr_avx2 (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_add_scalar_ptr_avx2 (vector4 *res, const vector4 *v, const vm_float_t s)
void vec4_sub_scalar_ptr_avx2 (vector4 *res, const vector4 *v, const vm_float_t s)
void vec4_clamp_scalar_ptr_avx2 (vector4 *res, const vector4 *v, const vm_float_t min, const vm_float_t max)
void vec4_saturate_ptr_avx2 (vector4 *res, const vector4 *v)
void vec4_sign_ptr_avx2 (vector4 *res, const vector4 *v)
void vec4_floor_ptr_avx2 (vector4 *res, const vector4 *v)
void vec4_ceil_ptr_avx2 (vector4 *res, const vector4 *v)
void vec4_round_ptr_avx2 (vector4 *res, const vector4 *v)
void vec4_fract_ptr_avx2 (vector4 *res, const vector4 *v)
void vec4_homogenize_ptr_avx2 (vector4 *res, const vector4 *v)
void quat_mul_ptr_avx2 (quaternion *res, const quaternion *a, const quaternion *b)
void quat_normalize_ptr_avx2 (quaternion *res, const quaternion *q)

Function Documentation

◆ hadamard_div()

__m256d hadamard_div ( __m256d a,
__m256d b )
inlinestatic

Definition at line 21 of file vector4_ptr.c.

◆ load4()

__m256d load4 ( const vector4 * v)
inlinestatic

Definition at line 11 of file vector4_ptr.c.

References vector4::v.

◆ quat_mul_ptr_avx2()

void quat_mul_ptr_avx2 ( quaternion * res,
const quaternion * a,
const quaternion * b )

Definition at line 183 of file vector4_ptr.c.

References quaternion::v.

◆ quat_normalize_ptr_avx2()

void quat_normalize_ptr_avx2 ( quaternion * res,
const quaternion * q )

Definition at line 206 of file vector4_ptr.c.

References vec4_normalize_ptr_avx2().

◆ sign4()

__m256d sign4 ( __m256d x)
inlinestatic

Definition at line 29 of file vector4_ptr.c.

◆ store4()

void store4 ( vector4 * v,
const __m256d x )
inlinestatic

Definition at line 16 of file vector4_ptr.c.

References vector4::v.

◆ vec4_abs_ptr_avx2()

void vec4_abs_ptr_avx2 ( vector4 * res,
const vector4 * v )

Definition at line 71 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_add_ptr_avx2()

void vec4_add_ptr_avx2 ( vector4 * res,
const vector4 * a,
const vector4 * b )

Definition at line 37 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_add_scalar_ptr_avx2()

void vec4_add_scalar_ptr_avx2 ( vector4 * res,
const vector4 * v,
const vm_float_t s )

Definition at line 123 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_ceil_ptr_avx2()

void vec4_ceil_ptr_avx2 ( vector4 * res,
const vector4 * v )

Definition at line 153 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_clamp_ptr_avx2()

void vec4_clamp_ptr_avx2 ( vector4 * res,
const vector4 * v,
const vector4 * min,
const vector4 * max )

Definition at line 112 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_clamp_scalar_ptr_avx2()

void vec4_clamp_scalar_ptr_avx2 ( vector4 * res,
const vector4 * v,
const vm_float_t min,
const vm_float_t max )

Definition at line 133 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_div_ptr_avx2()

void vec4_div_ptr_avx2 ( vector4 * res,
const vector4 * a,
const vector4 * b )

Definition at line 118 of file vector4_ptr.c.

References hadamard_div(), load4(), and store4().

◆ vec4_div_scalar_ptr_avx2()

void vec4_div_scalar_ptr_avx2 ( vector4 * res,
const vector4 * v,
const vm_float_t s )

Definition at line 57 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_floor_ptr_avx2()

void vec4_floor_ptr_avx2 ( vector4 * res,
const vector4 * v )

Definition at line 148 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_fract_ptr_avx2()

void vec4_fract_ptr_avx2 ( vector4 * res,
const vector4 * v )

Definition at line 167 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_homogenize_ptr_avx2()

void vec4_homogenize_ptr_avx2 ( vector4 * res,
const vector4 * v )

Definition at line 173 of file vector4_ptr.c.

References load4(), store4(), VECMAT_EPSILON, VECMAT_FABS, and vector4::w.

◆ vec4_lerp_ptr_avx2()

void vec4_lerp_ptr_avx2 ( vector4 * res,
const vector4 * a,
const vector4 * b,
const vm_float_t t )

Definition at line 106 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_max_ptr_avx2()

void vec4_max_ptr_avx2 ( vector4 * res,
const vector4 * a,
const vector4 * b )

Definition at line 101 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_min_ptr_avx2()

void vec4_min_ptr_avx2 ( vector4 * res,
const vector4 * a,
const vector4 * b )

Definition at line 96 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_mul_ptr_avx2()

void vec4_mul_ptr_avx2 ( vector4 * res,
const vector4 * a,
const vector4 * b )

Definition at line 47 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_mul_scalar_ptr_avx2()

void vec4_mul_scalar_ptr_avx2 ( vector4 * res,
const vector4 * v,
const vm_float_t s )

Definition at line 52 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_neg_ptr_avx2()

void vec4_neg_ptr_avx2 ( vector4 * res,
const vector4 * v )

Definition at line 66 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_normalize_ptr_avx2()

void vec4_normalize_ptr_avx2 ( vector4 * res,
const vector4 * v )

Definition at line 77 of file vector4_ptr.c.

References load4(), and store4().

Referenced by quat_normalize_ptr_avx2().

◆ vec4_round_ptr_avx2()

void vec4_round_ptr_avx2 ( vector4 * res,
const vector4 * v )

Definition at line 158 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_saturate_ptr_avx2()

void vec4_saturate_ptr_avx2 ( vector4 * res,
const vector4 * v )

Definition at line 138 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_sign_ptr_avx2()

void vec4_sign_ptr_avx2 ( vector4 * res,
const vector4 * v )

Definition at line 143 of file vector4_ptr.c.

References load4(), sign4(), and store4().

◆ vec4_sub_ptr_avx2()

void vec4_sub_ptr_avx2 ( vector4 * res,
const vector4 * a,
const vector4 * b )

Definition at line 42 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_sub_scalar_ptr_avx2()

void vec4_sub_scalar_ptr_avx2 ( vector4 * res,
const vector4 * v,
const vm_float_t s )

Definition at line 128 of file vector4_ptr.c.

References load4(), and store4().