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 <>
|
||||
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());
|
||||
ASSERT(jumps.size() == leftCoeffs.size());
|
||||
ASSERT(jumps.size() == rightCoeffs.size());
|
||||
sfz::sfzInterpolationCast<float, false>(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<float*>(jump), leftCoeff, rightCoeff) && floatJump < lastAligned)
|
||||
_internals::snippetSFZInterpolationCast(floatJump, jump, leftCoeff, rightCoeff);
|
||||
// while (unaligned(floatJump, reinterpret_cast<float*>(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<TypeAlignment>(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<TypeAlignment>(floatJump, jump, leftCoeff, rightCoeff);
|
||||
// }
|
||||
|
||||
while(floatJump < sentinel)
|
||||
_internals::snippetSFZInterpolationCast(floatJump, jump, leftCoeff, rightCoeff);
|
||||
// while(floatJump < sentinel)
|
||||
// _internals::snippetSFZInterpolationCast(floatJump, jump, leftCoeff, rightCoeff);
|
||||
}
|
||||
|
||||
template <>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue