summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
b35e593)
More then optimization it is worth a bit of better
code self documenting.
No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
return SignedDirection(SignedDirectionTable[s1][s2]);
}
return SignedDirection(SignedDirectionTable[s1][s2]);
}
+inline bool direction_is_diagonal(Square s1, Square s2) {
+ return DirectionTable[s1][s2] & 2;
+}
+
+inline bool direction_is_straight(Square s1, Square s2) {
+ return DirectionTable[s1][s2] < 2;
+}
case BISHOP:
return (dcCandidates && bit_is_set(dcCandidates, from))
case BISHOP:
return (dcCandidates && bit_is_set(dcCandidates, from))
- || ( direction_between_squares(ksq, to) != DIR_NONE
- && bit_is_set(piece_attacks<BISHOP>(ksq), to));
+ || (direction_is_diagonal(ksq, to) && bit_is_set(piece_attacks<BISHOP>(ksq), to));
case ROOK:
return (dcCandidates && bit_is_set(dcCandidates, from))
case ROOK:
return (dcCandidates && bit_is_set(dcCandidates, from))
- || ( direction_between_squares(ksq, to) != DIR_NONE
- && bit_is_set(piece_attacks<ROOK>(ksq), to));
+ || (direction_is_straight(ksq, to) && bit_is_set(piece_attacks<ROOK>(ksq), to));
case QUEEN:
// Discovered checks are impossible!
assert(!bit_is_set(dcCandidates, from));
case QUEEN:
// Discovered checks are impossible!
assert(!bit_is_set(dcCandidates, from));
- return ( direction_between_squares(ksq, to) != DIR_NONE
- && bit_is_set(piece_attacks<QUEEN>(ksq), to));
+ return ( (direction_is_straight(ksq, to) && bit_is_set(piece_attacks<ROOK>(ksq), to))
+ || (direction_is_diagonal(ksq, to) && bit_is_set(piece_attacks<BISHOP>(ksq), to)));
case KING:
// Discovered check?
case KING:
// Discovered check?