mirror of
https://github.com/sockspls/badfish
synced 2025-07-12 03:59:15 +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:
parent
feeafb0a50
commit
da98a45bcb
1 changed files with 19 additions and 1 deletions
20
src/tt.h
20
src/tt.h
|
@ -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; }
|
||||||
|
|
Loading…
Add table
Reference in a new issue