diff options
author | fireice-uk <fireice-uk@users.noreply.github.com> | 2018-01-03 07:52:56 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-03 07:52:56 +0000 |
commit | c88e76d9a9b978ba93050dca783294223cb7ba9a (patch) | |
tree | 836848a41d93e470e1072c7c36f815e161a22ac6 /xmrstak/backend/cpu | |
parent | e275b4cb9802096d1e1c172a69b8ba57727ef08d (diff) | |
parent | b38aa0743813007cb4d1672b55ac334ebd472dd9 (diff) | |
download | xmr-stak-c88e76d9a9b978ba93050dca783294223cb7ba9a.zip xmr-stak-c88e76d9a9b978ba93050dca783294223cb7ba9a.tar.gz |
Merge pull request #705 from dataway/dev
Rearrange prefetch for slight performance increase in CPU miner
Diffstat (limited to 'xmrstak/backend/cpu')
-rw-r--r-- | xmrstak/backend/cpu/crypto/cryptonight_aesni.h | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/xmrstak/backend/cpu/crypto/cryptonight_aesni.h b/xmrstak/backend/cpu/crypto/cryptonight_aesni.h index 9b6e1dc..e4ccbc3 100644 --- a/xmrstak/backend/cpu/crypto/cryptonight_aesni.h +++ b/xmrstak/backend/cpu/crypto/cryptonight_aesni.h @@ -317,10 +317,9 @@ void cryptonight_hash(const void* input, size_t len, void* output, cryptonight_c _mm_store_si128((__m128i *)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx)); idx0 = _mm_cvtsi128_si64(cx); - bx0 = cx; - if(PREFETCH) _mm_prefetch((const char*)&l0[idx0 & MASK], _MM_HINT_T0); + bx0 = cx; uint64_t hi, lo, cl, ch; cl = ((uint64_t*)&l0[idx0 & MASK])[0]; @@ -329,15 +328,15 @@ void cryptonight_hash(const void* input, size_t len, void* output, cryptonight_c lo = _umul128(idx0, cl, &hi); al0 += hi; - ah0 += lo; ((uint64_t*)&l0[idx0 & MASK])[0] = al0; + al0 ^= cl; + if(PREFETCH) + _mm_prefetch((const char*)&l0[al0 & MASK], _MM_HINT_T0); + ah0 += lo; ((uint64_t*)&l0[idx0 & MASK])[1] = ah0; ah0 ^= ch; - al0 ^= cl; - idx0 = al0; - if(PREFETCH) - _mm_prefetch((const char*)&l0[idx0 & MASK], _MM_HINT_T0); + idx0 = al0; } // Optim - 90% time boundary |