Skip to content

Commit eaeb63f

Browse files
mstemberazamar
authored andcommitted
Smart TT save
Don't overwrite more valuable data with less valuable data STC 2MB LLR: 2.96 (-2.94,2.94) [-1.50,4.50] Total: 21132 W: 4108 L: 3946 D: 13078 http://tests.stockfishchess.org/tests/view/5547d59f0ebc5940ca5d6883 LTC 8MB LLR: 2.97 (-2.94,2.94) [0.00,6.00] Total: 13381 W: 2149 L: 1987 D: 9245 http://tests.stockfishchess.org/tests/view/5549b5a80ebc5940ca5d68b9 STC 16MB regression w/ zero effective hash pressure LLR: 2.96 (-2.94,2.94) [-5.00,0.00] Total: 18944 W: 3607 L: 3564 D: 11773 http://tests.stockfishchess.org/tests/view/554b0fda0ebc5940ca5d68ea Bench: 8787152 Resolves #347
1 parent 92dbee7 commit eaeb63f

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

src/tt.h

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,34 @@ struct TTEntry {
4343

4444
void save(Key k, Value v, Bound b, Depth d, Move m, Value ev, uint8_t g) {
4545

46-
if (m || (k >> 48) != key16) // Preserve any existing move for the same position
47-
move16 = (uint16_t)m;
48-
49-
key16 = (uint16_t)(k >> 48);
50-
value16 = (int16_t)v;
51-
eval16 = (int16_t)ev;
52-
genBound8 = (uint8_t)(g | b);
53-
depth8 = (int8_t)d;
46+
if (key16 != (k >> 48))
47+
{
48+
key16 = (uint16_t)(k >> 48);
49+
move16 = (uint16_t)m;
50+
value16 = (int16_t)v;
51+
eval16 = (int16_t)ev;
52+
genBound8 = (uint8_t)(g | b);
53+
depth8 = (int8_t)d;
54+
}
55+
else
56+
{
57+
// Preserve any existing move for the same position
58+
if (m)
59+
move16 = (uint16_t)m;
60+
61+
// Don't overwrite more valuable values
62+
if ( d + 2 > depth8
63+
|| g != (genBound8 & 0xFC)
64+
|| b == BOUND_EXACT)
65+
{
66+
value16 = (int16_t)v;
67+
genBound8 = (uint8_t)(g | b);
68+
depth8 = (int8_t)d;
69+
}
70+
71+
if (ev != VALUE_NONE)
72+
eval16 = (int16_t)ev;
73+
}
5474
}
5575

5676
private:

0 commit comments

Comments
 (0)