]> git.sesse.net Git - stockfish/blobdiff - src/pawns.cpp
Store pawn attacks in PawnInfo
[stockfish] / src / pawns.cpp
index c32fbdec7dfa7d639f85d129df851d52fe569535..8f5e18904f7503f5e9b81fd42fa6073e387b0de7 100644 (file)
@@ -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++)
   {
@@ -303,7 +307,7 @@ PawnInfo* PawnInfoTable::get_pawn_info(const Position& pos) {
         if (   passed
             || isolated
             || chain
-            || (pos.pawn_attacks_from(s, us) & theirPawns)
+            || (pos.attacks_from<PAWN>(s, us) & theirPawns)
             || (ourPawns & behind_bb(us, r) & neighboring_files_bb(f)))
             backward = false;
         else
@@ -312,7 +316,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_from(s, us);
+            Bitboard b = pos.attacks_from<PAWN>(s, us);
             if (us == WHITE)
             {
                 for ( ; !(b & (ourPawns | theirPawns)); b <<= 8);