From: Marco Costalba Date: Wed, 4 Mar 2009 13:50:39 +0000 (+0100) Subject: Avoid to call useless sliders attacks in update_checkers() X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=7c84b39a42bfcada7e9eafd745a9616aaa8f9c1c;hp=68e711aac603388d38490521cf336b535aa10c91 Avoid to call useless sliders attacks in update_checkers() Quickly filter out some calls to sliders attacks when we already know that will fail for sure. No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/position.cpp b/src/position.cpp index 21839d6a..65964b82 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -648,7 +648,18 @@ template inline void Position::update_checkers(Bitboard* pCheckersBB, Square ksq, Square from, Square to, Bitboard dcCandidates) { - if (Piece != KING && bit_is_set(piece_attacks(ksq), to)) + const bool Bishop = (Piece == QUEEN || Piece == BISHOP); + const bool Rook = (Piece == QUEEN || Piece == ROOK); + const bool Slider = Bishop || Rook; + + if ( ( (Bishop && bit_is_set(BishopPseudoAttacks[ksq], to)) + || (Rook && bit_is_set(RookPseudoAttacks[ksq], to))) + && bit_is_set(piece_attacks(ksq), to)) // slow, try to early skip + set_bit(pCheckersBB, to); + + else if ( Piece != KING + && !Slider + && bit_is_set(piece_attacks(ksq), to)) set_bit(pCheckersBB, to); if (Piece != QUEEN && bit_is_set(dcCandidates, from))