1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-05-02 09:39:36 +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? if (bit_is_set(pawn_attacks(them, ksq), to)) // Normal check?
return true; 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))) && (direction_between_squares(from, ksq) != direction_between_squares(to, ksq)))
return true; return true;
@ -591,22 +592,26 @@ bool Position::move_is_check(Move m, Bitboard dcCandidates) const {
} }
return false; return false;
// Test discovered check and normal check according to piece type
case KNIGHT: case KNIGHT:
return bit_is_set(dcCandidates, from) // Discovered check? return (dcCandidates && bit_is_set(dcCandidates, from))
|| bit_is_set(piece_attacks<KNIGHT>(ksq), to); // Normal check? || bit_is_set(piece_attacks<KNIGHT>(ksq), to);
case BISHOP: case BISHOP:
return bit_is_set(dcCandidates, from) // Discovered check? return (dcCandidates && bit_is_set(dcCandidates, from))
|| bit_is_set(piece_attacks<BISHOP>(ksq), to); // Normal check? || ( direction_between_squares(ksq, to) != DIR_NONE
&& bit_is_set(piece_attacks<BISHOP>(ksq), to));
case ROOK: case ROOK:
return bit_is_set(dcCandidates, from) // Discovered check? return (dcCandidates && bit_is_set(dcCandidates, from))
|| bit_is_set(piece_attacks<ROOK>(ksq), to); // Normal check? || ( direction_between_squares(ksq, to) != DIR_NONE
&& bit_is_set(piece_attacks<ROOK>(ksq), to));
case QUEEN: case QUEEN:
// Discovered checks are impossible! // Discovered checks are impossible!
assert(!bit_is_set(dcCandidates, from)); 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: case KING:
// Discovered check? // Discovered check?