X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=434587a87d5c6e40c627ca3a54edfbad779a1f0d;hp=3617853e5f23d2f3589b7af48da9decbf48e4593;hb=dcdac83187f44b14893ea261abd647c829d32c2b;hpb=5a0581498cde3d0904924d8ef7ed25ea1a2c855a;ds=sidebyside diff --git a/src/search.cpp b/src/search.cpp index 3617853e..434587a8 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1475,15 +1475,12 @@ namespace { Value bestValue = staticValue; if (bestValue >= beta) - { - // Update transposition table before to leave - TT.store(pos, value_to_tt(bestValue, ply), depth, MOVE_NONE, VALUE_TYPE_EXACT); - return bestValue; - } - else if (!isCheck && !tte && ei.futilityMargin == 0) { // Store the score to avoid a future costly evaluation() call - TT.store(pos, value_to_tt(bestValue, ply), Depth(-127*OnePly), MOVE_NONE, VALUE_TYPE_EVAL); + if (!isCheck && !tte && ei.futilityMargin == 0) + TT.store(pos, value_to_tt(bestValue, ply), Depth(-127*OnePly), MOVE_NONE, VALUE_TYPE_EVAL); + + return bestValue; } if (bestValue > alpha) @@ -1568,6 +1565,16 @@ namespace { assert(bestValue > -VALUE_INFINITE && bestValue < VALUE_INFINITE); + // Update transposition table + if (!pvNode) + { + Depth d = (depth == Depth(0) ? Depth(0) : Depth(-1)); + if (bestValue < beta) + TT.store(pos, value_to_tt(bestValue, ply), d, MOVE_NONE, VALUE_TYPE_UPPER); + else + TT.store(pos, value_to_tt(bestValue, ply), d, MOVE_NONE, VALUE_TYPE_LOWER); + } + // Update killers only for good check moves Move m = ss[ply].currentMove; if (alpha >= beta && ok_to_history(pos, m)) // Only non capture moves are considered