]> git.sesse.net Git - stockfish/blobdiff - src/tt.h
Remember when TT value equals static evaluation value
[stockfish] / src / tt.h
index 31fc1fbce5f5a5801db869c86750028f2aa2c47e..a820d94ac5181efa74789258c474a167c507ec9e 100644 (file)
--- a/src/tt.h
+++ b/src/tt.h
 //// Types
 ////
 
-/// The TTEntry class is the class of transposition table entries.
+/// The TTEntry class is the class of transposition table entries
+///
+/// A TTEntry needs 128 bits to be stored
+///
+/// bit    0-63: key
+/// bit   64-95: data
+/// bit  96-111: value
+/// bit 112-127: depth
+///
+/// the 32 bits of the data field are so defined
+///
+/// bit  0-16: move
+/// bit    17: stored value equals static value
+/// bit 18-19: not used
+/// bit 20-22: value type
+/// bit 23-31: generation
 
 class TTEntry {
 
@@ -47,6 +62,8 @@ public:
   Value value() const { return Value(value_); }
   ValueType type() const { return ValueType((data >> 20) & 7); }
   int generation() const { return (data >> 23); }
+  bool staticValue() const { return ((data >> 17) & 1); }
+  void setStaticValue() { data |= (1 << 17); }
 
 private:
   Key key_;
@@ -66,7 +83,7 @@ public:
   ~TranspositionTable();
   void set_size(unsigned mbSize);
   void clear();
-  void store(const Position &pos, Value v, Depth d, Move m, ValueType type);
+  TTEntry* store(const Position &pos, Value v, Depth d, Move m, ValueType type);
   TTEntry* retrieve(const Position &pos) const;
   void new_search();
   void insert_pv(const Position &pos, Move pv[]);