X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitboard.h;h=c0af52269afe5997bb7f73c526c77f3e4322d55e;hp=0064fb26d83bf42decc3db7d9eb3102b47e4ce8a;hb=989833205fb63de094c1f28e1c5f803bc8a917e4;hpb=5d79af9e0d466572217dc47f5c307f6fd382a646 diff --git a/src/bitboard.h b/src/bitboard.h index 0064fb26..c0af5226 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -40,7 +40,6 @@ const Bitboard EmptyBoardBB = 0ULL; const Bitboard WhiteSquaresBB = 0x55AA55AA55AA55AAULL; const Bitboard BlackSquaresBB = 0xAA55AA55AA55AA55ULL; -const Bitboard SquaresByColorBB[2] = { BlackSquaresBB, WhiteSquaresBB }; const Bitboard FileABB = 0x0101010101010101ULL; const Bitboard FileBBB = 0x0202020202020202ULL; @@ -51,22 +50,6 @@ const Bitboard FileFBB = 0x2020202020202020ULL; const Bitboard FileGBB = 0x4040404040404040ULL; const Bitboard FileHBB = 0x8080808080808080ULL; -const Bitboard FileBB[8] = { - FileABB, FileBBB, FileCBB, FileDBB, FileEBB, FileFBB, FileGBB, FileHBB -}; - -const Bitboard NeighboringFilesBB[8] = { - FileBBB, FileABB|FileCBB, FileBBB|FileDBB, FileCBB|FileEBB, - FileDBB|FileFBB, FileEBB|FileGBB, FileFBB|FileHBB, FileGBB -}; - -const Bitboard ThisAndNeighboringFilesBB[8] = { - FileABB|FileBBB, FileABB|FileBBB|FileCBB, - FileBBB|FileCBB|FileDBB, FileCBB|FileDBB|FileEBB, - FileDBB|FileEBB|FileFBB, FileEBB|FileFBB|FileGBB, - FileFBB|FileGBB|FileHBB, FileGBB|FileHBB -}; - const Bitboard Rank1BB = 0xFFULL; const Bitboard Rank2BB = 0xFF00ULL; const Bitboard Rank3BB = 0xFF0000ULL; @@ -76,35 +59,13 @@ const Bitboard Rank6BB = 0xFF0000000000ULL; const Bitboard Rank7BB = 0xFF000000000000ULL; const Bitboard Rank8BB = 0xFF00000000000000ULL; -const Bitboard RankBB[8] = { - Rank1BB, Rank2BB, Rank3BB, Rank4BB, Rank5BB, Rank6BB, Rank7BB, Rank8BB -}; - -const Bitboard RelativeRankBB[2][8] = { - { Rank1BB, Rank2BB, Rank3BB, Rank4BB, Rank5BB, Rank6BB, Rank7BB, Rank8BB }, - { Rank8BB, Rank7BB, Rank6BB, Rank5BB, Rank4BB, Rank3BB, Rank2BB, Rank1BB } -}; - -const Bitboard InFrontBB[2][8] = { - { Rank2BB | Rank3BB | Rank4BB | Rank5BB | Rank6BB | Rank7BB | Rank8BB, - Rank3BB | Rank4BB | Rank5BB | Rank6BB | Rank7BB | Rank8BB, - Rank4BB | Rank5BB | Rank6BB | Rank7BB | Rank8BB, - Rank5BB | Rank6BB | Rank7BB | Rank8BB, - Rank6BB | Rank7BB | Rank8BB, - Rank7BB | Rank8BB, - Rank8BB, - EmptyBoardBB - }, - { EmptyBoardBB, - Rank1BB, - Rank2BB | Rank1BB, - Rank3BB | Rank2BB | Rank1BB, - Rank4BB | Rank3BB | Rank2BB | Rank1BB, - Rank5BB | Rank4BB | Rank3BB | Rank2BB | Rank1BB, - Rank6BB | Rank5BB | Rank4BB | Rank3BB | Rank2BB | Rank1BB, - Rank7BB | Rank6BB | Rank5BB | Rank4BB | Rank3BB | Rank2BB | Rank1BB - } -}; +extern const Bitboard SquaresByColorBB[2]; +extern const Bitboard FileBB[8]; +extern const Bitboard NeighboringFilesBB[8]; +extern const Bitboard ThisAndNeighboringFilesBB[8]; +extern const Bitboard RankBB[8]; +extern const Bitboard RelativeRankBB[2][8]; +extern const Bitboard InFrontBB[2][8]; extern Bitboard SetMaskBB[65]; extern Bitboard ClearMaskBB[65]; @@ -132,6 +93,8 @@ extern Bitboard BishopPseudoAttacks[64]; extern Bitboard RookPseudoAttacks[64]; extern Bitboard QueenPseudoAttacks[64]; +extern uint8_t BitCount8Bit[256]; + //// //// Inline functions @@ -360,13 +323,13 @@ inline Bitboard isolated_pawn_mask(Square s) { #if defined(USE_BSFQ) // Assembly code by Heinz van Saanen -inline Square __attribute__((always_inline)) first_1(Bitboard b) { +inline Square first_1(Bitboard b) { Bitboard dummy; __asm__("bsfq %1, %0": "=r"(dummy): "rm"(b) ); return (Square)(dummy); } -inline Square __attribute__((always_inline)) pop_1st_bit(Bitboard* b) { +inline Square pop_1st_bit(Bitboard* b) { const Square s = first_1(*b); *b &= ~(1ULL<