From: erbsenzaehler Date: Sun, 1 May 2016 08:57:50 +0000 (+0200) Subject: Use popcount intrinsic with Interl compiler X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=2dd24dc4e618dc7b83799890fe7e84b09b6456b4;hp=8f934dff9a8644c38aaa31fc0ae90c0fab30934a Use popcount intrinsic with Interl compiler It seems that icc used our fallback version of popcount. Now use intrinsics. icc version 16.0.2 (gcc version 5.3.0 compatibility) bmi2 compile uname -r 4.5.1-1-ARCH 20xbench gives a nice speedup ./stockfish-icc-master 2161515 +- 34462 ./stockfish-icc-sse42 2260857 +- 50349 --- diff --git a/src/bitboard.h b/src/bitboard.h index a704edbe..c4fc26e1 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -268,7 +268,7 @@ inline int popcount(Bitboard b) { union { Bitboard bb; uint16_t u[4]; } v = { b }; return PopCnt16[v.u[0]] + PopCnt16[v.u[1]] + PopCnt16[v.u[2]] + PopCnt16[v.u[3]]; -#elif defined(_MSC_VER) && defined(__INTEL_COMPILER) +#elif defined(_MSC_VER) || defined(__INTEL_COMPILER) return _mm_popcnt_u64(b); diff --git a/src/types.h b/src/types.h index 6f62c776..e45d2674 100644 --- a/src/types.h +++ b/src/types.h @@ -64,7 +64,7 @@ # define IS_64BIT #endif -#if defined(USE_POPCNT) && defined(__INTEL_COMPILER) && defined(_MSC_VER) +#if defined(USE_POPCNT) && (defined(__INTEL_COMPILER) || defined(_MSC_VER)) # include // Intel header for _mm_popcnt_u64() intrinsic #endif