From: protonspring Date: Tue, 1 Jan 2019 12:35:53 +0000 (-0700) Subject: Remove as useless micro-optimization in pawns generation (#1915) X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=e2d3c163cbdd98de6f0399db358be964d014d313 Remove as useless micro-optimization in pawns generation (#1915) The extra condition is used as a shortcut to skip the following 3 assignments: ```C++ Bitboard b1 = shift(pawnsOn7) & enemies; Bitboard b2 = shift(pawnsOn7) & enemies; Bitboard b3 = shift(pawnsOn7) & emptySquares; ``` In case of EVASION with no target on 8th rank (the common case), we end up performing the 3 statements for nothing because b1 = b2 = b3 = 0. But this is just a small micro-optimization and the condition is quite confusing, so just remove it and prefer a readable code instead. STC LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 78020 W: 16978 L: 16967 D: 44075 http://tests.stockfishchess.org/tests/view/5c27b4fe0ebc5902ba135bb0 No functional change. --- diff --git a/src/movegen.cpp b/src/movegen.cpp index 76a27d9f..e7678979 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -96,7 +96,6 @@ namespace { // Compute our parametrized parameters at compile time, named according to // the point of view of white side. constexpr Color Them = (Us == WHITE ? BLACK : WHITE); - constexpr Bitboard TRank8BB = (Us == WHITE ? Rank8BB : Rank1BB); constexpr Bitboard TRank7BB = (Us == WHITE ? Rank7BB : Rank2BB); constexpr Bitboard TRank3BB = (Us == WHITE ? Rank3BB : Rank6BB); constexpr Direction Up = (Us == WHITE ? NORTH : SOUTH); @@ -161,7 +160,7 @@ namespace { } // Promotions and underpromotions - if (pawnsOn7 && (Type != EVASIONS || (target & TRank8BB))) + if (pawnsOn7) { if (Type == CAPTURES) emptySquares = ~pos.pieces();