From a6cf379d99eb5116e5a304969a483164daf0ab78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 4 Feb 2022 13:11:49 +0100 Subject: [PATCH] Havok: Fix compile errors in non-AArch64 impls of hkSimdFloat32 --- .../Common/Base/Math/Vector/hkSimdFloat32.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/hkStubs/Havok/Common/Base/Math/Vector/hkSimdFloat32.h b/lib/hkStubs/Havok/Common/Base/Math/Vector/hkSimdFloat32.h index cb327973..2200f78a 100644 --- a/lib/hkStubs/Havok/Common/Base/Math/Vector/hkSimdFloat32.h +++ b/lib/hkStubs/Havok/Common/Base/Math/Vector/hkSimdFloat32.h @@ -227,8 +227,10 @@ inline hkSimdFloat32 hkSimdFloat32::sqrt() const { const auto r = m_real * inv; return vbic_u32(r, leqZero); #else + hkSimdFloat32 result; for (int i = 0; i < 4; ++i) - m_real[i] = m_real[i] >= 0.0f ? std::sqrt(m_real[i]) : 0.0f; + result.m_real[i] = m_real[i] >= 0.0f ? std::sqrt(m_real[i]) : 0.0f; + return result; #endif } @@ -237,8 +239,10 @@ inline hkSimdFloat32 hkSimdFloat32::sqrtUnsafe() const { const auto inv = sqrtInverseUnsafe(); return m_real * inv.m_real; #else + hkSimdFloat32 result; for (int i = 0; i < 4; ++i) - m_real[i] = std::sqrt(m_real[i]); + result.m_real[i] = std::sqrt(m_real[i]); + return result; #endif } @@ -248,8 +252,10 @@ inline hkSimdFloat32 hkSimdFloat32::sqrtInverse() const { const auto inv = sqrtInverseUnsafe().m_real; return vbic_u32(inv, leqZero); #else + hkSimdFloat32 result; for (int i = 0; i < 4; ++i) - m_real[i] = m_real[i] > 0.0f ? (1.0f / std::sqrt(m_real[i])) : 0.0f; + result.m_real[i] = m_real[i] > 0.0f ? (1.0f / std::sqrt(m_real[i])) : 0.0f; + return result; #endif } @@ -260,8 +266,10 @@ inline hkSimdFloat32 hkSimdFloat32::sqrtInverseUnsafe() const { r0 = vrsqrts_f32(m_real, r0 * r0) * r0; return r0; #else + hkSimdFloat32 result; for (int i = 0; i < 4; ++i) - m_real[i] = 1.0f / std::sqrt(m_real[i]); + result.m_real[i] = 1.0f / std::sqrt(m_real[i]); + return result; #endif }