X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitboard.h;h=06adbfe3850512902633fe3b514dff664863bb90;hp=2c51b073de3042ec1e7f1cf455b9d247ac927cd9;hb=e215a88cddd16e09cd77618bd3b793957dea7dc1;hpb=9a1d5f0f1d8a12a85b198688d4f1d636a146eb7a diff --git a/src/bitboard.h b/src/bitboard.h index 2c51b073..06adbfe3 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -63,6 +63,7 @@ extern Bitboard PassedPawnMask[COLOR_NB][SQUARE_NB]; extern Bitboard AttackSpanMask[COLOR_NB][SQUARE_NB]; extern Bitboard PseudoAttacks[PIECE_TYPE_NB][SQUARE_NB]; +const Bitboard BlackSquares = 0xAA55AA55AA55AA55ULL; /// Overloads of bitwise operators between a Bitboard and a Square for testing /// whether a given bit is set in a bitboard, and for setting and clearing bits. @@ -95,6 +96,18 @@ inline bool more_than_one(Bitboard b) { } +/// shift_bb() moves bitboard one step along direction Delta. Mainly for pawns. + +template +inline Bitboard shift_bb(Bitboard b) { + + return Delta == DELTA_N ? b << 8 : Delta == DELTA_S ? b >> 8 + : Delta == DELTA_NE ? (b & ~FileHBB) << 9 : Delta == DELTA_SE ? (b & ~FileHBB) >> 7 + : Delta == DELTA_NW ? (b & ~FileABB) << 7 : Delta == DELTA_SW ? (b & ~FileABB) >> 9 + : 0; +} + + /// rank_bb() and file_bb() take a file or a square as input and return /// a bitboard representing all squares on the given file or rank. @@ -199,8 +212,7 @@ inline bool squares_aligned(Square s1, Square s2, Square s3) { /// the same color of the given square. inline Bitboard same_color_squares(Square s) { - return Bitboard(0xAA55AA55AA55AA55ULL) & s ? 0xAA55AA55AA55AA55ULL - : ~0xAA55AA55AA55AA55ULL; + return BlackSquares & s ? BlackSquares : ~BlackSquares; }