summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
7f2eb10)
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
Key enpassant[FILE_NB];
Key castling[CASTLING_RIGHT_NB];
Key side;
Key enpassant[FILE_NB];
Key castling[CASTLING_RIGHT_NB];
Key side;
-Key Position::exclusion_key() const { return st->key ^ Zobrist::exclusion; }
-
namespace {
const string PieceToChar(" PNBRQK pnbrqk");
namespace {
const string PieceToChar(" PNBRQK pnbrqk");
}
Zobrist::side = rng.rand<Key>();
}
Zobrist::side = rng.rand<Key>();
- Zobrist::exclusion = rng.rand<Key>();
// Accessing hash keys
Key key() const;
Key key_after(Move m) const;
// Accessing hash keys
Key key() const;
Key key_after(Move m) const;
- Key exclusion_key() const;
Key material_key() const;
Key pawn_key() const;
Key material_key() const;
Key pawn_key() const;
// search to overwrite a previous full search TT value, so we use a different
// position key in case of an excluded move.
excludedMove = ss->excludedMove;
// search to overwrite a previous full search TT value, so we use a different
// position key in case of an excluded move.
excludedMove = ss->excludedMove;
- posKey = excludedMove ? pos.exclusion_key() : pos.key();
+ posKey = pos.key() ^ Key(excludedMove);
tte = TT.probe(posKey, ttHit);
ttValue = ttHit ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE;
ttMove = rootNode ? thisThread->rootMoves[thisThread->PVIdx].pv[0]
tte = TT.probe(posKey, ttHit);
ttValue = ttHit ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE;
ttMove = rootNode ? thisThread->rootMoves[thisThread->PVIdx].pv[0]