X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=8037e6e74f29300065618b16a435e29201a9488e;hp=3ac52f8c0f9cbd0910b00ab1a05532c198c291b1;hb=84a641b8bb849a1951c60f92dc97619237fb2d09;hpb=a2410227cc8df5373d6970bfe63bbd3df5287c8c diff --git a/src/search.cpp b/src/search.cpp index 3ac52f8c..8037e6e7 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -341,7 +341,7 @@ namespace { Move easyMove = EasyMove.get(pos.key()); EasyMove.clear(); - std::memset(ss-2, 0, 5 * sizeof(Stack)); + std::memset(stack, 0, 5 * sizeof(Stack)); depth = DEPTH_ZERO; BestMoveChanges = 0; @@ -531,7 +531,7 @@ namespace { Depth extension, newDepth, predictedDepth; Value bestValue, value, ttValue, eval, nullValue, futilityValue; bool ttHit, inCheck, givesCheck, singularExtensionNode, improving; - bool captureOrPromotion, dangerous, doFullDepthSearch; + bool captureOrPromotion, doFullDepthSearch; int moveCount, quietCount; // Step 1. Initialize node @@ -769,9 +769,9 @@ namespace { && !ttMove && (PvNode || ss->staticEval + 256 >= beta)) { - Depth d = 2 * (depth - 2 * ONE_PLY) - (PvNode ? DEPTH_ZERO : depth / 2); + Depth d = depth - 2 * ONE_PLY - (PvNode ? DEPTH_ZERO : depth / 4); ss->skipEarlyPruning = true; - search(pos, ss, alpha, beta, d / 2, true); + search(pos, ss, alpha, beta, d, true); ss->skipEarlyPruning = false; tte = TT.probe(posKey, ttHit); @@ -821,13 +821,11 @@ moves_loop: // When in check and at SpNode search starts from here if (!pos.legal(move, ci.pinned)) continue; - moveCount = ++splitPoint->moveCount; + ss->moveCount = moveCount = ++splitPoint->moveCount; splitPoint->spinlock.release(); } else - ++moveCount; - - ss->moveCount = moveCount; + ss->moveCount = ++moveCount; if (RootNode) { @@ -849,10 +847,6 @@ moves_loop: // When in check and at SpNode search starts from here ? ci.checkSquares[type_of(pos.piece_on(from_sq(move)))] & to_sq(move) : pos.gives_check(move, ci); - dangerous = givesCheck - || type_of(move) != NORMAL - || pos.advanced_pawn_push(move); - // Step 12. Extend checks if (givesCheck && pos.see_sign(move) >= VALUE_ZERO) extension = ONE_PLY; @@ -885,7 +879,8 @@ moves_loop: // When in check and at SpNode search starts from here if ( !RootNode && !captureOrPromotion && !inCheck - && !dangerous + && !givesCheck + && !pos.advanced_pawn_push(move) && bestValue > VALUE_MATED_IN_MAX_PLY) { // Move count based pruning @@ -935,8 +930,7 @@ moves_loop: // When in check and at SpNode search starts from here // Check for legality just before making the move if (!RootNode && !SpNode && !pos.legal(move, ci.pinned)) { - moveCount--; - ss->moveCount = moveCount; + ss->moveCount = --moveCount; continue; } @@ -1429,7 +1423,7 @@ moves_loop: // When in check and at SpNode search starts from here } // Extra penalty for PV move in previous ply when it gets refuted - if (is_ok((ss-2)->currentMove) && (ss-1)->moveCount==1 && !pos.captured_piece_type()) + if (is_ok((ss-2)->currentMove) && (ss-1)->moveCount == 1 && !pos.captured_piece_type()) { Square prevPrevSq = to_sq((ss-2)->currentMove); HistoryStats& ttMoveCmh = CounterMovesHistory[pos.piece_on(prevPrevSq)][prevPrevSq];