X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpawns.cpp;h=aa41c2cd8150b6baf86809d8e43832bacd7f2e25;hp=a681571dd9c72c90d76bb23365f7b914ecc7af71;hb=564ed5b38cb2b99e8770ed1c0ceee7c3e769eb0a;hpb=049139d025b26a9fbc9cf87f51b578a4fab447cf diff --git a/src/pawns.cpp b/src/pawns.cpp index a681571d..aa41c2cd 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -193,6 +193,10 @@ PawnInfo* PawnInfoTable::get_pawn_info(const Position& pos) { Value mgValue[2] = {Value(0), Value(0)}; Value egValue[2] = {Value(0), Value(0)}; + // Calculate pawn attacks + pi->pawnAttacks[WHITE] = ((pos.pieces(PAWN, WHITE) << 9) & ~FileABB) | ((pos.pieces(PAWN, WHITE) << 7) & ~FileHBB); + pi->pawnAttacks[BLACK] = ((pos.pieces(PAWN, BLACK) >> 7) & ~FileABB) | ((pos.pieces(PAWN, BLACK) >> 9) & ~FileHBB); + // Loop through the pawns for both colors for (Color us = WHITE; us <= BLACK; us++) { @@ -299,12 +303,11 @@ PawnInfo* PawnInfoTable::get_pawn_info(const Position& pos) { // it cannot be backward. If can capture an enemy pawn or if // there are friendly pawns behind on neighboring files it cannot // be backward either. + bool backward; - if ( passed - || isolated - || chain - || (pos.pawn_attacks(s, us) & theirPawns) - || (ourPawns & behind_bb(us, r) & neighboring_files_bb(f))) + if ( (passed | isolated | chain) + || (ourPawns & behind_bb(us, r) & neighboring_files_bb(f)) + || (pos.attacks_from(s, us) & theirPawns)) backward = false; else { @@ -312,7 +315,7 @@ PawnInfo* PawnInfoTable::get_pawn_info(const Position& pos) { // pawn on neighboring files. We now check whether the pawn is // backward by looking in the forward direction on the neighboring // files, and seeing whether we meet a friendly or an enemy pawn first. - Bitboard b = pos.pawn_attacks(s, us); + Bitboard b = pos.attacks_from(s, us); if (us == WHITE) { for ( ; !(b & (ourPawns | theirPawns)); b <<= 8);