- /// Variables
-
- MovePicker::MovegenPhase PhaseTable[32];
- int MainSearchPhaseIndex;
- int EvasionsPhaseIndex;
- int QsearchWithChecksPhaseIndex;
- int QsearchWithoutChecksPhaseIndex;
-
+ enum MovegenPhase {
+ PH_TT_MOVE, // Transposition table move
+ PH_GOOD_CAPTURES, // Queen promotions and captures with SEE values >= captureThreshold (captureThreshold <= 0)
+ PH_GOOD_PROBCUT, // Queen promotions and captures with SEE values > captureThreshold (captureThreshold >= 0)
+ PH_KILLERS, // Killer moves from the current ply
+ PH_NONCAPTURES_1, // Non-captures and underpromotions with positive score
+ PH_NONCAPTURES_2, // Non-captures and underpromotions with non-positive score
+ PH_BAD_CAPTURES, // Queen promotions and captures with SEE values < captureThreshold (captureThreshold <= 0)
+ PH_EVASIONS, // Check evasions
+ PH_QCAPTURES, // Captures in quiescence search
+ PH_QRECAPTURES, // Recaptures in quiescence search
+ PH_QCHECKS, // Non-capture checks in quiescence search
+ PH_STOP
+ };
+
+ CACHE_LINE_ALIGNMENT
+ const uint8_t MainSearchTable[] = { PH_TT_MOVE, PH_GOOD_CAPTURES, PH_KILLERS, PH_NONCAPTURES_1, PH_NONCAPTURES_2, PH_BAD_CAPTURES, PH_STOP };
+ const uint8_t EvasionTable[] = { PH_TT_MOVE, PH_EVASIONS, PH_STOP };
+ const uint8_t QsearchWithChecksTable[] = { PH_TT_MOVE, PH_QCAPTURES, PH_QCHECKS, PH_STOP };
+ const uint8_t QsearchWithoutChecksTable[] = { PH_TT_MOVE, PH_QCAPTURES, PH_STOP };
+ const uint8_t QsearchRecapturesTable[] = { PH_TT_MOVE, PH_QRECAPTURES, PH_STOP };
+ const uint8_t ProbCutTable[] = { PH_TT_MOVE, PH_GOOD_PROBCUT, PH_STOP };