X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftt.cpp;h=9f0e21fdea148702d098e85aa354374dfc84a684;hb=e68e135771f8ba4a94ef76b61c342bf2a52ee461;hp=5ea6a808acf86b2ad256f8715bf5c59772e015b1;hpb=166c09a7a0eafb706a961d6533c73cc248f6df94;p=stockfish diff --git a/src/tt.cpp b/src/tt.cpp index 5ea6a808..9f0e21fd 100644 --- a/src/tt.cpp +++ b/src/tt.cpp @@ -25,14 +25,11 @@ #include #include #include +#include #include "movegen.h" #include "tt.h" -#if defined(_MSC_VER) -#include -#endif - // The main transposition table TranspositionTable TT; @@ -124,8 +121,8 @@ void TranspositionTable::store(const Key posKey, Value v, ValueType t, Depth d, { if (!tte->key() || tte->key() == posKey32) // empty or overwrite old { - // Do not overwrite when new type is VALUE_TYPE_EVAL - if (tte->key() && t == VALUE_TYPE_EVAL) + // Do not overwrite when new type is VALUE_TYPE_EV_LO + if (tte->key() && t == VALUE_TYPE_EV_LO) return; if (m == MOVE_NONE) @@ -175,16 +172,15 @@ TTEntry* TranspositionTable::retrieve(const Key posKey) const { void TranspositionTable::prefetch(const Key posKey) const { -#if defined(_MSC_VER) - char* addr = (char*)first_entry(posKey); - _mm_prefetch(addr, _MM_HINT_T0); - _mm_prefetch(addr+64, _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)); +#if defined(__INTEL_COMPILER) || defined(__ICL) + // This hack prevents prefetches to be optimized away by the + // Intel compiler. Both MSVC and gcc seems not affected. + __asm__ (""); #endif + + char const* addr = (char*)first_entry(posKey); + _mm_prefetch(addr, _MM_HINT_T2); + _mm_prefetch(addr+64, _MM_HINT_T2); // 64 bytes ahead }