/// -DNO_PREFETCH | Disable use of prefetch asm-instruction. You may need this to
/// | run on some very old machines.
///
+/// -DNO_SPINLOCK | Use mutex instead of spinlocks. This is much slower, so you
+/// | really don't want to do this in general case.
+///
/// -DUSE_POPCNT | Add runtime support for use of popcnt asm-instruction. Works
/// | only in 64-bit mode and requires hardware with popcnt support.
+///
+/// -DUSE_PEXT | Add runtime support for use of pext asm-instruction. Works
+/// | only in 64-bit mode and requires hardware with pext support.
#include <cassert>
#include <cctype>
#if defined(USE_PEXT)
# include <immintrin.h> // Header for _pext_u64() intrinsic
+# define pext(b, m) _pext_u64(b, m)
#else
-# define _pext_u64(b, m) (0)
+# define pext(b, m) (0)
#endif
#ifdef _MSC_VER
}
inline PieceType promotion_type(Move m) {
- return PieceType(((m >> 12) & 3) + 2);
+ return PieceType(((m >> 12) & 3) + KNIGHT);
}
inline Move make_move(Square from, Square to) {