summaryrefslogtreecommitdiffstats
path: root/xmrstak/backend/cpu/minethd.hpp
diff options
context:
space:
mode:
authorfireice-uk <fireice-uk@users.noreply.github.com>2017-12-08 16:41:35 +0000
committerGitHub <noreply@github.com>2017-12-08 16:41:35 +0000
commit241591cf10a8fa8400d951d9e74bb1d0e6721ee0 (patch)
treed6073c90215e0fdd6097ebe71ede5c6684d03d7d /xmrstak/backend/cpu/minethd.hpp
parenta142161a6982210287fe8a8408b9bee20f126b89 (diff)
parentfe6d5b7ecc7f01ee2dc0664772b789c754c18762 (diff)
downloadxmr-stak-241591cf10a8fa8400d951d9e74bb1d0e6721ee0.zip
xmr-stak-241591cf10a8fa8400d951d9e74bb1d0e6721ee0.tar.gz
Merge pull request #168 from grzegorzszczecin/master
Extend low_power_mode to do up to 5 cn hashes at a time.
Diffstat (limited to 'xmrstak/backend/cpu/minethd.hpp')
-rw-r--r--xmrstak/backend/cpu/minethd.hpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/xmrstak/backend/cpu/minethd.hpp b/xmrstak/backend/cpu/minethd.hpp
index 5520d9e..0433d0d 100644
--- a/xmrstak/backend/cpu/minethd.hpp
+++ b/xmrstak/backend/cpu/minethd.hpp
@@ -29,16 +29,24 @@ public:
static cryptonight_ctx* minethd_alloc_ctx();
private:
+ typedef void (*cn_hash_fun_multi)(const void*, size_t, void*, cryptonight_ctx**);
+ static cn_hash_fun_multi func_multi_selector(size_t N, bool bHaveAes, bool bNoPrefetch, bool mineMonero);
- typedef void (*cn_hash_fun_dbl)(const void*, size_t, void*, cryptonight_ctx* __restrict, cryptonight_ctx* __restrict);
- static cn_hash_fun_dbl func_dbl_selector(bool bHaveAes, bool bNoPrefetch, bool mineMonero);
+ minethd(miner_work& pWork, size_t iNo, int iMultiway, bool no_prefetch, int64_t affinity);
- minethd(miner_work& pWork, size_t iNo, bool double_work, bool no_prefetch, int64_t affinity);
+ template<size_t N>
+ void multiway_work_main(cn_hash_fun_multi hash_fun_multi);
+
+ template<size_t N>
+ void prep_multiway_work(uint8_t *bWorkBlob, uint32_t **piNonce);
void work_main();
void double_work_main();
+ void triple_work_main();
+ void quad_work_main();
+ void penta_work_main();
+
void consume_work();
- uint32_t* prep_double_work(uint8_t bDoubleWorkBlob[sizeof(miner_work::bWorkBlob) * 2]);
uint64_t iJobNo;
OpenPOWER on IntegriCloud