#if defined(__GNUC__)
-inline Square lsb(Bitboard b) { return Square(__builtin_ctzll(b)); }
-inline Square msb(Bitboard b) { return Square(63 - __builtin_clzll(b)); }
+inline Square lsb(Bitboard b) {
+ assert(b);
+ return Square(__builtin_ctzll(b));
+}
+
+inline Square msb(Bitboard b) {
+ assert(b);
+ return Square(63 - __builtin_clzll(b));
+}
#elif defined(_WIN64) && defined(_MSC_VER)
inline Square lsb(Bitboard b) {
+ assert(b);
unsigned long idx;
_BitScanForward64(&idx, b);
return (Square) idx;
}
inline Square msb(Bitboard b) {
+ assert(b);
unsigned long idx;
_BitScanReverse64(&idx, b);
return (Square) idx;