From: Marco Costalba Date: Sun, 9 Dec 2012 12:43:04 +0000 (+0100) Subject: Ensure valueLower <= valueUpper X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=da98a45bcb643addc52333ff29fcfb20aa6872ff Ensure valueLower <= valueUpper In case a TTEntry stores both an upper and a lower bound ensure that upper bound is not smaller than lower bound. bench 1813815 --- diff --git a/src/tt.h b/src/tt.h index 6c7caf75..c41f231e 100644 --- a/src/tt.h +++ b/src/tt.h @@ -59,20 +59,38 @@ public: void update(Value v, Bound b, Depth d, Move m, int g) { move16 = (uint16_t)m; - bound |= (uint8_t)b; generation8 = (uint8_t)g; + if (bound == BOUND_EXACT) + bound = BOUND_UPPER | BOUND_LOWER; // Drop 'EXACT' flag + if (b & BOUND_UPPER) { valueUpper = (int16_t)v; depthUpper = (int16_t)d; + + if ((bound & BOUND_LOWER) && v < valueLower) + { + bound ^= BOUND_LOWER; + valueLower = VALUE_NONE; + depthLower = DEPTH_NONE; + } } if (b & BOUND_LOWER) { valueLower = (int16_t)v; depthLower = (int16_t)d; + + if ((bound & BOUND_UPPER) && v > valueUpper) + { + bound ^= BOUND_UPPER; + valueUpper = VALUE_NONE; + depthUpper = DEPTH_NONE; + } } + + bound |= (uint8_t)b; } void set_generation(int g) { generation8 = (uint8_t)g; }