-#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__ ("");