We avoid to use an ad-hoc table at the cost of a
relative_rank() call in advanced_pawn_push().
On my 32 bit system it is even slightly faster (on 64bit
may be different). This is the speed in nps alternating
old and new bench runs:
new
368890
368825
369972
old
367798
367635
368026
No functional change.
extern int SquareDistance[SQUARE_NB][SQUARE_NB];
const Bitboard DarkSquares = 0xAA55AA55AA55AA55ULL;
-const Bitboard TheirHalf[COLOR_NB] = { Rank5BB | Rank6BB | Rank7BB | Rank8BB,
- Rank1BB | Rank2BB | Rank3BB | Rank4BB };
/// Overloads of bitwise operators between a Bitboard and a Square for testing
/// whether a given bit is set in a bitboard, and for setting and clearing bits.
}
inline bool Position::advanced_pawn_push(Move m) const {
- return pieces(PAWN) & TheirHalf[sideToMove] & from_sq(m);
+ return type_of(moved_piece(m)) == PAWN
+ && relative_rank(sideToMove, from_sq(m)) > RANK_4;
}
inline Key Position::key() const {