From f06cfadef8e2b1ad9008957cc6bc80a27c53f2eb Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 20 Jun 2017 18:24:21 +0200 Subject: [PATCH] Enable __SSE__ / __SSE2__ with Visual Studio --- src/lib/openjp2/opj_includes.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/lib/openjp2/opj_includes.h b/src/lib/openjp2/opj_includes.h index 49aa3322..b33e63ce 100644 --- a/src/lib/openjp2/opj_includes.h +++ b/src/lib/openjp2/opj_includes.h @@ -187,6 +187,32 @@ static INLINE long opj_lrintf(float f) # pragma intrinsic(__emul) #endif +/* Apparently Visual Studio doesn't define __SSE__ / __SSE2__ macros */ +#if defined(_M_X64) +/* Intel 64bit support SSE and SSE2 */ +# ifndef __SSE__ +# define __SSE__ 1 +# endif +# ifndef __SSE2__ +# define __SSE2__ 1 +# endif +#endif + +/* For x86, test the value of the _M_IX86_FP macro. */ +/* See https://msdn.microsoft.com/en-us/library/b0084kay.aspx */ +#if defined(_M_IX86_FP) +# if _M_IX86_FP >= 1 +# ifndef __SSE__ +# define __SSE__ 1 +# endif +# endif +# if _M_IX86_FP >= 2 +# ifndef __SSE2__ +# define __SSE2__ 1 +# endif +# endif +#endif + /* Type to use for bit-fields in internal headers */ typedef unsigned int OPJ_BITFIELD;