Merge pull request #1086 from imgly/imgly/fix/vdivq_f32_undefinded_armv7

Fixed use of undeclared identifier 'vdivq_f32' while compile for ARMv7 #1086
master
Christophe ago%!(EXTRA string=3 years) committed by GitHub
commit 0a6d3334ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      glm/detail/type_vec4_simd.inl

@ -577,7 +577,20 @@ namespace detail {
static vec<4, float, Q> call(vec<4, float, Q> const& a, vec<4, float, Q> const& b) static vec<4, float, Q> call(vec<4, float, Q> const& a, vec<4, float, Q> const& b)
{ {
vec<4, float, Q> Result; vec<4, float, Q> Result;
#if GLM_ARCH & GLM_ARCH_ARMV8_BIT
Result.data = vdivq_f32(a.data, b.data); Result.data = vdivq_f32(a.data, b.data);
#else
/* Arm assembler reference:
*
* The Newton-Raphson iteration: x[n+1] = x[n] * (2 - d * x[n])
* converges to (1/d) if x0 is the result of VRECPE applied to d.
*
* Note: The precision usually improves with two interactions, but more than two iterations are not helpful. */
float32x4_t x = vrecpeq_f32(b.data);
x = vmulq_f32(vrecpsq_f32(b.data, x), x);
x = vmulq_f32(vrecpsq_f32(b.data, x), x);
Result.data = vmulq_f32(a.data, x);
#endif
return Result; return Result;
} }
}; };

Loading…
Cancel
Save