|
|
@ -246,6 +246,7 @@ namespace randomx {
|
|
|
|
|
|
|
|
|
|
|
|
mem.mx ^= r[config.readReg2] ^ r[config.readReg3];
|
|
|
|
mem.mx ^= r[config.readReg2] ^ r[config.readReg3];
|
|
|
|
mem.mx &= CacheLineAlignMask;
|
|
|
|
mem.mx &= CacheLineAlignMask;
|
|
|
|
|
|
|
|
datasetPrefetch(datasetOffset + mem.mx);
|
|
|
|
datasetRead(datasetOffset + mem.ma, r);
|
|
|
|
datasetRead(datasetOffset + mem.ma, r);
|
|
|
|
std::swap(mem.mx, mem.ma);
|
|
|
|
std::swap(mem.mx, mem.ma);
|
|
|
|
|
|
|
|
|
|
|
@ -279,6 +280,11 @@ namespace randomx {
|
|
|
|
r[i] ^= datasetLine[i];
|
|
|
|
r[i] ^= datasetLine[i];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<class Allocator, bool softAes>
|
|
|
|
|
|
|
|
void InterpretedVm<Allocator, softAes>::datasetPrefetch(uint64_t address) {
|
|
|
|
|
|
|
|
rx_prefetch_nta(mem.memory + address);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#include "instruction_weights.hpp"
|
|
|
|
#include "instruction_weights.hpp"
|
|
|
|
|
|
|
|
|
|
|
|
template<class Allocator, bool softAes>
|
|
|
|
template<class Allocator, bool softAes>
|
|
|
|