Disable the SSE interpolation routine
This commit is contained in:
parent
bb5ee8ac00
commit
97870c2989
1 changed files with 24 additions and 23 deletions
|
|
@ -722,34 +722,35 @@ void sfz::cumsum<float, true>(absl::Span<const float> input, absl::Span<float> o
|
||||||
template <>
|
template <>
|
||||||
void sfz::sfzInterpolationCast<float, true>(absl::Span<const float> floatJumps, absl::Span<int> jumps, absl::Span<float> leftCoeffs, absl::Span<float> rightCoeffs) noexcept
|
void sfz::sfzInterpolationCast<float, true>(absl::Span<const float> floatJumps, absl::Span<int> jumps, absl::Span<float> leftCoeffs, absl::Span<float> rightCoeffs) noexcept
|
||||||
{
|
{
|
||||||
ASSERT(jumps.size() >= floatJumps.size());
|
sfz::sfzInterpolationCast<float, false>(floatJumps, jumps, leftCoeffs, rightCoeffs);
|
||||||
ASSERT(jumps.size() == leftCoeffs.size());
|
// ASSERT(jumps.size() >= floatJumps.size());
|
||||||
ASSERT(jumps.size() == rightCoeffs.size());
|
// ASSERT(jumps.size() == leftCoeffs.size());
|
||||||
|
// ASSERT(jumps.size() == rightCoeffs.size());
|
||||||
|
|
||||||
auto floatJump = floatJumps.data();
|
// auto floatJump = floatJumps.data();
|
||||||
auto jump = jumps.data();
|
// auto jump = jumps.data();
|
||||||
auto leftCoeff = leftCoeffs.data();
|
// auto leftCoeff = leftCoeffs.data();
|
||||||
auto rightCoeff = rightCoeffs.data();
|
// auto rightCoeff = rightCoeffs.data();
|
||||||
const auto sentinel = floatJump + min(floatJumps.size(), jumps.size(), leftCoeffs.size(), rightCoeffs.size());
|
// const auto sentinel = floatJump + min(floatJumps.size(), jumps.size(), leftCoeffs.size(), rightCoeffs.size());
|
||||||
const auto lastAligned = prevAligned(sentinel);
|
// const auto lastAligned = prevAligned(sentinel);
|
||||||
|
|
||||||
while (unaligned(floatJump, reinterpret_cast<float*>(jump), leftCoeff, rightCoeff) && floatJump < lastAligned)
|
// while (unaligned(floatJump, reinterpret_cast<float*>(jump), leftCoeff, rightCoeff) && floatJump < lastAligned)
|
||||||
_internals::snippetSFZInterpolationCast(floatJump, jump, leftCoeff, rightCoeff);
|
// _internals::snippetSFZInterpolationCast(floatJump, jump, leftCoeff, rightCoeff);
|
||||||
|
|
||||||
while (floatJump < lastAligned) {
|
// while (floatJump < lastAligned) {
|
||||||
auto mmFloatJumps = _mm_load_ps(floatJump);
|
// auto mmFloatJumps = _mm_load_ps(floatJump);
|
||||||
auto mmIndices = _mm_cvtps_epi32(_mm_sub_ps(mmFloatJumps, _mm_set_ps1(0.4999999552965164184570312f)));
|
// auto mmIndices = _mm_cvtps_epi32(_mm_sub_ps(mmFloatJumps, _mm_set_ps1(0.4999999552965164184570312f)));
|
||||||
_mm_store_si128(reinterpret_cast<__m128i*>(jump), mmIndices);
|
// _mm_store_si128(reinterpret_cast<__m128i*>(jump), mmIndices);
|
||||||
|
|
||||||
auto mmRight = _mm_sub_ps(mmFloatJumps, _mm_cvtepi32_ps(mmIndices));
|
// auto mmRight = _mm_sub_ps(mmFloatJumps, _mm_cvtepi32_ps(mmIndices));
|
||||||
auto mmLeft = _mm_sub_ps(_mm_set_ps1(1.0f), mmRight);
|
// auto mmLeft = _mm_sub_ps(_mm_set_ps1(1.0f), mmRight);
|
||||||
_mm_store_ps(leftCoeff, mmLeft);
|
// _mm_store_ps(leftCoeff, mmLeft);
|
||||||
_mm_store_ps(rightCoeff, mmRight);
|
// _mm_store_ps(rightCoeff, mmRight);
|
||||||
incrementAll<TypeAlignment>(floatJump, jump, leftCoeff, rightCoeff);
|
// incrementAll<TypeAlignment>(floatJump, jump, leftCoeff, rightCoeff);
|
||||||
}
|
// }
|
||||||
|
|
||||||
while(floatJump < sentinel)
|
// while(floatJump < sentinel)
|
||||||
_internals::snippetSFZInterpolationCast(floatJump, jump, leftCoeff, rightCoeff);
|
// _internals::snippetSFZInterpolationCast(floatJump, jump, leftCoeff, rightCoeff);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue