1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-05-02 01:29:36 +00:00

Simplify pawn captures generation

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2012-01-16 14:27:12 +01:00
parent db57b5f8f4
commit b6b8c62ba5

View file

@ -91,19 +91,19 @@ namespace {
template<Square Delta> template<Square Delta>
inline Bitboard move_pawns(Bitboard p) { inline Bitboard move_pawns(Bitboard p) {
return Delta == DELTA_N ? p << 8 : Delta == DELTA_S ? p >> 8 : return Delta == DELTA_N ? p << 8
Delta == DELTA_NE ? p << 9 : Delta == DELTA_SE ? p >> 7 : : Delta == DELTA_S ? p >> 8
Delta == DELTA_NW ? p << 7 : Delta == DELTA_SW ? p >> 9 : p; : Delta == DELTA_NE ? (p & ~FileHBB) << 9
: Delta == DELTA_SE ? (p & ~FileHBB) >> 7
: Delta == DELTA_NW ? (p & ~FileABB) << 7
: Delta == DELTA_SW ? (p & ~FileABB) >> 9 : p;
} }
template<Square Delta> template<Square Delta>
inline MoveStack* generate_pawn_captures(MoveStack* mlist, Bitboard pawns, Bitboard target) { inline MoveStack* generate_pawn_captures(MoveStack* mlist, Bitboard pawns, Bitboard target) {
const Bitboard TFileABB = ( Delta == DELTA_NE Bitboard b = move_pawns<Delta>(pawns) & target;
|| Delta == DELTA_SE ? FileABB : FileHBB);
Bitboard b = move_pawns<Delta>(pawns) & target & ~TFileABB;
SERIALIZE_PAWNS(b, -Delta); SERIALIZE_PAWNS(b, -Delta);
return mlist; return mlist;
} }
@ -112,14 +112,8 @@ namespace {
template<MoveType Type, Square Delta> template<MoveType Type, Square Delta>
inline MoveStack* generate_promotions(MoveStack* mlist, Bitboard pawnsOn7, Bitboard target, Square ksq) { inline MoveStack* generate_promotions(MoveStack* mlist, Bitboard pawnsOn7, Bitboard target, Square ksq) {
const Bitboard TFileABB = ( Delta == DELTA_NE
|| Delta == DELTA_SE ? FileABB : FileHBB);
Bitboard b = move_pawns<Delta>(pawnsOn7) & target; Bitboard b = move_pawns<Delta>(pawnsOn7) & target;
if (Delta != DELTA_N && Delta != DELTA_S)
b &= ~TFileABB;
while (b) while (b)
{ {
Square to = pop_1st_bit(&b); Square to = pop_1st_bit(&b);