1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 16:53:09 +00:00

Synchronize variable listing of 4 different search routines

search() is used as a "leading star" and other routines
are modified according to it.

No functional change

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Joona Kiiski 2010-02-25 13:52:03 +02:00 committed by Marco Costalba
parent 7bcd97933a
commit 3888d14bd4

View file

@ -1039,14 +1039,16 @@ namespace {
assert(threadID >= 0 && threadID < TM.active_threads()); assert(threadID >= 0 && threadID < TM.active_threads());
Move movesSearched[256]; Move movesSearched[256];
EvalInfo ei;
StateInfo st; StateInfo st;
const TTEntry* tte; const TTEntry* tte;
Move ttMove, move; Move ttMove, move;
Depth ext, newDepth; Depth ext, newDepth;
Value oldAlpha, value; Value bestValue, value, oldAlpha;
bool isCheck, mateThreat, singleEvasion, moveIsCheck, captureOrPromotion, dangerous; bool isCheck, singleEvasion, moveIsCheck, captureOrPromotion, dangerous;
bool mateThreat = false;
int moveCount = 0; int moveCount = 0;
Value bestValue = value = -VALUE_INFINITE; bestValue = value = -VALUE_INFINITE;
if (depth < OnePly) if (depth < OnePly)
return qsearch(pos, ss, alpha, beta, Depth(0), ply, threadID); return qsearch(pos, ss, alpha, beta, Depth(0), ply, threadID);
@ -1085,7 +1087,6 @@ namespace {
isCheck = pos.is_check(); isCheck = pos.is_check();
if (!isCheck) if (!isCheck)
{ {
EvalInfo ei;
ss[ply].eval = evaluate(pos, ei, threadID); ss[ply].eval = evaluate(pos, ei, threadID);
update_gains(pos, ss[ply - 1].currentMove, ss[ply - 1].eval, ss[ply].eval); update_gains(pos, ss[ply - 1].currentMove, ss[ply - 1].eval, ss[ply].eval);
} }
@ -1778,20 +1779,25 @@ namespace {
// splitting, we don't have to repeat all this work in sp_search(). We // splitting, we don't have to repeat all this work in sp_search(). We
// also don't need to store anything to the hash table here: This is taken // also don't need to store anything to the hash table here: This is taken
// care of after we return from the split point. // care of after we return from the split point.
// FIXME: We are currently ignoring mateThreat flag here
void sp_search(SplitPoint* sp, int threadID) { void sp_search(SplitPoint* sp, int threadID) {
assert(threadID >= 0 && threadID < TM.active_threads()); assert(threadID >= 0 && threadID < TM.active_threads());
assert(TM.active_threads() > 1); assert(TM.active_threads() > 1);
StateInfo st;
Move move;
Depth ext, newDepth;
Value value, futilityValueScaled;
bool isCheck, moveIsCheck, captureOrPromotion, dangerous;
int moveCount;
value = -VALUE_INFINITE;
Position pos(*sp->pos); Position pos(*sp->pos);
CheckInfo ci(pos); CheckInfo ci(pos);
SearchStack* ss = sp->sstack[threadID]; SearchStack* ss = sp->sstack[threadID];
StateInfo st; isCheck = pos.is_check();
Value value = -VALUE_INFINITE;
Move move;
int moveCount;
bool isCheck = pos.is_check();
// Step 10. Loop through moves // Step 10. Loop through moves
// Loop through all legal moves until no moves remain or a beta cutoff occurs // Loop through all legal moves until no moves remain or a beta cutoff occurs
@ -1806,13 +1812,12 @@ namespace {
assert(move_is_ok(move)); assert(move_is_ok(move));
bool moveIsCheck = pos.move_is_check(move, ci); moveIsCheck = pos.move_is_check(move, ci);
bool captureOrPromotion = pos.move_is_capture_or_promotion(move); captureOrPromotion = pos.move_is_capture_or_promotion(move);
// Step 11. Decide the new search depth // Step 11. Decide the new search depth
bool dangerous; ext = extension(pos, move, false, captureOrPromotion, moveIsCheck, false, false, &dangerous);
Depth ext = extension(pos, move, false, captureOrPromotion, moveIsCheck, false, false, &dangerous); newDepth = sp->depth - OnePly + ext;
Depth newDepth = sp->depth - OnePly + ext;
// Update current move // Update current move
ss[sp->ply].currentMove = move; ss[sp->ply].currentMove = move;
@ -1834,7 +1839,7 @@ namespace {
// Value based pruning // Value based pruning
Depth predictedDepth = newDepth - nonpv_reduction(sp->depth, moveCount); Depth predictedDepth = newDepth - nonpv_reduction(sp->depth, moveCount);
Value futilityValueScaled = ss[sp->ply].eval + futility_margin(predictedDepth, moveCount) futilityValueScaled = ss[sp->ply].eval + futility_margin(predictedDepth, moveCount)
+ H.gain(pos.piece_on(move_from(move)), move_to(move)) + 45; + H.gain(pos.piece_on(move_from(move)), move_to(move)) + 45;
if (futilityValueScaled < sp->beta) if (futilityValueScaled < sp->beta)
@ -1909,19 +1914,24 @@ namespace {
// don't have to repeat all this work in sp_search_pv(). We also don't // don't have to repeat all this work in sp_search_pv(). We also don't
// need to store anything to the hash table here: This is taken care of // need to store anything to the hash table here: This is taken care of
// after we return from the split point. // after we return from the split point.
// FIXME: We are ignoring mateThreat flag!
void sp_search_pv(SplitPoint* sp, int threadID) { void sp_search_pv(SplitPoint* sp, int threadID) {
assert(threadID >= 0 && threadID < TM.active_threads()); assert(threadID >= 0 && threadID < TM.active_threads());
assert(TM.active_threads() > 1); assert(TM.active_threads() > 1);
StateInfo st;
Move move;
Depth ext, newDepth;
Value value;
bool moveIsCheck, captureOrPromotion, dangerous;
int moveCount;
value = -VALUE_INFINITE;
Position pos(*sp->pos); Position pos(*sp->pos);
CheckInfo ci(pos); CheckInfo ci(pos);
SearchStack* ss = sp->sstack[threadID]; SearchStack* ss = sp->sstack[threadID];
StateInfo st;
Value value = -VALUE_INFINITE;
int moveCount;
Move move;
// Step 10. Loop through moves // Step 10. Loop through moves
// Loop through all legal moves until no moves remain or a beta cutoff occurs // Loop through all legal moves until no moves remain or a beta cutoff occurs
@ -1936,13 +1946,12 @@ namespace {
assert(move_is_ok(move)); assert(move_is_ok(move));
bool moveIsCheck = pos.move_is_check(move, ci); moveIsCheck = pos.move_is_check(move, ci);
bool captureOrPromotion = pos.move_is_capture_or_promotion(move); captureOrPromotion = pos.move_is_capture_or_promotion(move);
// Step 11. Decide the new search depth // Step 11. Decide the new search depth
bool dangerous; ext = extension(pos, move, true, captureOrPromotion, moveIsCheck, false, false, &dangerous);
Depth ext = extension(pos, move, true, captureOrPromotion, moveIsCheck, false, false, &dangerous); newDepth = sp->depth - OnePly + ext;
Depth newDepth = sp->depth - OnePly + ext;
// Update current move // Update current move
ss[sp->ply].currentMove = move; ss[sp->ply].currentMove = move;