diff --git a/src/misc.cpp b/src/misc.cpp index 360bd216..11833440 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -205,6 +205,12 @@ void prefetch(void* addr) { #endif +void prefetch2(void* addr) { + + prefetch(addr); + prefetch((uint8_t*)addr + 64); +} + namespace WinProcGroup { #ifndef _WIN32 diff --git a/src/misc.h b/src/misc.h index 72be1ee4..b63e613f 100644 --- a/src/misc.h +++ b/src/misc.h @@ -31,6 +31,7 @@ const std::string engine_info(bool to_uci = false); void prefetch(void* addr); +void prefetch2(void* addr); void start_logger(const std::string& fname); void dbg_hit_on(bool b); diff --git a/src/position.cpp b/src/position.cpp index 40890acf..e20c822f 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -827,7 +827,7 @@ void Position::do_move(Move m, StateInfo& newSt, bool givesCheck) { // Update pawn hash key and prefetch access to pawnsTable st->pawnKey ^= Zobrist::psq[pc][from] ^ Zobrist::psq[pc][to]; - prefetch(thisThread->pawnsTable[st->pawnKey]); + prefetch2(thisThread->pawnsTable[st->pawnKey]); // Reset rule 50 draw counter st->rule50 = 0;