Truncate the extracted PV from the point where
the score stored in hash starts to deviate from
the root score.
Idea from Ronald de Man.
bench:
8732553
const TTEntry* tte;
int ply = 0;
Move m = pv[0];
const TTEntry* tte;
int ply = 0;
Move m = pv[0];
+ Value expectedScore = score;
pos.do_move(pv[ply++], *st++);
tte = TT.probe(pos.key());
pos.do_move(pv[ply++], *st++);
tte = TT.probe(pos.key());
+ expectedScore = -expectedScore;
+ && expectedScore == value_from_tt(tte->value(), ply)
&& pos.pseudo_legal(m = tte->move()) // Local copy, TT could change
&& pos.legal(m, pos.pinned_pieces(pos.side_to_move()))
&& ply < MAX_PLY
&& pos.pseudo_legal(m = tte->move()) // Local copy, TT could change
&& pos.legal(m, pos.pinned_pieces(pos.side_to_move()))
&& ply < MAX_PLY