X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitboard.cpp;h=063204c5020f7ec2f54a5104ee705a618068fc4b;hp=384831adc8f7061f09797cbeff28d2e166eae574;hb=b5178597bd71c210de9e4245e26153c24fbb2c13;hpb=87379c2929c1d7f3a35aae4ed1115e98fcde388a diff --git a/src/bitboard.cpp b/src/bitboard.cpp index 384831ad..063204c5 100644 --- a/src/bitboard.cpp +++ b/src/bitboard.cpp @@ -226,8 +226,9 @@ Bitboard StepAttackBB[16][64]; Bitboard RayBB[64][8]; Bitboard BetweenBB[64][64]; +Bitboard SquaresInFrontMask[2][64]; Bitboard PassedPawnMask[2][64]; -Bitboard OutpostMask[2][64]; +Bitboard AttackSpanMask[2][64]; Bitboard BishopPseudoAttacks[64]; Bitboard RookPseudoAttacks[64]; @@ -372,39 +373,6 @@ Square pop_1st_bit(Bitboard* bb) { #endif -// Optimized bitScanReverse32() implementation by Pascal Georges. Note -// that first bit is 1, this allow to differentiate between 0 and 1. -static CACHE_LINE_ALIGNMENT -const char MsbTable[256] = { - 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 -}; - -int bitScanReverse32(uint32_t b) -{ - int result = 0; - - if (b > 0xFFFF) - { - b >>= 16; - result += 16; - } - if (b > 0xFF) - { - b >>= 8; - result += 8; - } - return result + MsbTable[b]; -} namespace { @@ -427,8 +395,9 @@ namespace { for (Color c = WHITE; c <= BLACK; c++) for (Square s = SQ_A1; s <= SQ_H8; s++) { + SquaresInFrontMask[c][s] = in_front_bb(c, s) & file_bb(s); PassedPawnMask[c][s] = in_front_bb(c, s) & this_and_neighboring_files_bb(s); - OutpostMask[c][s] = in_front_bb(c, s) & neighboring_files_bb(s); + AttackSpanMask[c][s] = in_front_bb(c, s) & neighboring_files_bb(s); } for (Bitboard b = 0ULL; b < 256ULL; b++)