X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftt.cpp;h=f9674601373319bdd32003429d000a8dc99ac448;hp=a9f8f037ab92925f80a62c7a26d5dfc2be7849d7;hb=7ad85fca6d0ce5a8e62be67de7ec3d396670ca74;hpb=9dbb3ae8b2c5ef4ad2b399a42707ad1fd851c68b diff --git a/src/tt.cpp b/src/tt.cpp index a9f8f037..f9674601 100644 --- a/src/tt.cpp +++ b/src/tt.cpp @@ -87,6 +87,10 @@ TTEntry* TranspositionTable::probe(const Key key, bool& found) const { // Find an entry to be replaced according to the replacement strategy TTEntry* replace = tte; for (int i = 1; i < ClusterSize; ++i) + // Due to our packed storage format for generation and its cyclic + // nature we add 259 (256 is the modulus plus 3 to keep the lowest + // two bound bits from affecting the result) to calculate the entry + // age correctly even after generation8 overflows into the next cycle. if ( replace->depth8 - ((259 + generation8 - replace->genBound8) & 0xFC) * 2 * ONE_PLY > tte[i].depth8 - ((259 + generation8 - tte[i].genBound8) & 0xFC) * 2 * ONE_PLY) replace = &tte[i];