X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftt.h;h=5b83399b85c9093511f229b0bf853bf4e5120051;hp=272e752b3157c6237fd62fb5fc3cc992cef86740;hb=2572055c87f04832e43d63f30f26de04cadb729c;hpb=9fc602bae74b8e09bd45ace3b42a8ce84d56b23c diff --git a/src/tt.h b/src/tt.h index 272e752b..5b83399b 100644 --- a/src/tt.h +++ b/src/tt.h @@ -54,9 +54,11 @@ class TTEntry { public: TTEntry() {} - TTEntry(uint32_t k, Value v, ValueType t, Depth d, Move m, int generation) + TTEntry(uint32_t k, Value v, ValueType t, Depth d, Move m, int generation, + Value statV, Value kingD) : key_ (k), data((m & 0x1FFFF) | (t << 20) | (generation << 23)), - value_(int16_t(v)), depth_(int16_t(d)) {} + value_(int16_t(v)), depth_(int16_t(d)), + staticValue_(int16_t(statV)), kingDanger_(int16_t(kingD)) {} uint32_t key() const { return key_; } Depth depth() const { return Depth(depth_); } @@ -64,25 +66,29 @@ public: Value value() const { return Value(value_); } ValueType type() const { return ValueType((data >> 20) & 7); } int generation() const { return (data >> 23); } + Value static_value() const { return Value(staticValue_); } + Value king_danger() const { return Value(kingDanger_); } private: uint32_t key_; uint32_t data; int16_t value_; int16_t depth_; + int16_t staticValue_; + int16_t kingDanger_; }; /// This is the number of TTEntry slots for each position -const int ClusterSize = 5; +const int ClusterSize = 4; /// Each group of ClusterSize number of TTEntry form a TTCluster -/// that is indexed by a single position key. Cluster is padded -/// to a cache line size so to guarantee always aligned accesses. +/// that is indexed by a single position key. TTCluster size must +// be not bigger then a cache line size, in case it is less then +/// it should be padded to guarantee always aligned accesses. struct TTCluster { TTEntry data[ClusterSize]; - char cache_line_padding[64 - sizeof(TTEntry[ClusterSize])]; }; @@ -97,7 +103,7 @@ public: ~TranspositionTable(); void set_size(size_t mbSize); void clear(); - void store(const Key posKey, Value v, ValueType type, Depth d, Move m); + void store(const Key posKey, Value v, ValueType type, Depth d, Move m, Value statV, Value kingD); TTEntry* retrieve(const Key posKey) const; void prefetch(const Key posKey) const; void new_search();