Compute correction_value before TT lookup

Passed single-threaded STC with 128MB hash
https://tests.stockfishchess.org/tests/view/6a04a6348d9bd4cd7cd69124
LLR: 2.93 (-2.94,2.94) <0.00,2.00>
Total: 103808 W: 26400 L: 26007 D: 51401
Ptnml(0-2): 205, 11212, 28711, 11537, 239

Passed standard SMP STC
https://tests.stockfishchess.org/tests/view/6a054f528d9bd4cd7cd69225
LLR: 2.95 (-2.94,2.94) <0.00,2.00>
Total: 80392 W: 20580 L: 20221 D: 39591
Ptnml(0-2): 79, 8872, 21942, 9217, 86

Entering `do_move`, `correction_value` and the TT lookup are always done together, but the TT lookup happens first. Swapping the order allows the execution of `correction_value` to overlap with the in-flight TT prefetch.

closes https://github.com/official-stockfish/Stockfish/pull/6822

No functional change
This commit is contained in:
anematode
2026-05-17 20:48:12 +02:00
committed by Joost VandeVondele
parent 94beadffb3
commit 91736f7b4f
+3 -1
View File
@@ -752,6 +752,8 @@ Value Search::Worker::search(
ss->statScore = 0; ss->statScore = 0;
(ss + 2)->cutoffCnt = 0; (ss + 2)->cutoffCnt = 0;
const auto correctionValue = correction_value(*this, pos, ss);
// Step 4. Transposition table lookup // Step 4. Transposition table lookup
excludedMove = ss->excludedMove; excludedMove = ss->excludedMove;
posKey = pos.key(); posKey = pos.key();
@@ -765,7 +767,7 @@ Value Search::Worker::search(
// Step 5. Static evaluation of the position // Step 5. Static evaluation of the position
Value unadjustedStaticEval = VALUE_NONE; Value unadjustedStaticEval = VALUE_NONE;
const auto correctionValue = correction_value(*this, pos, ss);
// Skip early pruning when in check // Skip early pruning when in check
if (ss->inCheck) if (ss->inCheck)
ss->staticEval = eval = (ss - 2)->staticEval; ss->staticEval = eval = (ss - 2)->staticEval;