X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovepick.cpp;h=4d2d31167ea2db2641c582c545ba3c6c46b1a0fe;hp=6df070bbdf167b8e835a1970eb5099f846dbcfd7;hb=58c7a5c4775f7efa333bb2c921583ffba301f6b2;hpb=bb751d6c890f5c50c642366d601740366cfae8d0;ds=sidebyside diff --git a/src/movepick.cpp b/src/movepick.cpp index 6df070bb..4d2d3116 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -36,26 +36,9 @@ namespace { - /// Types - - enum MovegenPhase { - PH_TT_MOVE, // Transposition table move - PH_MATE_KILLER, // Mate killer from the current ply - PH_GOOD_CAPTURES, // Queen promotions and captures with SEE values >= 0 - PH_BAD_CAPTURES, // Queen promotions and captures with SEE valuse <= 0 - PH_KILLER_1, // Killer move 1 from the current ply (not used yet). - PH_KILLER_2, // Killer move 2 from the current ply (not used yet). - PH_NONCAPTURES, // Non-captures and underpromotions - PH_EVASIONS, // Check evasions - PH_QCAPTURES, // Captures in quiescence search - PH_QCHECKS, // Checks in quiescence search - PH_STOP - }; - - /// Variables - MovegenPhase PhaseTable[32]; + MovePicker::MovegenPhase PhaseTable[32]; int MainSearchPhaseIndex; int EvasionsPhaseIndex; int QsearchWithChecksPhaseIndex; @@ -64,6 +47,7 @@ namespace { } + //// //// Functions //// @@ -335,10 +319,8 @@ Move MovePicker::pick_move_from_list() { } } if(bestIndex != -1) { // Found a good capture - MoveStack tmp = moves[movesPicked]; - moves[movesPicked] = moves[bestIndex]; - moves[bestIndex] = tmp; - move = moves[movesPicked++].move; + move = moves[bestIndex].move; + moves[bestIndex] = moves[movesPicked++]; if(move != ttMove && move != mateKiller && pos->move_is_legal(move, pinned)) return move; @@ -368,10 +350,8 @@ Move MovePicker::pick_move_from_list() { bestIndex = movesPicked; if(bestIndex != -1) { - MoveStack tmp = moves[movesPicked]; - moves[movesPicked] = moves[bestIndex]; - moves[bestIndex] = tmp; - move = moves[movesPicked++].move; + move = moves[bestIndex].move; + moves[bestIndex] = moves[movesPicked++]; if(move != ttMove && move != mateKiller && pos->move_is_legal(move, pinned)) return move; @@ -392,10 +372,8 @@ Move MovePicker::pick_move_from_list() { } if(bestIndex != -1) { - MoveStack tmp = moves[movesPicked]; - moves[movesPicked] = moves[bestIndex]; - moves[bestIndex] = tmp; - move = moves[movesPicked++].move; + move = moves[bestIndex].move; + moves[bestIndex] = moves[movesPicked++]; return move; } } @@ -431,11 +409,8 @@ Move MovePicker::pick_move_from_list() { bestIndex = movesPicked; if(bestIndex != -1) { - MoveStack tmp = moves[movesPicked]; - moves[movesPicked] = moves[bestIndex]; - moves[bestIndex] = tmp; - - move = moves[movesPicked++].move; + move = moves[bestIndex].move; + moves[bestIndex] = moves[movesPicked++]; // Remember to change the line below if we decide to hash the qsearch! // Maybe also postpone the legality check until after futility pruning? if(/* move != ttMove && */ pos->move_is_legal(move, pinned)) @@ -464,6 +439,9 @@ Move MovePicker::pick_move_from_list() { return MOVE_NONE; } +MovePicker::MovegenPhase MovePicker::current_move_type() const { + return PhaseTable[phaseIndex]; +} /// MovePicker::init_phase_table() initializes the PhaseTable[], /// MainSearchPhaseIndex, EvasionPhaseIndex, QsearchWithChecksPhaseIndex