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:
parent
964bd86272
commit
f637ddc1e8
1 changed files with 13 additions and 8 deletions
|
@ -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?
|
||||||
|
|
Loading…
Add table
Reference in a new issue