1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-07-11 19:49:14 +00:00

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
This commit is contained in:
Marco Costalba 2012-12-09 13:43:04 +01:00
parent feeafb0a50
commit da98a45bcb

View file

@ -59,20 +59,38 @@ public:
void update(Value v, Bound b, Depth d, Move m, int g) { void update(Value v, Bound b, Depth d, Move m, int g) {
move16 = (uint16_t)m; move16 = (uint16_t)m;
bound |= (uint8_t)b;
generation8 = (uint8_t)g; generation8 = (uint8_t)g;
if (bound == BOUND_EXACT)
bound = BOUND_UPPER | BOUND_LOWER; // Drop 'EXACT' flag
if (b & BOUND_UPPER) if (b & BOUND_UPPER)
{ {
valueUpper = (int16_t)v; valueUpper = (int16_t)v;
depthUpper = (int16_t)d; depthUpper = (int16_t)d;
if ((bound & BOUND_LOWER) && v < valueLower)
{
bound ^= BOUND_LOWER;
valueLower = VALUE_NONE;
depthLower = DEPTH_NONE;
}
} }
if (b & BOUND_LOWER) if (b & BOUND_LOWER)
{ {
valueLower = (int16_t)v; valueLower = (int16_t)v;
depthLower = (int16_t)d; 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; } void set_generation(int g) { generation8 = (uint8_t)g; }