-
-/// TranspositionTable::retrieve looks up the current position in the
-/// transposition table. Returns a pointer to the TTEntry or NULL
-/// if position is not found.
-
-TTEntry* TranspositionTable::retrieve(const Key posKey) const {
-
- uint32_t posKey32 = posKey >> 32;
- TTEntry* tte = first_entry(posKey);
-
- for (int i = 0; i < ClusterSize; i++, tte++)
- if (tte->key() == posKey32)
- return tte;
-
- return NULL;
-}
-
-
-/// TranspositionTable::prefetch looks up the current position in the
-/// transposition table and load it in L1/L2 cache. This is a non
-/// blocking function and do not stalls the CPU waiting for data
-/// to be loaded from RAM, that can be very slow. When we will
-/// subsequently call retrieve() the TT data will be already
-/// quickly accessible in L1/l2 CPU cache.
-
-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