- // Finished searching the move. If AbortSearch is true, the search
- // was aborted because the user interrupted the search or because we
- // ran out of time. In this case, the return value of the search cannot
- // be trusted, and we break out of the loop without updating the best
- // move and/or PV.
- if (AbortSearch)
- break;
-
- // Remember beta-cutoff and searched nodes counts for this move. The
- // info is used to sort the root moves at the next iteration.
- int64_t our, their;
- BetaCounter.read(pos.side_to_move(), our, their);
- rml.set_beta_counters(i, our, their);
- rml.set_move_nodes(i, nodes_searched() - nodes);
-
- assert(value >= -VALUE_INFINITE && value <= VALUE_INFINITE);
-
- if (value <= alpha && i >= MultiPV)
- rml.set_move_score(i, -VALUE_INFINITE);
- else
- {
- // PV move or new best move!
-
- // Update PV
- rml.set_move_score(i, value);
- update_pv(ss, 0);
- TT.extract_pv(pos, ss[0].pv, PLY_MAX);
- rml.set_move_pv(i, ss[0].pv);