Browse Source

Merge pull request #992 from amaury-ml/compfix

[Aarch64] fix for glm::length #992
Christophe 5 years ago
parent
commit
82d500376e
1 changed files with 2 additions and 4 deletions
  1. 2 4
      glm/detail/func_geometric_simd.inl

+ 2 - 4
glm/detail/func_geometric_simd.inl

@@ -105,7 +105,7 @@ namespace detail
 	{
 	{
 		GLM_FUNC_QUALIFIER static float call(vec<4, float, Q> const& v)
 		GLM_FUNC_QUALIFIER static float call(vec<4, float, Q> const& v)
 		{
 		{
-			return compute_dot<vec<4, float, Q>, float, true>::call(v, v);
+			return sqrt(compute_dot<vec<4, float, Q>, float, true>::call(v, v));
 		}
 		}
 	};
 	};
 
 
@@ -126,9 +126,7 @@ namespace detail
 		{
 		{
 #if GLM_ARCH & GLM_ARCH_ARMV8_BIT
 #if GLM_ARCH & GLM_ARCH_ARMV8_BIT
 			float32x4_t v = vmulq_f32(x.data, y.data);
 			float32x4_t v = vmulq_f32(x.data, y.data);
-			v = vpaddq_f32(v, v);
-			v = vpaddq_f32(v, v);
-			return vgetq_lane_f32(v, 0);
+			return vaddvq_f32(v);
 #else  // Armv7a with Neon
 #else  // Armv7a with Neon
 			float32x4_t p = vmulq_f32(x.data, y.data);
 			float32x4_t p = vmulq_f32(x.data, y.data);
 			float32x2_t v = vpadd_f32(vget_low_f32(p), vget_high_f32(p));
 			float32x2_t v = vpadd_f32(vget_low_f32(p), vget_high_f32(p));