From: Marco Costalba Date: Fri, 14 May 2010 11:51:29 +0000 (+0100) Subject: Micro optimization in evaluate_pawns() X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=9079bab84cab03c20f2c2d889d8b419f1d696a09 Micro optimization in evaluate_pawns() Avoid a double bitcount in test for candidate passed pawn when we don't have any supporting pawn. Also use outpost_mask() instead of build it up on the fly. No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/pawns.cpp b/src/pawns.cpp index 0ccfe809..c2d60e4b 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -252,12 +252,12 @@ Score PawnInfoTable::evaluate_pawns(const Position& pos, Bitboard ourPawns, backward = (b | (Us == WHITE ? b << 8 : b >> 8)) & theirPawns; } + assert(passed | opposed | (outpost_mask(Us, s) & theirPawns)); + // Test for candidate passed pawn - candidate = !passed - && !opposed - && ( count_1s_max_15(neighboring_files_bb(f) & (behind_bb(Us, r) | rank_bb(r)) & ourPawns) - - count_1s_max_15(neighboring_files_bb(f) & in_front_bb(Us, r) & theirPawns) - >= 0); + candidate = !(opposed | passed) + && (b = outpost_mask(opposite_color(Us), s + pawn_push(Us)) & ourPawns) != EmptyBoardBB + && count_1s_max_15(b) >= count_1s_max_15(outpost_mask(Us, s) & theirPawns); // In order to prevent doubled passed pawns from receiving a too big // bonus, only the frontmost passed pawn on each file is considered as