diff --git a/include/detail/ct/preprocessor_impl.hpp b/include/detail/ct/preprocessor_impl.hpp index f591c4f0a1a19b3990e52931d3830fd0adaf62ac..aa2b9897a6b32bf23c484eaa6fad5557749ca2bb 100644 --- a/include/detail/ct/preprocessor_impl.hpp +++ b/include/detail/ct/preprocessor_impl.hpp @@ -1,30 +1,32 @@ #ifndef COMPASS_CT_PREPROCESSOR_IMPL_H_ #define COMPASS_CT_PREPROCESSOR_IMPL_H_ -#ifndef WIN32 - #if defined __SSE2__ && defined __SSE2_MATH__ - #define COMPASS_HAS_SSE2 - #endif -#else - #if _M_IX86_FP >= 2 - #define COMPASS_HAS_SSE2 - #endif -#endif + #ifndef WIN32 - #if defined __SSE3__ && defined __SSSE3__ - #define COMPASS_HAS_SSE3 - #endif - #if defined __SSE4_2__ && defined __SSE4_1__ - #define COMPASS_HAS_SSE4 - #endif +#if defined(__SSE2__) || defined(__SSE2_MATH__) // && __SSE2__ != 0 && __SSE2_MATH__ != 0 + #define COMPASS_CT_HAS_SSE2 1 + #endif + +#if defined(__SSE3__) && defined(__SSSE3__) + #define COMPASS_CT_HAS_SSE3 1 + #endif + +#if defined(__SSE4_2__) && defined(__SSE4_1__) + #define COMPASS_CT_HAS_SSE4 1 + #endif + #else //TODO: try to warn users on Windows that we are enabling SSE3 + SSE4 upon assumption here - #define COMPASS_HAS_SSE3 - #define COMPASS_HAS_SSE4 + #if _M_IX86_FP >= 2 + #define COMPASS_CT_HAS_SSE2 1 + #define COMPASS_CT_HAS_SSE3 1 + #define COMPASS_CT_HAS_SSE4 1 + #endif #endif + #include "detail/tags.hpp" namespace compass { diff --git a/include/detail/definitions.hpp b/include/detail/definitions.hpp index 56ba956dcde88593c2f9959b9a4fe824c3c9c51a..a0719f3c3794f3f23ce94d8e87198ba828ee70a8 100644 --- a/include/detail/definitions.hpp +++ b/include/detail/definitions.hpp @@ -24,6 +24,4 @@ namespace compass { }; -//#include "ct/preprocessor_impl.hpp" - #endif /* DEFINITIONS_H */ diff --git a/include/detail/dispatch.hpp b/include/detail/dispatch.hpp index 51a74914397a76301d5392b599176ce45b05a6e4..5a7bc81deb89d539df80a7ffeb5c6067a37371e6 100644 --- a/include/detail/dispatch.hpp +++ b/include/detail/dispatch.hpp @@ -8,6 +8,7 @@ #include "detail/definitions.hpp" #ifdef COMPASS_CT_ARCH_X86 +#include "ct/preprocessor_impl.hpp" #include "rt/x86_impl.hpp" #include "rt/x86_sizes.hpp" #endif