diff --git a/src/Cpu.cpp b/src/Cpu.cpp index 3e424ef3..5549705e 100644 --- a/src/Cpu.cpp +++ b/src/Cpu.cpp @@ -94,13 +94,10 @@ void CpuImpl::optimizeParameters(size_t& threadsCount, size_t& hashFactor, if (algo == Options::ALGO_CRYPTONIGHT_HEAVY || powVariant == POW_XFH) { maximumReasonableHashFactor = 3; - } else if (algo == Options::ALGO_CRYPTONIGHT_ULTRALITE) { - if (m_asmOptimization == ASM_INTEL) { - maximumReasonableHashFactor = 2; - } else { - maximumReasonableHashFactor = 1; - } + } else if (getBaseVariant(powVariant) == POW_V2 || getBaseVariant(powVariant) == POW_V4) { + maximumReasonableHashFactor = 2; } + if (safeMode) { if (threadsCount > maximumReasonableThreadCount) { threadsCount = maximumReasonableThreadCount; diff --git a/src/Options.cpp b/src/Options.cpp index 143c2340..21ea4d98 100644 --- a/src/Options.cpp +++ b/src/Options.cpp @@ -340,6 +340,8 @@ constexpr static const char *pow_variant_names[] = { "wow", "r", "xcash", + "zls", + "graft", "upx2" }; diff --git a/src/PowVariant.h b/src/PowVariant.h index dee8f945..a0c2f30e 100644 --- a/src/PowVariant.h +++ b/src/PowVariant.h @@ -184,5 +184,34 @@ inline PowVariant parseVariant(const std::string variant) return powVariant; } +inline PowVariant getBaseVariant(PowVariant powVariant) +{ + switch (powVariant) + { + case POW_V1: + case POW_XTL: + case POW_MSR: + case POW_RTO: + case POW_HOSP: + case POW_UPX: + return POW_V1; + + case POW_V2: + case POW_TURTLE: + case POW_DOUBLE: + case POW_ZELERIUS: + case POW_RWZ: + case POW_UPX2: + case POW_FAST_2: + return POW_V2; + + case POW_WOW: + case POW_V4: + return POW_V4; + default: + return POW_V0; + } +} + #endif /* __POW_VARIANT_H__ */