Add Arto (RTO) support

This commit is contained in:
Ben Gräf 2018-06-18 22:36:06 +02:00
parent eb8b854211
commit bb1fba37a6
3 changed files with 17 additions and 2 deletions

View file

@ -283,7 +283,8 @@ constexpr static const char *pow_variant_names[] = {
"alloy",
"xtl",
"msr",
"xhv"
"xhv",
"rto"
};
Options *Options::parse(int argc, char **argv)
@ -1034,6 +1035,11 @@ bool Options::parsePowVariant(const char *powVariant)
break;
}
if (i == ARRAY_SIZE(pow_variant_names) - 1 && !strcmp(powVariant, "arto")) {
m_powVariant = POW_RTO;
break;
}
if (i == ARRAY_SIZE(pow_variant_names) - 1) {
showUsage(1);
return false;

View file

@ -32,6 +32,7 @@ enum PowVariant
POW_XTL,
POW_MSR,
POW_XHV,
POW_RTO,
LAST_ITEM
};
@ -53,6 +54,8 @@ inline std::string getPowVariantName(PowVariant powVariant)
return "msr";
case POW_XHV:
return "xhv";
case POW_RTO:
return "rto";
case POW_AUTODETECT:
default:
return "-1";
@ -111,6 +114,8 @@ inline PowVariant parseVariant(const std::string variant)
powVariant = PowVariant::POW_MSR;
} else if (variant == "xhv" || variant == "haven") {
powVariant = PowVariant::POW_XHV;
} else if (variant == "rto" || variant == "arto") {
powVariant = PowVariant::POW_RTO;
}
return powVariant;

View file

@ -44,6 +44,8 @@ static void cryptonight_aesni(PowVariant powVersion, const uint8_t* input, size_
CryptoNightMultiHash<0x80000, POW_XLT_V4_INDEX_SHIFT, MEMORY, 0x1FFFF0, false, NUM_HASH_BLOCKS>::hashPowV2(input, size, output, ctx);
} else if (powVersion == PowVariant::POW_MSR) {
CryptoNightMultiHash<0x40000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, false, NUM_HASH_BLOCKS>::hashPowV2(input, size, output, ctx);
} else if (powVersion == PowVariant::POW_RTO) {
CryptoNightMultiHash<0x80000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, false, NUM_HASH_BLOCKS>::hashLiteIpbc(input, size, output, ctx);
}else {
CryptoNightMultiHash<0x80000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, false, NUM_HASH_BLOCKS>::hash(input, size, output, ctx);
}
@ -60,6 +62,8 @@ static void cryptonight_softaes(PowVariant powVersion, const uint8_t* input, siz
CryptoNightMultiHash<0x80000, POW_XLT_V4_INDEX_SHIFT, MEMORY, 0x1FFFF0, true, NUM_HASH_BLOCKS>::hashPowV2(input, size, output, ctx);
} else if (powVersion == PowVariant::POW_MSR) {
CryptoNightMultiHash<0x40000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, true, NUM_HASH_BLOCKS>::hashPowV2(input, size, output, ctx);
} else if (powVersion == PowVariant::POW_RTO) {
CryptoNightMultiHash<0x80000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, true, NUM_HASH_BLOCKS>::hashLiteIpbc(input, size, output, ctx);
} else {
CryptoNightMultiHash<0x80000, POW_DEFAULT_INDEX_SHIFT, MEMORY, 0x1FFFF0, true, NUM_HASH_BLOCKS>::hash(input, size, output, ctx);
}