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_avx (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_sub_ptr_avx (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_mul_ptr_avx (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_mul_scalar_ptr_avx (vector4 *res, const vector4 *v, const vm_float_t s)
void vec4_div_scalar_ptr_avx (vector4 *res, const vector4 *v, const vm_float_t s)
void vec4_neg_ptr_avx (vector4 *res, const vector4 *v)
void vec4_abs_ptr_avx (vector4 *res, const vector4 *v)
void vec4_normalize_ptr_avx (vector4 *res, const vector4 *v)
void vec4_min_ptr_avx (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_max_ptr_avx (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_lerp_ptr_avx (vector4 *res, const vector4 *a, const vector4 *b, const vm_float_t t)
void vec4_clamp_ptr_avx (vector4 *res, const vector4 *v, const vector4 *min, const vector4 *max)
void vec4_div_ptr_avx (vector4 *res, const vector4 *a, const vector4 *b)
void vec4_add_scalar_ptr_avx (vector4 *res, const vector4 *v, const vm_float_t s)
void vec4_sub_scalar_ptr_avx (vector4 *res, const vector4 *v, const vm_float_t s)
void vec4_clamp_scalar_ptr_avx (vector4 *res, const vector4 *v, const vm_float_t min, const vm_float_t max)
void vec4_saturate_ptr_avx (vector4 *res, const vector4 *v)
void vec4_sign_ptr_avx (vector4 *res, const vector4 *v)
void vec4_floor_ptr_avx (vector4 *res, const vector4 *v)
void vec4_ceil_ptr_avx (vector4 *res, const vector4 *v)
void vec4_round_ptr_avx (vector4 *res, const vector4 *v)
void vec4_fract_ptr_avx (vector4 *res, const vector4 *v)
void vec4_homogenize_ptr_avx (vector4 *res, const vector4 *v)
static __m256d quat_mul_avx (__m256d a, __m256d b)
void quat_mul_ptr_avx (quaternion *res, const quaternion *a, const quaternion *b)
void quat_normalize_ptr_avx (quaternion *res, const quaternion *q)

Function Documentation

◆ hadamard_div()

__m256d hadamard_div ( __m256d a,
__m256d b )
inlinestatic

◆ load4()

__m256d load4 ( const vector4 * v)
inlinestatic

Definition at line 11 of file vector4_ptr.c.

References vector4::v.

Referenced by vec4_abs_ptr_avx(), vec4_abs_ptr_avx2(), vec4_abs_ptr_avx512(), vec4_add_ptr_avx(), vec4_add_ptr_avx2(), vec4_add_ptr_avx512(), vec4_add_scalar_ptr_avx(), vec4_add_scalar_ptr_avx2(), vec4_add_scalar_ptr_avx512(), vec4_ceil_ptr_avx(), vec4_ceil_ptr_avx2(), vec4_ceil_ptr_avx512(), vec4_clamp_ptr_avx(), vec4_clamp_ptr_avx2(), vec4_clamp_ptr_avx512(), vec4_clamp_scalar_ptr_avx(), vec4_clamp_scalar_ptr_avx2(), vec4_clamp_scalar_ptr_avx512(), vec4_div_ptr_avx(), vec4_div_ptr_avx2(), vec4_div_ptr_avx512(), vec4_div_scalar_ptr_avx(), vec4_div_scalar_ptr_avx2(), vec4_div_scalar_ptr_avx512(), vec4_floor_ptr_avx(), vec4_floor_ptr_avx2(), vec4_floor_ptr_avx512(), vec4_fract_ptr_avx(), vec4_fract_ptr_avx2(), vec4_fract_ptr_avx512(), vec4_homogenize_ptr_avx(), vec4_homogenize_ptr_avx2(), vec4_homogenize_ptr_avx512(), vec4_lerp_ptr_avx(), vec4_lerp_ptr_avx2(), vec4_lerp_ptr_avx512(), vec4_max_ptr_avx(), vec4_max_ptr_avx2(), vec4_max_ptr_avx512(), vec4_min_ptr_avx(), vec4_min_ptr_avx2(), vec4_min_ptr_avx512(), vec4_mul_ptr_avx(), vec4_mul_ptr_avx2(), vec4_mul_ptr_avx512(), vec4_mul_scalar_ptr_avx(), vec4_mul_scalar_ptr_avx2(), vec4_mul_scalar_ptr_avx512(), vec4_neg_ptr_avx(), vec4_neg_ptr_avx2(), vec4_neg_ptr_avx512(), vec4_normalize_ptr_avx(), vec4_normalize_ptr_avx2(), vec4_normalize_ptr_avx512(), vec4_round_ptr_avx(), vec4_round_ptr_avx2(), vec4_round_ptr_avx512(), vec4_saturate_ptr_avx(), vec4_saturate_ptr_avx2(), vec4_saturate_ptr_avx512(), vec4_sign_ptr_avx(), vec4_sign_ptr_avx2(), vec4_sign_ptr_avx512(), vec4_sub_ptr_avx(), vec4_sub_ptr_avx2(), vec4_sub_ptr_avx512(), vec4_sub_scalar_ptr_avx(), vec4_sub_scalar_ptr_avx2(), and vec4_sub_scalar_ptr_avx512().

◆ quat_mul_avx()

__m256d quat_mul_avx ( __m256d a,
__m256d b )
inlinestatic

Definition at line 185 of file vector4_ptr.c.

Referenced by quat_mul_ptr_avx().

◆ quat_mul_ptr_avx()

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

Definition at line 208 of file vector4_ptr.c.

References quat_mul_avx(), and quaternion::v.

◆ quat_normalize_ptr_avx()

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

Definition at line 214 of file vector4_ptr.c.

References vec4_normalize_ptr_avx().

◆ sign4()

__m256d sign4 ( __m256d x)
inlinestatic

◆ store4()

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

Definition at line 16 of file vector4_ptr.c.

References vector4::v.

Referenced by vec4_abs_ptr_avx(), vec4_abs_ptr_avx2(), vec4_abs_ptr_avx512(), vec4_add_ptr_avx(), vec4_add_ptr_avx2(), vec4_add_ptr_avx512(), vec4_add_scalar_ptr_avx(), vec4_add_scalar_ptr_avx2(), vec4_add_scalar_ptr_avx512(), vec4_ceil_ptr_avx(), vec4_ceil_ptr_avx2(), vec4_ceil_ptr_avx512(), vec4_clamp_ptr_avx(), vec4_clamp_ptr_avx2(), vec4_clamp_ptr_avx512(), vec4_clamp_scalar_ptr_avx(), vec4_clamp_scalar_ptr_avx2(), vec4_clamp_scalar_ptr_avx512(), vec4_div_ptr_avx(), vec4_div_ptr_avx2(), vec4_div_ptr_avx512(), vec4_div_scalar_ptr_avx(), vec4_div_scalar_ptr_avx2(), vec4_div_scalar_ptr_avx512(), vec4_floor_ptr_avx(), vec4_floor_ptr_avx2(), vec4_floor_ptr_avx512(), vec4_fract_ptr_avx(), vec4_fract_ptr_avx2(), vec4_fract_ptr_avx512(), vec4_homogenize_ptr_avx(), vec4_homogenize_ptr_avx2(), vec4_homogenize_ptr_avx512(), vec4_lerp_ptr_avx(), vec4_lerp_ptr_avx2(), vec4_lerp_ptr_avx512(), vec4_max_ptr_avx(), vec4_max_ptr_avx2(), vec4_max_ptr_avx512(), vec4_min_ptr_avx(), vec4_min_ptr_avx2(), vec4_min_ptr_avx512(), vec4_mul_ptr_avx(), vec4_mul_ptr_avx2(), vec4_mul_ptr_avx512(), vec4_mul_scalar_ptr_avx(), vec4_mul_scalar_ptr_avx2(), vec4_mul_scalar_ptr_avx512(), vec4_neg_ptr_avx(), vec4_neg_ptr_avx2(), vec4_neg_ptr_avx512(), vec4_normalize_ptr_avx(), vec4_normalize_ptr_avx2(), vec4_normalize_ptr_avx512(), vec4_round_ptr_avx(), vec4_round_ptr_avx2(), vec4_round_ptr_avx512(), vec4_saturate_ptr_avx(), vec4_saturate_ptr_avx2(), vec4_saturate_ptr_avx512(), vec4_sign_ptr_avx(), vec4_sign_ptr_avx2(), vec4_sign_ptr_avx512(), vec4_sub_ptr_avx(), vec4_sub_ptr_avx2(), vec4_sub_ptr_avx512(), vec4_sub_scalar_ptr_avx(), vec4_sub_scalar_ptr_avx2(), and vec4_sub_scalar_ptr_avx512().

◆ vec4_abs_ptr_avx()

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

Definition at line 71 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_add_ptr_avx()

void vec4_add_ptr_avx ( 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_avx()

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

Definition at line 125 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_ceil_ptr_avx()

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

Definition at line 155 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_clamp_ptr_avx()

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

Definition at line 114 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_clamp_scalar_ptr_avx()

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

Definition at line 135 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_div_ptr_avx()

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

Definition at line 120 of file vector4_ptr.c.

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

◆ vec4_div_scalar_ptr_avx()

void vec4_div_scalar_ptr_avx ( 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_avx()

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

Definition at line 150 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_fract_ptr_avx()

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

Definition at line 169 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_homogenize_ptr_avx()

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

Definition at line 175 of file vector4_ptr.c.

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

◆ vec4_lerp_ptr_avx()

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

Definition at line 107 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_max_ptr_avx()

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

Definition at line 102 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_min_ptr_avx()

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

Definition at line 97 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_mul_ptr_avx()

void vec4_mul_ptr_avx ( 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_avx()

void vec4_mul_scalar_ptr_avx ( 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_avx()

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

Definition at line 66 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_normalize_ptr_avx()

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

Definition at line 77 of file vector4_ptr.c.

References load4(), and store4().

Referenced by quat_normalize_ptr_avx().

◆ vec4_round_ptr_avx()

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

Definition at line 160 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_saturate_ptr_avx()

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

Definition at line 140 of file vector4_ptr.c.

References load4(), and store4().

◆ vec4_sign_ptr_avx()

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

Definition at line 145 of file vector4_ptr.c.

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

◆ vec4_sub_ptr_avx()

void vec4_sub_ptr_avx ( 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_avx()

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

Definition at line 130 of file vector4_ptr.c.

References load4(), and store4().