summaryrefslogtreecommitdiffhomepage
path: root/compat/arch.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'compat/arch.hpp')
-rw-r--r--compat/arch.hpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/compat/arch.hpp b/compat/arch.hpp
new file mode 100644
index 00000000..0b58b65a
--- /dev/null
+++ b/compat/arch.hpp
@@ -0,0 +1,45 @@
+#pragma once
+
+#if defined _MSC_VER
+# ifdef __clang__
+# pragma clang diagnostic push
+# pragma clang diagnostic ignored "-Wreserved-id-macro"
+# pragma clang diagnostic ignored "-Wunused-macros"
+# endif
+
+# if defined _M_AMD64
+# undef __x86_64__
+# define __x86_64__ 1
+# elif defined _M_IX86
+# undef __i386__
+# define __i386__ 1
+# endif
+
+# if defined __AVX__ || defined __x86_64__ || \
+ defined _M_IX86 && _M_IX86_FP >= 2
+# undef __SSE__
+# undef __SSE2__
+# undef __SSE3__
+# define __SSE__ 1
+# define __SSE2__ 1
+# define __SSE3__ 1
+# endif
+
+# ifdef __clang__
+# pragma clang diagnostic pop
+# endif
+#endif
+
+#if defined __SSE3__
+# define FLOORMAT_ARCH_DENORM_DAZ
+# include <pmmintrin.h>
+#elif defined __SSE2__
+# define FLOORMAT_ARCH_DENORM_FTZ
+# include <emmintrin.h>
+#endif
+
+#if defined __SSE2__
+# define FLOORMAT_ARCH_FPU_MASK
+# include <xmmintrin.h>
+#endif
+