diff --git a/cmake/checks/cpu_popcnt.cpp b/cmake/checks/cpu_popcnt.cpp index f55c9f3c54..16e5575108 100644 --- a/cmake/checks/cpu_popcnt.cpp +++ b/cmake/checks/cpu_popcnt.cpp @@ -1,8 +1,22 @@ -#include -#ifndef _MSC_VER -#include +#ifdef _MSC_VER +# include +# if defined(_M_X64) +# define CV_POPCNT_U64 _mm_popcnt_u64 +# endif +# define CV_POPCNT_U32 _mm_popcnt_u32 +#else +# include +# if defined(__x86_64__) +# define CV_POPCNT_U64 __builtin_popcountll +# endif +# define CV_POPCNT_U32 __builtin_popcount #endif -int main() { - int i = _mm_popcnt_u64(1); + +int main() +{ +#ifdef CV_POPCNT_U64 + int i = CV_POPCNT_U64(1); +#endif + int j = CV_POPCNT_U32(1); return 0; } diff --git a/cmake/checks/cpu_sse42.cpp b/cmake/checks/cpu_sse42.cpp index 56f56658ab..2a1ce992df 100644 --- a/cmake/checks/cpu_sse42.cpp +++ b/cmake/checks/cpu_sse42.cpp @@ -1,5 +1,7 @@ #include -int main() { - int i = _mm_popcnt_u64(1); + +int main() +{ + unsigned int res = _mm_crc32_u8(1, 2); return 0; }