From a705ab775b977daeeed0253cd3df30085d86b970 Mon Sep 17 00:00:00 2001 From: cohcho Date: Wed, 7 Oct 2020 14:47:18 +0000 Subject: [PATCH] RandomX: align args tempHash/output must be 16-byte aligned for randomx_calculate_hash{,_first,_next} --- src/backend/cpu/CpuWorker.cpp | 2 +- src/backend/cpu/CpuWorker.h | 2 +- src/crypto/randomx/aes_hash.cpp | 4 ++-- src/net/JobResults.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/backend/cpu/CpuWorker.cpp b/src/backend/cpu/CpuWorker.cpp index bb2ca0f62..fa0b96b03 100644 --- a/src/backend/cpu/CpuWorker.cpp +++ b/src/backend/cpu/CpuWorker.cpp @@ -215,7 +215,7 @@ void xmrig::CpuWorker::start() # ifdef XMRIG_ALGO_RANDOMX bool first = true; - uint64_t tempHash[8] = {}; + alignas(16) uint64_t tempHash[8] = {}; // RandomX is faster, we don't need to store stats so often if (m_job.currentJob().algorithm().family() == Algorithm::RANDOM_X) { diff --git a/src/backend/cpu/CpuWorker.h b/src/backend/cpu/CpuWorker.h index 44e53712a..4f96d7e2a 100644 --- a/src/backend/cpu/CpuWorker.h +++ b/src/backend/cpu/CpuWorker.h @@ -82,7 +82,7 @@ private: const int m_astrobwtMaxSize; const Miner *m_miner; cryptonight_ctx *m_ctx[N]; - uint8_t m_hash[N * 32]{ 0 }; + alignas(16) uint8_t m_hash[N * 32]{ 0 }; VirtualMemory *m_memory = nullptr; WorkerJob m_job; diff --git a/src/crypto/randomx/aes_hash.cpp b/src/crypto/randomx/aes_hash.cpp index bed473b7b..6697a4edc 100644 --- a/src/crypto/randomx/aes_hash.cpp +++ b/src/crypto/randomx/aes_hash.cpp @@ -387,8 +387,8 @@ void SelectSoftAESImpl(size_t threadsCount) for (size_t t = 0; t < threadsCount; ++t) { threads.emplace_back([&, t]() { std::vector scratchpad(10 * 1024); - uint8_t hash[64] = {}; - uint8_t state[64] = {}; + alignas(16) uint8_t hash[64] = {}; + alignas(16) uint8_t state[64] = {}; do { (*impl[i])(scratchpad.data(), scratchpad.size(), hash, state); ++count[t]; diff --git a/src/net/JobResults.cpp b/src/net/JobResults.cpp index 66502bad0..06118657f 100644 --- a/src/net/JobResults.cpp +++ b/src/net/JobResults.cpp @@ -114,7 +114,7 @@ static void getResults(JobBundle &bundle, std::vector &results, uint3 { const auto &algorithm = bundle.job.algorithm(); auto memory = new VirtualMemory(algorithm.l3(), false, false, false); - uint8_t hash[32]{ 0 }; + alignas(16) uint8_t hash[32]{ 0 }; if (algorithm.family() == Algorithm::RANDOM_X) { # ifdef XMRIG_ALGO_RANDOMX