1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-05-01 09:13:08 +00:00

Micro optimize move_is_check()

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2009-03-07 20:38:05 +01:00
parent 964bd86272
commit f637ddc1e8

View file

@ -552,7 +552,8 @@ bool Position::move_is_check(Move m, Bitboard dcCandidates) const {
if (bit_is_set(pawn_attacks(them, ksq), to)) // Normal check?
return true;
if ( bit_is_set(dcCandidates, from) // Discovered check?
if ( dcCandidates // Discovered check?
&& bit_is_set(dcCandidates, from)
&& (direction_between_squares(from, ksq) != direction_between_squares(to, ksq)))
return true;
@ -591,22 +592,26 @@ bool Position::move_is_check(Move m, Bitboard dcCandidates) const {
}
return false;
// Test discovered check and normal check according to piece type
case KNIGHT:
return bit_is_set(dcCandidates, from) // Discovered check?
|| bit_is_set(piece_attacks<KNIGHT>(ksq), to); // Normal check?
return (dcCandidates && bit_is_set(dcCandidates, from))
|| bit_is_set(piece_attacks<KNIGHT>(ksq), to);
case BISHOP:
return bit_is_set(dcCandidates, from) // Discovered check?
|| bit_is_set(piece_attacks<BISHOP>(ksq), to); // Normal check?
return (dcCandidates && bit_is_set(dcCandidates, from))
|| ( direction_between_squares(ksq, to) != DIR_NONE
&& bit_is_set(piece_attacks<BISHOP>(ksq), to));
case ROOK:
return bit_is_set(dcCandidates, from) // Discovered check?
|| bit_is_set(piece_attacks<ROOK>(ksq), to); // Normal check?
return (dcCandidates && bit_is_set(dcCandidates, from))
|| ( direction_between_squares(ksq, to) != DIR_NONE
&& bit_is_set(piece_attacks<ROOK>(ksq), to));
case QUEEN:
// Discovered checks are impossible!
assert(!bit_is_set(dcCandidates, from));
return bit_is_set(piece_attacks<QUEEN>(ksq), to); // Normal check?
return ( direction_between_squares(ksq, to) != DIR_NONE
&& bit_is_set(piece_attacks<QUEEN>(ksq), to));
case KING:
// Discovered check?