X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbitboard.cpp;h=ca6c2003412082f4e935b9aca345216eec109373;hb=0973cc2ef63060294f790803e0525b66ee91dfee;hp=e0ce4d2d771fdeb2453d460fdf06755569a69b48;hpb=dc286d2673ef334c6bab0c4244a49a1b01e63cdc;p=stockfish diff --git a/src/bitboard.cpp b/src/bitboard.cpp index e0ce4d2d..ca6c2003 100644 --- a/src/bitboard.cpp +++ b/src/bitboard.cpp @@ -368,6 +368,29 @@ Square pop_1st_bit(Bitboard* bb) { #endif +int bitScanReverse32(uint32_t b) +{ + int result = 0; + + if (b > 0xFFFF) { + b >>= 16; + result += 16; + } + if (b > 0xFF) { + b >>= 8; + result += 8; + } + if (b > 0xF) { + b >>= 4; + result += 4; + } + if (b > 0x3) { + b >>= 2; + result += 2; + } + return result + (b > 0) + (b > 1); +} + namespace { // All functions below are used to precompute various bitboards during