mirror of
https://github.com/recp/cglm.git
synced 2026-08-31 11:12:48 -05:00
simd: use glmm_set1() to optimize broadcasting single float
This commit is contained in:
+7
-7
@@ -215,7 +215,7 @@ glm_vec4_one(vec4 v) {
|
||||
#if defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glmm_store(v, wasm_f32x4_const_splat(1.0f));
|
||||
#elif defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glmm_store(v, _mm_set1_ps(1.0f));
|
||||
glmm_store(v, glmm_set1(1.0f));
|
||||
#elif defined(CGLM_NEON_FP)
|
||||
vst1q_f32(v, vdupq_n_f32(1.0f));
|
||||
#else
|
||||
@@ -367,7 +367,7 @@ glm_vec4_adds(vec4 v, float s, vec4 dest) {
|
||||
#if defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glmm_store(dest, wasm_f32x4_add(glmm_load(v), wasm_f32x4_splat(s)));
|
||||
#elif defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glmm_store(dest, _mm_add_ps(glmm_load(v), _mm_set1_ps(s)));
|
||||
glmm_store(dest, _mm_add_ps(glmm_load(v), glmm_set1(s)));
|
||||
#elif defined(CGLM_NEON_FP)
|
||||
vst1q_f32(dest, vaddq_f32(vld1q_f32(v), vdupq_n_f32(s)));
|
||||
#else
|
||||
@@ -415,7 +415,7 @@ glm_vec4_subs(vec4 v, float s, vec4 dest) {
|
||||
#if defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glmm_store(dest, wasm_f32x4_sub(glmm_load(v), wasm_f32x4_splat(s)));
|
||||
#elif defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glmm_store(dest, _mm_sub_ps(glmm_load(v), _mm_set1_ps(s)));
|
||||
glmm_store(dest, _mm_sub_ps(glmm_load(v), glmm_set1(s)));
|
||||
#elif defined(CGLM_NEON_FP)
|
||||
vst1q_f32(dest, vsubq_f32(vld1q_f32(v), vdupq_n_f32(s)));
|
||||
#else
|
||||
@@ -463,7 +463,7 @@ glm_vec4_scale(vec4 v, float s, vec4 dest) {
|
||||
#if defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glmm_store(dest, wasm_f32x4_mul(glmm_load(v), wasm_f32x4_splat(s)));
|
||||
#elif defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glmm_store(dest, _mm_mul_ps(glmm_load(v), _mm_set1_ps(s)));
|
||||
glmm_store(dest, _mm_mul_ps(glmm_load(v), glmm_set1(s)));
|
||||
#elif defined(CGLM_NEON_FP)
|
||||
vst1q_f32(dest, vmulq_f32(vld1q_f32(v), vdupq_n_f32(s)));
|
||||
#else
|
||||
@@ -528,7 +528,7 @@ glm_vec4_divs(vec4 v, float s, vec4 dest) {
|
||||
#if defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glmm_store(dest, wasm_f32x4_div(glmm_load(v), wasm_f32x4_splat(s)));
|
||||
#elif defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glmm_store(dest, _mm_div_ps(glmm_load(v), _mm_set1_ps(s)));
|
||||
glmm_store(dest, _mm_div_ps(glmm_load(v), glmm_set1(s)));
|
||||
#else
|
||||
glm_vec4_scale(v, 1.0f / s, dest);
|
||||
#endif
|
||||
@@ -1065,8 +1065,8 @@ glm_vec4_clamp(vec4 v, float minVal, float maxVal) {
|
||||
glmm_store(v, glmm_min(glmm_max(glmm_load(v), wasm_f32x4_splat(minVal)),
|
||||
wasm_f32x4_splat(maxVal)));
|
||||
#elif defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glmm_store(v, glmm_min(glmm_max(glmm_load(v), _mm_set1_ps(minVal)),
|
||||
_mm_set1_ps(maxVal)));
|
||||
glmm_store(v, glmm_min(glmm_max(glmm_load(v), glmm_set1(minVal)),
|
||||
glmm_set1(maxVal)));
|
||||
#elif defined(CGLM_NEON_FP)
|
||||
glmm_store(v, glmm_min(glmm_max(vld1q_f32(v), vdupq_n_f32(minVal)),
|
||||
vdupq_n_f32(maxVal)));
|
||||
|
||||
Reference in New Issue
Block a user