It seems to intorduce a regression when tested
with 3 threads at 15+0.05:
ELO: -2.26 +-2.2 (95%) LOS: 2.4%
Total: 30000 W: 4813 L: 5008 D: 20179
bench:
8331357
// Step 1. Initialize node
Thread* thisThread = pos.this_thread();
inCheck = pos.checkers();
// Step 1. Initialize node
Thread* thisThread = pos.this_thread();
inCheck = pos.checkers();
- excludedMove = ss->excludedMove;
threatMove = splitPoint->threatMove;
bestValue = splitPoint->bestValue;
tte = NULL;
threatMove = splitPoint->threatMove;
bestValue = splitPoint->bestValue;
tte = NULL;
+ ttMove = excludedMove = MOVE_NONE;
ttValue = VALUE_NONE;
assert(splitPoint->bestValue > -VALUE_INFINITE && splitPoint->moveCount > 0);
ttValue = VALUE_NONE;
assert(splitPoint->bestValue > -VALUE_INFINITE && splitPoint->moveCount > 0);
// 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.
// 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;
posKey = excludedMove ? pos.exclusion_key() : pos.key();
tte = TT.probe(posKey);
ttMove = RootNode ? RootMoves[PVIdx].pv[0] : tte ? tte->move() : MOVE_NONE;