From b2e8e7c77b30a58cfd5065d3d2d7a2e8d7807c7e Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Tue, 11 Oct 2016 14:02:49 +0300 Subject: [PATCH] vec: flip sign --- include/cglm-vec.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/include/cglm-vec.h b/include/cglm-vec.h index 65af819..31c4163 100644 --- a/include/cglm-vec.h +++ b/include/cglm-vec.h @@ -292,6 +292,42 @@ glm_vec_scale(vec3 v, float s, vec3 dest) { dest[2] = v[2] * s; } +/*! + * @brief flip sign of all vec3 members + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec_flipsign(vec3 v) { + v[0] = -v[0]; + v[1] = -v[1]; + v[2] = -v[2]; +} + +/*! + * @brief flip sign of all vec4 members + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec4_flipsign(vec4 v) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + _mm_store_ps(v, _mm_xor_ps(_mm_load_ps(v), + _mm_set1_ps(-0.0f))); +#else + v[0] = -v[0]; + v[1] = -v[1]; + v[2] = -v[2]; + v[3] = -v[3]; +#endif +} + /*! * @brief multiply vec4 vector with scalar *