From 591c881376f5e4c99b459d5c17014b61ed1d79ca Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Tue, 10 Apr 2018 10:46:45 +0300 Subject: [PATCH] vec: extend flip sign to store result in another vector --- include/cglm/vec3.h | 14 ++++++++++++++ include/cglm/vec4.h | 20 ++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index 65fe0ba..13b4920 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -242,6 +242,20 @@ glm_vec_flipsign(vec3 v) { v[2] = -v[2]; } +/*! + * @brief flip sign of all vec3 members and store result in dest + * + * @param[in] v vector + * @param[out] dest vector + */ +CGLM_INLINE +void +glm_vec_flipsign_to(vec3 v, vec3 dest) { + dest[0] = -v[0]; + dest[1] = -v[1]; + dest[2] = -v[2]; +} + /*! * @brief make vector as inverse/opposite of itself * diff --git a/include/cglm/vec4.h b/include/cglm/vec4.h index adf5fb9..1c4ce13 100644 --- a/include/cglm/vec4.h +++ b/include/cglm/vec4.h @@ -268,6 +268,26 @@ glm_vec4_flipsign(vec4 v) { #endif } +/*! + * @brief flip sign of all vec4 members and store result in dest + * + * @param[in] v vector + * @param[out] dest vector + */ +CGLM_INLINE +void +glm_vec4_flipsign_to(vec4 v, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + _mm_store_ps(dest, _mm_xor_ps(_mm_load_ps(v), + _mm_set1_ps(-0.0f))); +#else + dest[0] = -v[0]; + dest[1] = -v[1]; + dest[2] = -v[2]; + dest[3] = -v[3]; +#endif +} + /*! * @brief make vector as inverse/opposite of itself *