mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-20 09:06:45 +08:00
Change exclusion key setup
Should depend on which move is excluded. This allow us to remove the dedicated Position::exclusion_key(). STC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 59814 W: 11136 L: 11083 D: 37595 LTC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 31023 W: 4187 L: 4080 D: 22756 bench 7553379
This commit is contained in:
@@ -40,11 +40,8 @@ namespace Zobrist {
|
|||||||
Key enpassant[FILE_NB];
|
Key enpassant[FILE_NB];
|
||||||
Key castling[CASTLING_RIGHT_NB];
|
Key castling[CASTLING_RIGHT_NB];
|
||||||
Key side;
|
Key side;
|
||||||
Key exclusion;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Key Position::exclusion_key() const { return st->key ^ Zobrist::exclusion; }
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
const string PieceToChar(" PNBRQK pnbrqk");
|
const string PieceToChar(" PNBRQK pnbrqk");
|
||||||
@@ -132,7 +129,6 @@ void Position::init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Zobrist::side = rng.rand<Key>();
|
Zobrist::side = rng.rand<Key>();
|
||||||
Zobrist::exclusion = rng.rand<Key>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,6 @@ public:
|
|||||||
// Accessing hash keys
|
// Accessing hash keys
|
||||||
Key key() const;
|
Key key() const;
|
||||||
Key key_after(Move m) const;
|
Key key_after(Move m) const;
|
||||||
Key exclusion_key() const;
|
|
||||||
Key material_key() const;
|
Key material_key() const;
|
||||||
Key pawn_key() const;
|
Key pawn_key() const;
|
||||||
|
|
||||||
|
|||||||
@@ -622,7 +622,7 @@ namespace {
|
|||||||
// search to overwrite a previous full search TT value, so we use a different
|
// search to overwrite a previous full search TT value, so we use a different
|
||||||
// position key in case of an excluded move.
|
// position key in case of an excluded move.
|
||||||
excludedMove = ss->excludedMove;
|
excludedMove = ss->excludedMove;
|
||||||
posKey = excludedMove ? pos.exclusion_key() : pos.key();
|
posKey = pos.key() ^ Key(excludedMove);
|
||||||
tte = TT.probe(posKey, ttHit);
|
tte = TT.probe(posKey, ttHit);
|
||||||
ttValue = ttHit ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE;
|
ttValue = ttHit ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE;
|
||||||
ttMove = rootNode ? thisThread->rootMoves[thisThread->PVIdx].pv[0]
|
ttMove = rootNode ? thisThread->rootMoves[thisThread->PVIdx].pv[0]
|
||||||
|
|||||||
Reference in New Issue
Block a user