X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftt.h;h=5b83399b85c9093511f229b0bf853bf4e5120051;hp=530cc4053719f168a25e5f389a82e6160eb4f6fd;hb=2572055c87f04832e43d63f30f26de04cadb729c;hpb=de0c9e84ca6e41d5cb7c9691edc5918d417c265d diff --git a/src/tt.h b/src/tt.h index 530cc405..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,12 +66,16 @@ 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_; }; @@ -77,12 +83,12 @@ private: 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();