]> git.sesse.net Git - stockfish/blobdiff - src/tt.h
TTEntry simplification
[stockfish] / src / tt.h
index d7f57cc098d117be657234a516ca8d3494af62ac..94ee78e70f233f9126bee035e1213403551bee8f 100644 (file)
--- a/src/tt.h
+++ b/src/tt.h
@@ -21,9 +21,7 @@
 #if !defined(TT_H_INCLUDED)
 #define TT_H_INCLUDED
 
-////
-//// Includes
-////
+#include <iostream>
 
 #include "depth.h"
 #include "move.h"
@@ -80,41 +78,45 @@ protected:
 ///
 /// the 32 bits of the data field are so defined
 ///
-/// bit  0-16: move
-/// bit 17-20: not used
+/// bit  0-15: move
+/// bit 16-20: not used
 /// bit 21-22: value type
 /// bit 23-31: generation
 
 class TTEntry {
 
 public:
-  void save(uint32_t k, Value v, ValueType t, Depth d, Move m, int g, Value statV, Value kd) {
-
-      key32 = k;
-      data = (m & 0x1FFFF) | (t << 21) | (g << 23);
-      value16     = (int16_t)v;
-      depth16     = (int16_t)d;
-      staticValue = (int16_t)statV;
-      staticValueMargin  = (int16_t)kd;
+  void save(uint32_t k, Value v, ValueType t, Depth d, Move m, int g, Value statV, Value statM) {
+
+    key32        = (uint32_t)k;
+    move16       = (uint16_t)m;
+    valueType    = (uint8_t)t;
+    generation8  = (uint8_t)g;
+    value16      = (int16_t)v;
+    depth16      = (int16_t)d;
+    staticValue  = (int16_t)statV;
+    staticMargin = (int16_t)statM;
   }
-  void set_generation(int g) { data = move() | (type() << 21) | (g << 23); }
+  void set_generation(int g) { generation8 = (uint8_t)g; }
 
   uint32_t key() const { return key32; }
   Depth depth() const { return Depth(depth16); }
-  Move move() const { return Move(data & 0x1FFFF); }
+  Move move() const { return Move(move16); }
   Value value() const { return Value(value16); }
-  ValueType type() const { return ValueType((data >> 21) & 3); }
-  int generation() const { return data >> 23; }
+  ValueType type() const { return ValueType(valueType); }
+  int generation() const { return generation8; }
   Value static_value() const { return Value(staticValue); }
-  Value static_value_margin() const { return Value(staticValueMargin); }
+  Value static_value_margin() const { return Value(staticMargin); }
 
 private:
   uint32_t key32;
-  uint32_t data;
+  uint16_t move16;
+  uint8_t valueType;
+  uint8_t generation8;
   int16_t value16;
   int16_t depth16;
   int16_t staticValue;
-  int16_t staticValueMargin;
+  int16_t staticMargin;
 };