mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-22 01:56:58 +08:00
Don't use _pext_u64() directly
This intrinsic to call BMI2 PEXT instruction is defined in immintrin.h. This header should be included only when USE_PEXT is defined, otherwise we define _pext_u64 as 0 forcing a nop. But under some mingw platforms, even if we don't include the header, immintrin.h gets included anyhow through an include chain that starts with STL <algorithm> header. So we end up both defining _pext_u64 function and at the same time defining _pext_u64 as 0 leading to a compile error. The correct solution is of not using _pext_u64 directly. This patch fixes a compile error with some mingw64 package when compiling with x86-64. No functional change.
This commit is contained in:
@@ -238,7 +238,7 @@ FORCE_INLINE unsigned magic_index(Square s, Bitboard occupied) {
|
||||
unsigned* const Shifts = Pt == ROOK ? RookShifts : BishopShifts;
|
||||
|
||||
if (HasPext)
|
||||
return unsigned(_pext_u64(occupied, Masks[s]));
|
||||
return unsigned(pext(occupied, Masks[s]));
|
||||
|
||||
if (Is64Bit)
|
||||
return unsigned(((occupied & Masks[s]) * Magics[s]) >> Shifts[s]);
|
||||
|
||||
Reference in New Issue
Block a user