X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovepick.cpp;h=7e338dbf62de586ec2e14fa0346eaab44c36b875;hp=f50f16b03b2ac9fbfd5c2f20d875fce22f1067e1;hb=b088f0aefd658261e9231b556382acf532920513;hpb=f6d245291664e1a521b3810051365c48c82bac78 diff --git a/src/movepick.cpp b/src/movepick.cpp index f50f16b0..7e338dbf 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -44,6 +44,8 @@ namespace { CACHE_LINE_ALIGNMENT const MovegenPhaseT MainSearchPhaseTable[] = { PH_STOP, PH_NULL_MOVE, PH_TT_MOVES, PH_GOOD_CAPTURES, PH_KILLERS, PH_NONCAPTURES, PH_BAD_CAPTURES, PH_STOP}; + const MovegenPhaseT MainSearchNoNullPhaseTable[] = { PH_STOP, PH_TT_MOVES, PH_GOOD_CAPTURES, PH_KILLERS, PH_NONCAPTURES, PH_BAD_CAPTURES, PH_STOP}; + const MovegenPhaseT LowSearchPhaseTable[] = { PH_STOP, PH_TT_MOVES, PH_GOOD_CAPTURES, PH_NULL_MOVE, PH_KILLERS, PH_NONCAPTURES, PH_BAD_CAPTURES, PH_STOP}; const MovegenPhaseT EvasionsPhaseTable[] = { PH_STOP, PH_EVASIONS, PH_STOP}; const MovegenPhaseT QsearchWithChecksPhaseTable[] = { PH_STOP, PH_TT_MOVES, PH_QCAPTURES, PH_QCHECKS, PH_STOP}; const MovegenPhaseT QsearchWithoutChecksPhaseTable[] = { PH_STOP, PH_TT_MOVES, PH_QCAPTURES, PH_STOP}; @@ -78,8 +80,10 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, if (p.is_check()) phasePtr = EvasionsPhaseTable; + else if (d >= Depth(3 * OnePly)) + phasePtr = useNullMove ? MainSearchPhaseTable : MainSearchNoNullPhaseTable; else if (d > Depth(0)) - phasePtr = MainSearchPhaseTable; + phasePtr = useNullMove ? LowSearchPhaseTable : MainSearchNoNullPhaseTable; else if (d == Depth(0)) phasePtr = QsearchWithChecksPhaseTable; else @@ -116,7 +120,7 @@ Move MovePicker::get_next_move() { switch (*phasePtr) { case PH_NULL_MOVE: - break; + return MOVE_NULL; case PH_TT_MOVES: movesPicked = 0; // This is used as index to ttMoves[]