This patch simply flips on the _USE_SSE/_USE_SSE2 automatically if the visual
[speexdsp.git] / win32 / config.h
index 673f9dc..6366d7b 100644 (file)
@@ -1,3 +1,31 @@
+// Microsoft version of 'inline'\r
 #define inline __inline\r
-#define restrict\r
-#include "misc.h"
\ No newline at end of file
+\r
+// In Visual Studio, _M_IX86_FP=1 means /arch:SSE was used, likewise\r
+// _M_IX86_FP=2 means /arch:SSE2 was used.\r
+// Also, enable both _USE_SSE and _USE_SSE2 if we're compiling for x86-64\r
+#if _M_IX86_FP >= 1 || defined(_M_X64)\r
+#define _USE_SSE\r
+#endif\r
+\r
+#if _M_IX86_FP >= 2 || defined(_M_X64)\r
+#define _USE_SSE2\r
+#endif\r
+\r
+// Visual Studio support alloca(), but it always align variables to 16-bit\r
+// boundary, while SSE need 128-bit alignment. So we disable alloca() when\r
+// SSE is enabled.\r
+#ifndef _USE_SSE\r
+#  define USE_ALLOCA\r
+#endif\r
+\r
+/* Default to floating point */\r
+#ifndef FIXED_POINT\r
+#  define FLOATING_POINT\r
+#  define USE_SMALLFT\r
+#else\r
+#  define USE_KISS_FFT\r
+#endif\r
+\r
+/* We don't support visibility on Win32 */\r
+#define EXPORT\r