X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=12cbffe020b25f7bf92921dc860e23e83eb3d919;hp=5447ed3c6694c74b398effebbe3ad41a704e9778;hb=77342126d8417469bd6a398cfc6c0594b1f02f82;hpb=3cb02004596f868ae405b09fbf3a2038a680a989 diff --git a/src/search.cpp b/src/search.cpp index 5447ed3c..12cbffe0 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -554,7 +554,7 @@ namespace { Depth extension, newDepth; Value bestValue, value, ttValue, eval; bool ttHit, inCheck, givesCheck, singularExtensionNode, improving; - bool captureOrPromotion, doFullDepthSearch, moveCountPruning, skipQuiets; + bool captureOrPromotion, doFullDepthSearch, moveCountPruning, skipQuiets, ttCapture; Piece moved_piece; int moveCount, quietCount; @@ -842,6 +842,7 @@ moves_loop: // When in check search starts from here && (tte->bound() & BOUND_LOWER) && tte->depth() >= depth - 3 * ONE_PLY; skipQuiets = false; + ttCapture = false; // Step 11. Loop through moves // Loop through all pseudo-legal moves until no moves remain or a beta cutoff occurs @@ -959,6 +960,9 @@ moves_loop: // When in check search starts from here ss->moveCount = --moveCount; continue; } + + if (move == ttMove && captureOrPromotion) + ttCapture = true; // Update the current move (this must be done after singular extension search) ss->currentMove = move; @@ -979,6 +983,11 @@ moves_loop: // When in check search starts from here r -= r ? ONE_PLY : DEPTH_ZERO; else { + + // Increase reduction if ttMove is a capture + if (ttCapture) + r += ONE_PLY; + // Increase reduction for cut nodes if (cutNode) r += 2 * ONE_PLY; @@ -1262,9 +1271,6 @@ moves_loop: // When in check search starts from here { assert(is_ok(move)); - // Speculative prefetch as early as possible - prefetch(TT.first_entry(pos.key_after(move))); - givesCheck = type_of(move) == NORMAL && !pos.discovered_check_candidates() ? pos.check_squares(type_of(pos.piece_on(from_sq(move)))) & to_sq(move) : pos.gives_check(move); @@ -1306,6 +1312,9 @@ moves_loop: // When in check search starts from here && !pos.see_ge(move)) continue; + // Speculative prefetch as early as possible + prefetch(TT.first_entry(pos.key_after(move))); + // Check for legality just before making the move if (!pos.legal(move)) {