Enable __SSE__ / __SSE2__ with Visual Studio
authorEven Rouault <even.rouault@spatialys.com>
Tue, 20 Jun 2017 16:24:21 +0000 (18:24 +0200)
committerEven Rouault <even.rouault@spatialys.com>
Tue, 20 Jun 2017 16:24:21 +0000 (18:24 +0200)
src/lib/openjp2/opj_includes.h

index 49aa332271ca9351035628d6724f2001abbe5cff..b33e63ceff656c4c56ad8b4bb43deb492397183a 100644 (file)
@@ -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;