pos.do_move(move, st);
- // Perform a preliminary search at depth 1 to verify that the move holds.
- // We will only do this search if the depth is not 5, thus avoiding two
- // searches at depth 1 in a row.
- if (depth != 5 * ONE_PLY)
- value = -search<NonPV>(pos, ss+1, -rbeta, -rbeta+1, ONE_PLY, !cutNode, true);
-
- // If the first search was skipped or was performed and held, perform
- // the regular search.
- if (depth == 5 * ONE_PLY || value >= rbeta)
+ // Perform a preliminary qsearch to verify that the move holds
+ value = -qsearch<NonPV>(pos, ss+1, -rbeta, -rbeta+1);
+
+ // If the qsearch held perform the regular search
+ if (value >= rbeta)
value = -search<NonPV>(pos, ss+1, -rbeta, -rbeta+1, depth - 4 * ONE_PLY, !cutNode, false);
pos.undo_move(move);