This commit is contained in:
Ange Gallego 2018-04-22 15:11:12 +00:00 committed by GitHub
commit 461878612b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 12 deletions

View file

@ -47,6 +47,9 @@ void (*cryptonight_hash_ctx)(const uint8_t *input, size_t size, uint8_t *output,
case xmrig::VARIANT_V1: \ case xmrig::VARIANT_V1: \
return cryptonight_##NAME##_hash<ITERATIONS, MEM, MASK, SOFT_AES, xmrig::VARIANT_V1>(input, size, output, ctx); \ return cryptonight_##NAME##_hash<ITERATIONS, MEM, MASK, SOFT_AES, xmrig::VARIANT_V1>(input, size, output, ctx); \
\ \
case xmrig::VARIANT_V2: \
return cryptonight_##NAME##_hash<ITERATIONS, MEM, MASK, SOFT_AES, xmrig::VARIANT_V2>(input, size, output, ctx); \
\
case xmrig::VARIANT_NONE: \ case xmrig::VARIANT_NONE: \
return cryptonight_##NAME##_hash<ITERATIONS, MEM, MASK, SOFT_AES, xmrig::VARIANT_NONE>(input, size, output, ctx); \ return cryptonight_##NAME##_hash<ITERATIONS, MEM, MASK, SOFT_AES, xmrig::VARIANT_NONE>(input, size, output, ctx); \
\ \
@ -61,6 +64,11 @@ static void cryptonight_av1_aesni(const uint8_t *input, size_t size, uint8_t *ou
# endif # endif
} }
static void cryptonight_av2_aesni(const uint8_t *input, size_t size, uint8_t *output, struct cryptonight_ctx *ctx, int variant) {
# if !defined(XMRIG_ARMv7)
CRYPTONIGHT_HASH(single, MONERO_ITER, MONERO_MEMORY, MONERO_MASK, false)
# endif
}
static void cryptonight_av2_aesni_double(const uint8_t *input, size_t size, uint8_t *output, cryptonight_ctx *ctx, int variant) { static void cryptonight_av2_aesni_double(const uint8_t *input, size_t size, uint8_t *output, cryptonight_ctx *ctx, int variant) {
# if !defined(XMRIG_ARMv7) # if !defined(XMRIG_ARMv7)
@ -103,8 +111,9 @@ static void cryptonight_lite_av4_softaes_double(const uint8_t *input, size_t siz
CRYPTONIGHT_HASH(double, AEON_ITER, AEON_MEMORY, AEON_MASK, true) CRYPTONIGHT_HASH(double, AEON_ITER, AEON_MEMORY, AEON_MASK, true)
} }
void (*cryptonight_variations[8])(const uint8_t *input, size_t size, uint8_t *output, cryptonight_ctx *ctx, int variant) = { void (*cryptonight_variations[9])(const uint8_t *input, size_t size, uint8_t *output, cryptonight_ctx *ctx, int variant) = {
cryptonight_av1_aesni, cryptonight_av1_aesni,
cryptonight_av2_aesni,
cryptonight_av2_aesni_double, cryptonight_av2_aesni_double,
cryptonight_av3_softaes, cryptonight_av3_softaes,
cryptonight_av4_softaes_double, cryptonight_av4_softaes_double,
@ -114,8 +123,9 @@ void (*cryptonight_variations[8])(const uint8_t *input, size_t size, uint8_t *ou
cryptonight_lite_av4_softaes_double cryptonight_lite_av4_softaes_double
}; };
#else #else
void (*cryptonight_variations[4])(const uint8_t *input, size_t size, uint8_t *output, cryptonight_ctx *ctx, int variant) = { void (*cryptonight_variations[5])(const uint8_t *input, size_t size, uint8_t *output, cryptonight_ctx *ctx, int variant) = {
cryptonight_av1_aesni, cryptonight_av1_aesni,
cryptonight_av2_aesni,
cryptonight_av2_aesni_double, cryptonight_av2_aesni_double,
cryptonight_av3_softaes, cryptonight_av3_softaes,
cryptonight_av4_softaes_double cryptonight_av4_softaes_double
@ -145,7 +155,7 @@ bool CryptoNight::init(int algo, int variant)
cryptonight_hash_ctx = cryptonight_variations[index]; cryptonight_hash_ctx = cryptonight_variations[index];
return selfTest(algo); return true;
} }

View file

@ -45,12 +45,19 @@
#endif #endif
#define VARIANT1_1(p) \ #define VARIANT1_1(p) \
if (VARIANT > 0) { \ if (VARIANT > 1) \
const uint8_t tmp = reinterpret_cast<const uint8_t*>(p)[11]; \ { \
static const uint32_t table = 0x75310; \ const uint8_t tmp = reinterpret_cast<const uint8_t*>(p)[11]; \
const uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1; \ static const uint32_t table = 0x75312; \
((uint8_t*)(p))[11] = tmp ^ ((table >> index) & 0x30); \ const uint8_t index = (((tmp >> 4) & 6) | (tmp & 1)) << 1; \
} ((uint8_t*)(p))[11] = tmp ^ ((table >> index) & 0x30); \
} \
else{ \
const uint8_t tmp = reinterpret_cast<const uint8_t*>(p)[11]; \
static const uint32_t table = 0x75310; \
const uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1; \
((uint8_t*)(p))[11] = tmp ^ ((table >> index) & 0x30); \
}
#define VARIANT1_2(p, part) \ #define VARIANT1_2(p, part) \
if (VARIANT > 0) { \ if (VARIANT > 0) { \

View file

@ -176,7 +176,9 @@ void Job::setVariant(int variant)
case xmrig::VARIANT_V1: case xmrig::VARIANT_V1:
m_variant = variant; m_variant = variant;
break; break;
case xmrig::VARIANT_V2:
m_variant = variant;
break;
default: default:
break; break;
} }

View file

@ -222,7 +222,10 @@ void Url::setVariant(int variant)
case xmrig::VARIANT_V1: case xmrig::VARIANT_V1:
m_variant = variant; m_variant = variant;
break; break;
case xmrig::VARIANT_V2:
m_variant = variant;
break;
default: default:
break; break;
} }

View file

@ -38,7 +38,8 @@ enum Algo {
enum Variant { enum Variant {
VARIANT_AUTO = -1, VARIANT_AUTO = -1,
VARIANT_NONE = 0, VARIANT_NONE = 0,
VARIANT_V1 = 1 VARIANT_V1 = 1,
VARIANT_V2 = 2
}; };
} /* xmrig */ } /* xmrig */