]> git.sesse.net Git - stockfish/blobdiff - src/tt.cpp
Avoid Intel compiler optimizes away prefetching
[stockfish] / src / tt.cpp
index 8ef2a63500acf02827028a6e485a2286881dfd6f..0396b287cc5734b9517569e1124f91ddf0fcde73 100644 (file)
 #include <cassert>
 #include <cmath>
 #include <cstring>
-#include <xmmintrin.h>
 
 #include "movegen.h"
 #include "tt.h"
 
+#if defined(_MSC_VER)
+#include <xmmintrin.h>
+#endif
 
-/// This is the number of TTEntry slots for each position
-static const int ClusterSize = 5;
+// This is the number of TTEntry slots for each position
+static const int ClusterSize = 4;
 
+// The main transposition table
+TranspositionTable TT;
 
 ////
 //// Functions
@@ -174,7 +178,14 @@ TTEntry* TranspositionTable::retrieve(const Key posKey) const {
 
 void TranspositionTable::prefetch(const Key posKey) const {
 
+#if defined(_MSC_VER)
   _mm_prefetch((char*)first_entry(posKey), _MM_HINT_T0);
+#else
+  // We need to force an asm volatile here because gcc builtin
+  // is optimized away by Intel compiler.
+  char* addr = (char*)first_entry(posKey);
+  asm volatile("prefetcht0 %0" :: "m" (addr));
+#endif
 }