[opus] Prefer SSE and ASM implementation of float2int before lrintf for MSVC patch

Marcus Asteborg xnorpx at outlook.com
Sun Jun 14 06:00:28 UTC 2020

This commit


Enabled HAVE_LRINTF defined in CMake builds.

As later versions of visual studio have LRINTF it got enabled by default due to precedence over SSE in MSVC. The use of lrintf is a lot slower which can easily be seen in the tests

>From test result Windows X64 (similar results on X86):
LRINTF 4/4 Test #4: test_opus_encode ................. Passed 225.96 sec
SSE 4/4 Test #4: test_opus_encode ................. Passed 56.30 sec

The patch simply moves MSVC SSE and ASM up before HAVE_LRINT.
Change the types to opus types and verified that mm_load compiled to same
code as mm_set in later versions of MSVC x64.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xiph.org/pipermail/opus/attachments/20200614/47918191/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Prefer-SSE-and-ASM-implementation-of-float2int-befor.patch
Type: application/octet-stream
Size: 2829 bytes
Desc: 0001-Prefer-SSE-and-ASM-implementation-of-float2int-befor.patch
URL: <http://lists.xiph.org/pipermail/opus/attachments/20200614/47918191/attachment.obj>

More information about the opus mailing list