X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftt.cpp;h=e140a0ba10ec5fa2183b506b68750a4dcbc39289;hp=5ea6a808acf86b2ad256f8715bf5c59772e015b1;hb=fd12e8cb239180607559bb805e233f7ea704a67c;hpb=166c09a7a0eafb706a961d6533c73cc248f6df94 diff --git a/src/tt.cpp b/src/tt.cpp index 5ea6a808..e140a0ba 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; @@ -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 }