From dbd373839d8843fb08f2f9d5f422c83bad36719b Mon Sep 17 00:00:00 2001 From: tevador Date: Mon, 25 Mar 2019 23:11:51 +0100 Subject: [PATCH] Native load from the cache --- src/blake2/endian.h | 6 ++++++ src/dataset.cpp | 16 ++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/blake2/endian.h b/src/blake2/endian.h index fab1eed..631f9f6 100644 --- a/src/blake2/endian.h +++ b/src/blake2/endian.h @@ -60,6 +60,12 @@ static FORCE_INLINE uint64_t load64(const void *src) { #endif } +static FORCE_INLINE uint64_t load64np(const void *src) { + uint64_t w; + memcpy(&w, src, sizeof w); + return w; +} + static FORCE_INLINE void store32(void *dst, uint32_t w) { #if defined(NATIVE_LITTLE_ENDIAN) memcpy(dst, &w, sizeof w); diff --git a/src/dataset.cpp b/src/dataset.cpp index 40e72b1..c55c918 100644 --- a/src/dataset.cpp +++ b/src/dataset.cpp @@ -57,14 +57,14 @@ namespace RandomX { } static FORCE_INLINE void mixCache(uint8_t* mixBlock, uint64_t& c0, uint64_t& c1, uint64_t& c2, uint64_t& c3, uint64_t& c4, uint64_t& c5, uint64_t& c6, uint64_t& c7) { - c0 ^= load64(mixBlock + 0); - c1 ^= load64(mixBlock + 8); - c2 ^= load64(mixBlock + 16); - c3 ^= load64(mixBlock + 24); - c4 ^= load64(mixBlock + 32); - c5 ^= load64(mixBlock + 40); - c6 ^= load64(mixBlock + 48); - c7 ^= load64(mixBlock + 56); + c0 ^= load64np(mixBlock + 0); + c1 ^= load64np(mixBlock + 8); + c2 ^= load64np(mixBlock + 16); + c3 ^= load64np(mixBlock + 24); + c4 ^= load64np(mixBlock + 32); + c5 ^= load64np(mixBlock + 40); + c6 ^= load64np(mixBlock + 48); + c7 ^= load64np(mixBlock + 56); } void initBlock(const Cache& cache, uint8_t* out, uint64_t blockNumber, unsigned iterations) {