Avoid Intel compiler optimizes away prefetching
authorMarco Costalba <mcostalba@gmail.com>
Mon, 10 Aug 2009 10:59:07 +0000 (12:59 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Mon, 10 Aug 2009 12:49:12 +0000 (13:49 +0100)
Without this hack Intel compiler happily optimizes
away the gcc builtin call.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/tt.cpp

index 770e38b779d932fa2dc8df26f19dab13f79f2a3c..0396b287cc5734b9517569e1124f91ddf0fcde73 100644 (file)
@@ -181,7 +181,10 @@ void TranspositionTable::prefetch(const Key posKey) const {
 #if defined(_MSC_VER)
   _mm_prefetch((char*)first_entry(posKey), _MM_HINT_T0);
 #else
-  __builtin_prefetch((const void*)first_entry(posKey), 0, 3);
+  // 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
 }