/// which can be quite slow.
#ifdef NO_PREFETCH
-void prefetch(char*) {}
+void prefetch(void*) {}
#else
-void prefetch(char* addr) {
+void prefetch(void* addr) {
# if defined(__INTEL_COMPILER)
// This hack prevents prefetches from being optimized away by
# endif
# if defined(__INTEL_COMPILER) || defined(_MSC_VER)
- _mm_prefetch(addr, _MM_HINT_T0);
+ _mm_prefetch((char*)addr, _MM_HINT_T0);
# else
__builtin_prefetch(addr);
# endif
#include "types.h"
const std::string engine_info(bool to_uci = false);
-void prefetch(char* addr);
+void prefetch(void* addr);
void start_logger(bool b);
void dbg_hit_on(bool b);
// Update material hash key and prefetch access to materialTable
k ^= Zobrist::psq[them][captured][capsq];
st->materialKey ^= Zobrist::psq[them][captured][pieceCount[them][captured]];
- prefetch((char*)thisThread->materialTable[st->materialKey]);
+ prefetch(thisThread->materialTable[st->materialKey]);
// Update incremental scores
st->psq -= psq[them][captured][capsq];
// Update pawn hash key and prefetch access to pawnsTable
st->pawnKey ^= Zobrist::psq[us][PAWN][from] ^ Zobrist::psq[us][PAWN][to];
- prefetch((char*)thisThread->pawnsTable[st->pawnKey]);
+ prefetch(thisThread->pawnsTable[st->pawnKey]);
// Reset rule 50 draw counter
st->rule50 = 0;
}
st->key ^= Zobrist::side;
- prefetch((char*)TT.first_entry(st->key));
+ prefetch(TT.first_entry(st->key));
++st->rule50;
st->pliesFromNull = 0;
}
// Speculative prefetch as early as possible
- prefetch((char*)TT.first_entry(pos.key_after(move)));
+ prefetch(TT.first_entry(pos.key_after(move)));
// Check for legality just before making the move
if (!RootNode && !SpNode && !pos.legal(move, ci.pinned))
continue;
// Speculative prefetch as early as possible
- prefetch((char*)TT.first_entry(pos.key_after(move)));
+ prefetch(TT.first_entry(pos.key_after(move)));
// Check for legality just before making the move
if (!pos.legal(move, ci.pinned))