Skip TT_MOVES phase when possible
authorMarco Costalba <mcostalba@gmail.com>
Sun, 30 Aug 2009 16:17:44 +0000 (17:17 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 30 Aug 2009 19:10:09 +0000 (20:10 +0100)
If we don't have tt moves to search skip the
useless loop associated with TT_MOVES phase.

Another 1% speed boost that brings this series
to a +6.2% against original revision 595a90df

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/movepick.cpp

index 7120ba0c37feeffb4c83bbde8a9aca0c2c26b3aa..5c0f4f5b775c57f811a382746936b519043c9710 100644 (file)
@@ -61,10 +61,12 @@ namespace {
 
 MovePicker::MovePicker(const Position& p, Move ttm, Depth d,
                        const History& h, SearchStack* ss) : pos(p), H(h) {
+  int searchTT = ttm;
   ttMoves[0].move = ttm;
   if (ss)
   {
       ttMoves[1].move = (ss->mateKiller == ttm)? MOVE_NONE : ss->mateKiller;
+      searchTT |= ttMoves[1].move;
       killers[0].move = ss->killers[0];
       killers[1].move = ss->killers[1];
   } else
@@ -81,11 +83,11 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d,
   if (p.is_check())
       phasePtr = EvasionsPhaseTable;
   else if (d > Depth(0))
-      phasePtr = MainSearchPhaseTable;
+      phasePtr = MainSearchPhaseTable + !searchTT;
   else if (d == Depth(0))
-      phasePtr = QsearchWithChecksPhaseTable;
+      phasePtr = QsearchWithChecksPhaseTable + !searchTT;
   else
-      phasePtr = QsearchWithoutChecksPhaseTable;
+      phasePtr = QsearchWithoutChecksPhaseTable + !searchTT;
 
   phasePtr--;
   go_next_phase();