X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitboard.h;h=09c005979b2bf4e58c836673759a4b82152bef44;hp=c613654965861ad9515410cdb165ef4ba4e15a7f;hb=22b9307aba0f78aa92abcf85e807af8b64011c7a;hpb=ac7339877b3e083b5dd93f34ec79779d43f784ae diff --git a/src/bitboard.h b/src/bitboard.h index c6136549..09c00597 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -171,30 +171,35 @@ inline Bitboard in_front_bb(Color c, Square s) { #if defined(IS_64BIT) -inline Bitboard rook_attacks_bb(Square s, Bitboard occ) { - return RAttacks[s][((occ & RMasks[s]) * RMagics[s]) >> RShifts[s]]; +FORCE_INLINE unsigned rook_index(Square s, Bitboard occ) { + return unsigned(((occ & RMasks[s]) * RMagics[s]) >> RShifts[s]); } -inline Bitboard bishop_attacks_bb(Square s, Bitboard occ) { - return BAttacks[s][((occ & BMasks[s]) * BMagics[s]) >> BShifts[s]]; +FORCE_INLINE unsigned bishop_index(Square s, Bitboard occ) { + return unsigned(((occ & BMasks[s]) * BMagics[s]) >> BShifts[s]); } #else // if !defined(IS_64BIT) -inline Bitboard rook_attacks_bb(Square s, Bitboard occ) { +FORCE_INLINE unsigned rook_index(Square s, Bitboard occ) { Bitboard b = occ & RMasks[s]; - return RAttacks[s] - [unsigned(int(b) * int(RMagics[s]) ^ int(b >> 32) * int(RMagics[s] >> 32)) >> RShifts[s]]; + return unsigned(int(b) * int(RMagics[s]) ^ int(b >> 32) * int(RMagics[s] >> 32)) >> RShifts[s]; } -inline Bitboard bishop_attacks_bb(Square s, Bitboard occ) { +FORCE_INLINE unsigned bishop_index(Square s, Bitboard occ) { Bitboard b = occ & BMasks[s]; - return BAttacks[s] - [unsigned(int(b) * int(BMagics[s]) ^ int(b >> 32) * int(BMagics[s] >> 32)) >> BShifts[s]]; + return unsigned(int(b) * int(BMagics[s]) ^ int(b >> 32) * int(BMagics[s] >> 32)) >> BShifts[s]; } - #endif +inline Bitboard rook_attacks_bb(Square s, Bitboard occ) { + return RAttacks[s][rook_index(s, occ)]; +} + +inline Bitboard bishop_attacks_bb(Square s, Bitboard occ) { + return BAttacks[s][bishop_index(s, occ)]; +} + inline Bitboard queen_attacks_bb(Square s, Bitboard blockers) { return rook_attacks_bb(s, blockers) | bishop_attacks_bb(s, blockers); }