mirror of
https://github.com/recp/cglm.git
synced 2026-02-17 03:39:05 +00:00
simd128: enable in quat
This commit is contained in:
@@ -70,6 +70,10 @@
|
||||
# include "simd/neon/quat.h"
|
||||
#endif
|
||||
|
||||
#ifdef CGLM_SIMD_WASM
|
||||
# include "simd/wasm/quat.h"
|
||||
#endif
|
||||
|
||||
CGLM_INLINE void glm_quat_normalize(versor q);
|
||||
|
||||
/*
|
||||
@@ -252,6 +256,20 @@ glm_quat_normalize_to(versor q, versor dest) {
|
||||
}
|
||||
|
||||
glmm_store(dest, _mm_div_ps(x0, _mm_sqrt_ps(xdot)));
|
||||
#elif defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glmm_128 xdot, x0;
|
||||
float dot;
|
||||
|
||||
x0 = glmm_load(q);
|
||||
xdot = glmm_vdot(x0, x0);
|
||||
dot = _mm_cvtss_f32(xdot);
|
||||
|
||||
if (dot <= 0.0f) {
|
||||
glm_quat_identity(dest);
|
||||
return;
|
||||
}
|
||||
|
||||
glmm_store(dest, wasm_f32x4_div(x0, wasm_f32x4_sqrt(xdot)));
|
||||
#else
|
||||
float dot;
|
||||
|
||||
@@ -440,6 +458,8 @@ glm_quat_mul(versor p, versor q, versor dest) {
|
||||
*/
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glm_quat_mul_sse2(p, q, dest);
|
||||
#elif defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glm_quat_mul_wasm(p, q, dest);
|
||||
#elif defined(CGLM_NEON_FP)
|
||||
glm_quat_mul_neon(p, q, dest);
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user