Added support for cn-lite/ipbc.

This commit is contained in:
XMRig 2018-04-25 18:31:18 +07:00
parent ca149d2eed
commit ba5f92c6dd
4 changed files with 96 additions and 18 deletions

View file

@ -62,9 +62,9 @@ bool xmrig::CpuThread::isSoftAES(AlgoVariant av)
xmrig::CpuThread::cn_hash_fun xmrig::CpuThread::fn(Algo algorithm, AlgoVariant av, Variant variant)
{
assert(variant == VARIANT_0 || variant == VARIANT_1);
assert(variant == VARIANT_0 || variant == VARIANT_1 || variant == VARIANT_IBPC || variant == VARIANT_XTL);
static const cn_hash_fun func_table[50] = {
static const cn_hash_fun func_table[90] = {
cryptonight_single_hash<CRYPTONIGHT, false, VARIANT_0>,
cryptonight_double_hash<CRYPTONIGHT, false, VARIANT_0>,
cryptonight_single_hash<CRYPTONIGHT, true, VARIANT_0>,
@ -87,6 +87,19 @@ xmrig::CpuThread::cn_hash_fun xmrig::CpuThread::fn(Algo algorithm, AlgoVariant a
cryptonight_quad_hash<CRYPTONIGHT, true, VARIANT_1>,
cryptonight_penta_hash<CRYPTONIGHT, true, VARIANT_1>,
nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
cryptonight_single_hash<CRYPTONIGHT, false, VARIANT_XTL>,
cryptonight_double_hash<CRYPTONIGHT, false, VARIANT_XTL>,
cryptonight_single_hash<CRYPTONIGHT, true, VARIANT_XTL>,
cryptonight_double_hash<CRYPTONIGHT, true, VARIANT_XTL>,
cryptonight_triple_hash<CRYPTONIGHT, false, VARIANT_XTL>,
cryptonight_quad_hash<CRYPTONIGHT, false, VARIANT_XTL>,
cryptonight_penta_hash<CRYPTONIGHT, false, VARIANT_XTL>,
cryptonight_triple_hash<CRYPTONIGHT, true, VARIANT_XTL>,
cryptonight_quad_hash<CRYPTONIGHT, true, VARIANT_XTL>,
cryptonight_penta_hash<CRYPTONIGHT, true, VARIANT_XTL>,
# ifndef XMRIG_NO_AEON
cryptonight_single_hash<CRYPTONIGHT_LITE, false, VARIANT_0>,
cryptonight_double_hash<CRYPTONIGHT_LITE, false, VARIANT_0>,
@ -109,9 +122,24 @@ xmrig::CpuThread::cn_hash_fun xmrig::CpuThread::fn(Algo algorithm, AlgoVariant a
cryptonight_triple_hash<CRYPTONIGHT_LITE, true, VARIANT_1>,
cryptonight_quad_hash<CRYPTONIGHT_LITE, true, VARIANT_1>,
cryptonight_penta_hash<CRYPTONIGHT_LITE, true, VARIANT_1>,
cryptonight_single_hash<CRYPTONIGHT_LITE, false, VARIANT_IBPC>,
cryptonight_double_hash<CRYPTONIGHT_LITE, false, VARIANT_IBPC>,
cryptonight_single_hash<CRYPTONIGHT_LITE, true, VARIANT_IBPC>,
cryptonight_double_hash<CRYPTONIGHT_LITE, true, VARIANT_IBPC>,
cryptonight_triple_hash<CRYPTONIGHT_LITE, false, VARIANT_IBPC>,
cryptonight_quad_hash<CRYPTONIGHT_LITE, false, VARIANT_IBPC>,
cryptonight_penta_hash<CRYPTONIGHT_LITE, false, VARIANT_IBPC>,
cryptonight_triple_hash<CRYPTONIGHT_LITE, true, VARIANT_IBPC>,
cryptonight_quad_hash<CRYPTONIGHT_LITE, true, VARIANT_IBPC>,
cryptonight_penta_hash<CRYPTONIGHT_LITE, true, VARIANT_IBPC>,
nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
# else
nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
# endif
# ifndef XMRIG_NO_SUMO
@ -136,7 +164,7 @@ xmrig::CpuThread::cn_hash_fun xmrig::CpuThread::fn(Algo algorithm, AlgoVariant a
}
# endif
return func_table[20 * algorithm + 10 * variant + av - 1];
return func_table[40 * algorithm + 10 * variant + av - 1];
}

View file

@ -65,8 +65,12 @@ bool MultiWorker<N>::selfTest()
# ifndef XMRIG_NO_AEON
if (m_thread->algorithm() == xmrig::CRYPTONIGHT_LITE && memcmp(m_hash, test_output_v0_lite, sizeof m_hash) == 0) {
m_thread->fn(xmrig::VARIANT_1)(test_input, 76, m_hash, m_ctx);
if (memcmp(m_hash, test_output_v1_lite, sizeof m_hash) != 0) {
return false;
}
return memcmp(m_hash, test_output_v1_lite, sizeof m_hash) == 0;
m_thread->fn(xmrig::VARIANT_IBPC)(test_input, 76, m_hash, m_ctx);
return memcmp(m_hash, test_output_ipbc_lite, sizeof m_hash) == 0;
}
# endif