From 691ed425bae1e0a24a12dc3c38534c07adf5221e Mon Sep 17 00:00:00 2001 From: Hongzhi Cheng Date: Mon, 18 Nov 2013 16:41:19 +0100 Subject: [PATCH 1/1] Get correct excluded moves for split nodes Tested setting FakeSplit to true and running ./stockfish bench 128 2 There is a different signature with and without the patch so it affects functionality but only in SMP case. bench: 8331357 --- src/search.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index f1ab80f2..5ae2cf69 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -499,6 +499,7 @@ namespace { // Step 1. Initialize node Thread* thisThread = pos.this_thread(); inCheck = pos.checkers(); + excludedMove = ss->excludedMove; if (SpNode) { @@ -507,7 +508,7 @@ namespace { threatMove = splitPoint->threatMove; bestValue = splitPoint->bestValue; tte = NULL; - ttMove = excludedMove = MOVE_NONE; + ttMove = MOVE_NONE; ttValue = VALUE_NONE; assert(splitPoint->bestValue > -VALUE_INFINITE && splitPoint->moveCount > 0); @@ -547,7 +548,6 @@ namespace { // Step 4. Transposition table lookup // We don't want the score of a partial search to overwrite a previous full search // TT value, so we use a different position key in case of an excluded move. - excludedMove = ss->excludedMove; posKey = excludedMove ? pos.exclusion_key() : pos.key(); tte = TT.probe(posKey); ttMove = RootNode ? RootMoves[PVIdx].pv[0] : tte ? tte->move() : MOVE_NONE; -- 2.39.2