#pragma warning(disable: 4800) // Forcing value to bool 'true' or 'false'
#pragma warning(disable: 4127) // Conditional expression is constant
-typedef __int8 int8_t;
-typedef unsigned __int8 uint8_t;
-typedef __int16 int16;
+typedef signed __int8 int8_t;
+typedef unsigned __int8 uint8_t;
+typedef signed __int16 int16_t;
typedef unsigned __int16 uint16_t;
-typedef __int32 int32_t;
+typedef signed __int32 int32_t;
typedef unsigned __int32 uint32_t;
-typedef __int64 int64_t;
+typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
-typedef __int16 int16_t;
-typedef __int64 int64_t;
-
#endif // !defined(_MSC_VER)
// Hash keys
#define USE_BSFQ
#endif
+// Intel header for _mm_popcnt_u64() intrinsic
+#if defined(USE_POPCNT) && defined(_MSC_VER) && defined(__INTEL_COMPILER)
+#include <nmmintrin.h>
+#endif
+
// Cache line alignment specification
#if defined(_MSC_VER) || defined(__INTEL_COMPILER)
#define CACHE_LINE_ALIGNMENT __declspec(align(64))