X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitboard.h;h=4aecf418a67b85db7510086cb39be5d47a28f2d1;hp=aa4e17119c1b5f7e81c56631641e8916c369d2d5;hb=ed72a1e9ba37a9fa2674da8f46bb0597a1721c2d;hpb=f54c44e6be0deaadefcb428af8d288e75955aa20 diff --git a/src/bitboard.h b/src/bitboard.h index aa4e1711..4aecf418 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -200,14 +200,6 @@ inline Bitboard passed_pawn_mask(Color c, Square s) { } -/// squares_of_color() returns a bitboard representing all the squares of the -/// same color of the given one. - -inline Bitboard squares_of_color(Square s) { - return DarkSquares & s ? DarkSquares : ~DarkSquares; -} - - /// aligned() returns true if the squares s1, s2 and s3 are aligned either on a /// straight or on a diagonal line. @@ -231,7 +223,7 @@ template<> inline int distance(Square x, Square y) { return distance(rank_ /// piece of type Pt (bishop or rook) placed on 's'. The helper magic_index() /// looks up the index using the 'magic bitboards' approach. template -FORCE_INLINE unsigned magic_index(Square s, Bitboard occupied) { +inline unsigned magic_index(Square s, Bitboard occupied) { Bitboard* const Masks = Pt == ROOK ? RookMasks : BishopMasks; Bitboard* const Magics = Pt == ROOK ? RookMagics : BishopMagics; @@ -271,13 +263,13 @@ inline Bitboard attacks_bb(Piece pc, Square s, Bitboard occupied) { # if defined(_MSC_VER) && !defined(__INTEL_COMPILER) -FORCE_INLINE Square lsb(Bitboard b) { +inline Square lsb(Bitboard b) { unsigned long idx; _BitScanForward64(&idx, b); return (Square) idx; } -FORCE_INLINE Square msb(Bitboard b) { +inline Square msb(Bitboard b) { unsigned long idx; _BitScanReverse64(&idx, b); return (Square) idx; @@ -285,28 +277,28 @@ FORCE_INLINE Square msb(Bitboard b) { # elif defined(__arm__) -FORCE_INLINE int lsb32(uint32_t v) { +inline int lsb32(uint32_t v) { __asm__("rbit %0, %1" : "=r"(v) : "r"(v)); return __builtin_clz(v); } -FORCE_INLINE Square msb(Bitboard b) { +inline Square msb(Bitboard b) { return (Square) (63 - __builtin_clzll(b)); } -FORCE_INLINE Square lsb(Bitboard b) { +inline Square lsb(Bitboard b) { return (Square) (uint32_t(b) ? lsb32(uint32_t(b)) : 32 + lsb32(uint32_t(b >> 32))); } # else // Assumed gcc or compatible compiler -FORCE_INLINE Square lsb(Bitboard b) { // Assembly code by Heinz van Saanen +inline Square lsb(Bitboard b) { // Assembly code by Heinz van Saanen Bitboard idx; __asm__("bsfq %1, %0": "=r"(idx): "rm"(b) ); return (Square) idx; } -FORCE_INLINE Square msb(Bitboard b) { +inline Square msb(Bitboard b) { Bitboard idx; __asm__("bsrq %1, %0": "=r"(idx): "rm"(b) ); return (Square) idx; @@ -324,7 +316,7 @@ Square msb(Bitboard b); /// pop_lsb() finds and clears the least significant bit in a non-zero bitboard -FORCE_INLINE Square pop_lsb(Bitboard* b) { +inline Square pop_lsb(Bitboard* b) { const Square s = lsb(*b); *b &= *b - 1; return s;