Skip to content

Commit

Permalink
Use popcount intrinsic with Interl compiler
Browse files Browse the repository at this point in the history
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
  • Loading branch information
erbsenzaehler authored and mcostalba committed May 1, 2016
1 parent 8f934df commit 2dd24dc
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/bitboard.h
Expand Up @@ -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);

Expand Down
2 changes: 1 addition & 1 deletion src/types.h
Expand Up @@ -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 <nmmintrin.h> // Intel header for _mm_popcnt_u64() intrinsic
#endif

Expand Down

0 comments on commit 2dd24dc

Please sign in to comment.