2017-04-26 23:54:08 +08:00
|
|
|
#ifdef _MSC_VER
|
|
|
|
# include <nmmintrin.h>
|
|
|
|
# if defined(_M_X64)
|
|
|
|
# define CV_POPCNT_U64 _mm_popcnt_u64
|
|
|
|
# endif
|
|
|
|
# define CV_POPCNT_U32 _mm_popcnt_u32
|
2018-04-24 17:40:25 +08:00
|
|
|
#elif defined(__POPCNT__)
|
2017-04-26 23:54:08 +08:00
|
|
|
# include <popcntintrin.h>
|
|
|
|
# if defined(__x86_64__)
|
|
|
|
# define CV_POPCNT_U64 __builtin_popcountll
|
|
|
|
# endif
|
|
|
|
# define CV_POPCNT_U32 __builtin_popcount
|
2018-04-24 17:40:25 +08:00
|
|
|
#else
|
|
|
|
# error "__POPCNT__ is not defined by compiler"
|
2016-09-07 23:02:36 +08:00
|
|
|
#endif
|
2017-04-26 23:54:08 +08:00
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
#ifdef CV_POPCNT_U64
|
|
|
|
int i = CV_POPCNT_U64(1);
|
|
|
|
#endif
|
|
|
|
int j = CV_POPCNT_U32(1);
|
2016-09-07 23:02:36 +08:00
|
|
|
return 0;
|
|
|
|
}
|