diff --git a/include/cglm/simd/arm.h b/include/cglm/simd/arm.h index d0e5072..64b2dad 100644 --- a/include/cglm/simd/arm.h +++ b/include/cglm/simd/arm.h @@ -34,17 +34,19 @@ glmm_hadd(float32x4_t v) { static inline float glmm_hmin(float32x4_t v) { - v = vpmin_f32(vget_low_f32(v), vget_high_f32(v)); - v = vpmin_f32(v, v); - return vget_lane_f32(v, 0); + float32x2_t t; + t = vpmin_f32(vget_low_f32(v), vget_high_f32(v)); + t = vpmin_f32(t, t); + return vget_lane_f32(t, 0); } static inline float glmm_hmax(float32x4_t v) { - v = vpmax_f32(vget_low_f32(v), vget_high_f32(v)); - v = vpmax_f32(v, v); - return vget_lane_f32(v, 0); + float32x2_t t; + t = vpmax_f32(vget_low_f32(v), vget_high_f32(v)); + t = vpmax_f32(t, t); + return vget_lane_f32(t, 0); } static inline diff --git a/include/cglm/vec4-ext.h b/include/cglm/vec4-ext.h index 583376b..6baa70f 100644 --- a/include/cglm/vec4-ext.h +++ b/include/cglm/vec4-ext.h @@ -252,7 +252,7 @@ glm_vec4_abs(vec4 v, vec4 dest) { #if defined( __SSE__ ) || defined( __SSE2__ ) glmm_store(dest, glmm_abs(glmm_load(v))); #elif defined(CGLM_NEON_FP) - vst1q_f32(dest, vabsq_f32(vld1q_f32(a))); + vst1q_f32(dest, vabsq_f32(vld1q_f32(v))); #else dest[0] = fabsf(v[0]); dest[1] = fabsf(v[1]);