From 97870c29898fe1a646809d12fd96a0019315ac79 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Mon, 27 Jan 2020 09:43:30 +0100 Subject: [PATCH] Disable the SSE interpolation routine --- src/sfizz/SIMDSSE.cpp | 47 ++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/src/sfizz/SIMDSSE.cpp b/src/sfizz/SIMDSSE.cpp index 2120d52e..0f4399c4 100644 --- a/src/sfizz/SIMDSSE.cpp +++ b/src/sfizz/SIMDSSE.cpp @@ -722,34 +722,35 @@ void sfz::cumsum(absl::Span input, absl::Span o template <> void sfz::sfzInterpolationCast(absl::Span floatJumps, absl::Span jumps, absl::Span leftCoeffs, absl::Span rightCoeffs) noexcept { - ASSERT(jumps.size() >= floatJumps.size()); - ASSERT(jumps.size() == leftCoeffs.size()); - ASSERT(jumps.size() == rightCoeffs.size()); + sfz::sfzInterpolationCast(floatJumps, jumps, leftCoeffs, rightCoeffs); + // ASSERT(jumps.size() >= floatJumps.size()); + // ASSERT(jumps.size() == leftCoeffs.size()); + // ASSERT(jumps.size() == rightCoeffs.size()); - auto floatJump = floatJumps.data(); - auto jump = jumps.data(); - auto leftCoeff = leftCoeffs.data(); - auto rightCoeff = rightCoeffs.data(); - const auto sentinel = floatJump + min(floatJumps.size(), jumps.size(), leftCoeffs.size(), rightCoeffs.size()); - const auto lastAligned = prevAligned(sentinel); + // auto floatJump = floatJumps.data(); + // auto jump = jumps.data(); + // auto leftCoeff = leftCoeffs.data(); + // auto rightCoeff = rightCoeffs.data(); + // const auto sentinel = floatJump + min(floatJumps.size(), jumps.size(), leftCoeffs.size(), rightCoeffs.size()); + // const auto lastAligned = prevAligned(sentinel); - while (unaligned(floatJump, reinterpret_cast(jump), leftCoeff, rightCoeff) && floatJump < lastAligned) - _internals::snippetSFZInterpolationCast(floatJump, jump, leftCoeff, rightCoeff); + // while (unaligned(floatJump, reinterpret_cast(jump), leftCoeff, rightCoeff) && floatJump < lastAligned) + // _internals::snippetSFZInterpolationCast(floatJump, jump, leftCoeff, rightCoeff); - while (floatJump < lastAligned) { - auto mmFloatJumps = _mm_load_ps(floatJump); - auto mmIndices = _mm_cvtps_epi32(_mm_sub_ps(mmFloatJumps, _mm_set_ps1(0.4999999552965164184570312f))); - _mm_store_si128(reinterpret_cast<__m128i*>(jump), mmIndices); + // while (floatJump < lastAligned) { + // auto mmFloatJumps = _mm_load_ps(floatJump); + // auto mmIndices = _mm_cvtps_epi32(_mm_sub_ps(mmFloatJumps, _mm_set_ps1(0.4999999552965164184570312f))); + // _mm_store_si128(reinterpret_cast<__m128i*>(jump), mmIndices); - auto mmRight = _mm_sub_ps(mmFloatJumps, _mm_cvtepi32_ps(mmIndices)); - auto mmLeft = _mm_sub_ps(_mm_set_ps1(1.0f), mmRight); - _mm_store_ps(leftCoeff, mmLeft); - _mm_store_ps(rightCoeff, mmRight); - incrementAll(floatJump, jump, leftCoeff, rightCoeff); - } + // auto mmRight = _mm_sub_ps(mmFloatJumps, _mm_cvtepi32_ps(mmIndices)); + // auto mmLeft = _mm_sub_ps(_mm_set_ps1(1.0f), mmRight); + // _mm_store_ps(leftCoeff, mmLeft); + // _mm_store_ps(rightCoeff, mmRight); + // incrementAll(floatJump, jump, leftCoeff, rightCoeff); + // } - while(floatJump < sentinel) - _internals::snippetSFZInterpolationCast(floatJump, jump, leftCoeff, rightCoeff); + // while(floatJump < sentinel) + // _internals::snippetSFZInterpolationCast(floatJump, jump, leftCoeff, rightCoeff); } template <>