[opus] [PATCH] float_cast: Fix MSVC ARM build

Jean-Marc Valin jmvalin at jmvalin.ca
Thu Nov 6 13:44:07 PST 2014


Is there any consensus on what's the correct fix here?

	Jean-Marc

On 06/11/14 04:26 PM, Cameron Gutman wrote:
> Yeah that's the one.
> 
> On Nov 6, 2014 1:23 PM, "Tristan Matthews" <le.businessman at gmail.com
> <mailto:le.businessman at gmail.com>> wrote:
> 
>     On Thu, Nov 6, 2014 at 4:20 PM, Cameron Gutman
>     <aicommander at gmail.com <mailto:aicommander at gmail.com>> wrote:
>     > _WIN32, WIN32, WIN64, and _WIN64 are the wrong definitions to be
>     gating this
>     > on in the first place. They aren't at all meant to be x86/x86-64
>     specific.
>     > At best, they're 32-bit/64-bit specific, but that's not the
>     intended use in
>     > the code. The correct definitions are _M_IX86 and _M_X64, as
>     Martin said.
>     >
>     > I sent a patch to this ML that fixed these a few months ago but it was
>     > forgotten/ignored. Hopefully the issue gets addressed this time.
> 
>     This one, I gather?
>     http://lists.xiph.org/pipermail/opus/attachments/20140406/e19d33cd/attachment.obj
> 
>     Best,
>     Tristan
> 
>     >
>     > Cameron
>     >
>     > On Nov 6, 2014 9:53 AM, "Martin Storsjö" <martin at martin.st
>     <mailto:martin at martin.st>> wrote:
>     >>
>     >> On Thu, 6 Nov 2014, Hugo Beauzée-Luyssen wrote:
>     >>
>     >>> ---
>     >>> celt/float_cast.h | 4 ++--
>     >>> 1 file changed, 2 insertions(+), 2 deletions(-)
>     >>>
>     >>> diff --git a/celt/float_cast.h b/celt/float_cast.h
>     >>> index ede6574..4892e2c 100644
>     >>> --- a/celt/float_cast.h
>     >>> +++ b/celt/float_cast.h
>     >>> @@ -90,14 +90,14 @@
>     >>> #include <math.h>
>     >>> #define float2int(x) lrint(x)
>     >>>
>     >>> -#elif (defined(_MSC_VER) && _MSC_VER >= 1400) && (defined
>     (WIN64) ||
>     >>> defined (_WIN64))
>     >>> +#elif (defined(_MSC_VER) && _MSC_VER >= 1400) && (defined
>     (WIN64) ||
>     >>> defined (_WIN64)) && !defined(_M_ARM)
>     >>>         #include <xmmintrin.h>
>     >>>
>     >>>         __inline long int float2int(float value)
>     >>>         {
>     >>>                 return _mm_cvtss_si32(_mm_load_ss(&value));
>     >>>         }
>     >>> -#elif (defined(_MSC_VER) && _MSC_VER >= 1400) && (defined
>     (WIN32) ||
>     >>> defined (_WIN32))
>     >>> +#elif (defined(_MSC_VER) && _MSC_VER >= 1400) && (defined
>     (WIN32) ||
>     >>> defined (_WIN32)) && !defined(_M_ARM)
>     >>>         #include <math.h>
>     >>>
>     >>>         /*      Win32 doesn't seem to have these functions.
>     >>> --
>     >>> 2.1.1
>     >>
>     >>
>     >> As MSVC might support other architectures than arm and x86 (they did
>     >> support mips, alpha and itanium at some points in time), I think
>     it might be
>     >> better to use this instead:
>     >>
>     >> ... && (defined(_M_IX86) || defined(_M_X64))
>     >>
>     >> // Martin
>     >> _______________________________________________
>     >> opus mailing list
>     >> opus at xiph.org <mailto:opus at xiph.org>
>     >> http://lists.xiph.org/mailman/listinfo/opus
>     >>
>     >
>     > _______________________________________________
>     > opus mailing list
>     > opus at xiph.org <mailto:opus at xiph.org>
>     > http://lists.xiph.org/mailman/listinfo/opus
>     >
> 
> 
> 
> _______________________________________________
> opus mailing list
> opus at xiph.org
> http://lists.xiph.org/mailman/listinfo/opus
> 


More information about the opus mailing list