First attempt at MoX support
This commit is contained in:
parent
08e791b60d
commit
082b29f364
5 changed files with 14 additions and 8 deletions
|
@ -66,6 +66,7 @@ static AlgoData const algorithms[] = {
|
||||||
{ "cryptonight-light", "cn-light", xmrig::CRYPTONIGHT_LITE, xmrig::VARIANT_AUTO },
|
{ "cryptonight-light", "cn-light", xmrig::CRYPTONIGHT_LITE, xmrig::VARIANT_AUTO },
|
||||||
{ "cryptonight-lite/0", "cn-lite/0", xmrig::CRYPTONIGHT_LITE, xmrig::VARIANT_0 },
|
{ "cryptonight-lite/0", "cn-lite/0", xmrig::CRYPTONIGHT_LITE, xmrig::VARIANT_0 },
|
||||||
{ "cryptonight-lite/1", "cn-lite/1", xmrig::CRYPTONIGHT_LITE, xmrig::VARIANT_1 },
|
{ "cryptonight-lite/1", "cn-lite/1", xmrig::CRYPTONIGHT_LITE, xmrig::VARIANT_1 },
|
||||||
|
{ "cryptonight/mox", "cn/mox", xmrig::CRYPTONIGHT_LITE, xmrig::VARIANT_MOX },
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifndef XMRIG_NO_SUMO
|
# ifndef XMRIG_NO_SUMO
|
||||||
|
@ -91,6 +92,7 @@ static AlgoData const xmrStakAlgorithms[] = {
|
||||||
{ "cryptonight_masari", nullptr, xmrig::CRYPTONIGHT, xmrig::VARIANT_MSR },
|
{ "cryptonight_masari", nullptr, xmrig::CRYPTONIGHT, xmrig::VARIANT_MSR },
|
||||||
{ "cryptonight-bittube2", nullptr, xmrig::CRYPTONIGHT_HEAVY, xmrig::VARIANT_TUBE }, // bittube-miner
|
{ "cryptonight-bittube2", nullptr, xmrig::CRYPTONIGHT_HEAVY, xmrig::VARIANT_TUBE }, // bittube-miner
|
||||||
{ "cryptonight_alloy", nullptr, xmrig::CRYPTONIGHT, xmrig::VARIANT_XAO }, // xmr-stak-alloy
|
{ "cryptonight_alloy", nullptr, xmrig::CRYPTONIGHT, xmrig::VARIANT_XAO }, // xmr-stak-alloy
|
||||||
|
{ "cryptonight_mox", nullptr, xmrig::CRYPTONIGHT_LITE, xmrig::VARIANT_MOX },
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -103,7 +105,8 @@ static const char *variants[] = {
|
||||||
"msr",
|
"msr",
|
||||||
"xhv",
|
"xhv",
|
||||||
"xao",
|
"xao",
|
||||||
"rto"
|
"rto",
|
||||||
|
"mox"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@ enum Variant {
|
||||||
VARIANT_XHV = 5, // Modified CryptoNight-Heavy (Haven Protocol only)
|
VARIANT_XHV = 5, // Modified CryptoNight-Heavy (Haven Protocol only)
|
||||||
VARIANT_XAO = 6, // Modified CryptoNight variant 1 (Alloy only)
|
VARIANT_XAO = 6, // Modified CryptoNight variant 1 (Alloy only)
|
||||||
VARIANT_RTO = 7, // Modified CryptoNight variant 1 (Arto only)
|
VARIANT_RTO = 7, // Modified CryptoNight variant 1 (Arto only)
|
||||||
|
VARIANT_MOX = 8,
|
||||||
VARIANT_MAX
|
VARIANT_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -465,7 +465,7 @@ inline void cryptonight_single_hash(const uint8_t *__restrict__ input, size_t si
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_MONERO) {
|
if (IS_MONERO) {
|
||||||
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : 3>((uint64_t*)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx));
|
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : VARIANT == xmrig::VARIANT_MOX ? 8 : 3>((uint64_t*)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx));
|
||||||
} else {
|
} else {
|
||||||
_mm_store_si128((__m128i *)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx));
|
_mm_store_si128((__m128i *)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx));
|
||||||
}
|
}
|
||||||
|
@ -582,8 +582,8 @@ inline void cryptonight_double_hash(const uint8_t *__restrict__ input, size_t si
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_MONERO) {
|
if (IS_MONERO) {
|
||||||
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : 3>((uint64_t*)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx0));
|
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : VARIANT == xmrig::VARIANT_MOX ? 8 : 3>((uint64_t*)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx0));
|
||||||
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : 3>((uint64_t*)&l1[idx1 & MASK], _mm_xor_si128(bx1, cx1));
|
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : VARIANT == xmrig::VARIANT_MOX ? 8 : 3>((uint64_t*)&l1[idx1 & MASK], _mm_xor_si128(bx1, cx1));
|
||||||
} else {
|
} else {
|
||||||
_mm_store_si128((__m128i *) &l0[idx0 & MASK], _mm_xor_si128(bx0, cx0));
|
_mm_store_si128((__m128i *) &l0[idx0 & MASK], _mm_xor_si128(bx0, cx0));
|
||||||
_mm_store_si128((__m128i *) &l1[idx1 & MASK], _mm_xor_si128(bx1, cx1));
|
_mm_store_si128((__m128i *) &l1[idx1 & MASK], _mm_xor_si128(bx1, cx1));
|
||||||
|
|
|
@ -111,6 +111,7 @@ template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT, VARIANT_XTL>()
|
||||||
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT, VARIANT_MSR>() { return CRYPTONIGHT_MSR_ITER; }
|
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT, VARIANT_MSR>() { return CRYPTONIGHT_MSR_ITER; }
|
||||||
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT, VARIANT_XAO>() { return CRYPTONIGHT_XAO_ITER; }
|
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT, VARIANT_XAO>() { return CRYPTONIGHT_XAO_ITER; }
|
||||||
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT, VARIANT_RTO>() { return CRYPTONIGHT_ITER; }
|
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT, VARIANT_RTO>() { return CRYPTONIGHT_ITER; }
|
||||||
|
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT_LITE, VARIANT_MOX>() { return CRYPTONIGHT_LITE_ITER; }
|
||||||
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT_LITE, VARIANT_0>() { return CRYPTONIGHT_LITE_ITER; }
|
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT_LITE, VARIANT_0>() { return CRYPTONIGHT_LITE_ITER; }
|
||||||
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT_LITE, VARIANT_1>() { return CRYPTONIGHT_LITE_ITER; }
|
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT_LITE, VARIANT_1>() { return CRYPTONIGHT_LITE_ITER; }
|
||||||
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT_HEAVY, VARIANT_0>() { return CRYPTONIGHT_HEAVY_ITER; }
|
template<> inline constexpr uint32_t cn_select_iter<CRYPTONIGHT_HEAVY, VARIANT_0>() { return CRYPTONIGHT_HEAVY_ITER; }
|
||||||
|
@ -159,6 +160,7 @@ template<> inline constexpr bool cn_is_monero<VARIANT_MSR>() { return true; }
|
||||||
template<> inline constexpr bool cn_is_monero<VARIANT_XHV>() { return false; }
|
template<> inline constexpr bool cn_is_monero<VARIANT_XHV>() { return false; }
|
||||||
template<> inline constexpr bool cn_is_monero<VARIANT_XAO>() { return false; }
|
template<> inline constexpr bool cn_is_monero<VARIANT_XAO>() { return false; }
|
||||||
template<> inline constexpr bool cn_is_monero<VARIANT_RTO>() { return true; }
|
template<> inline constexpr bool cn_is_monero<VARIANT_RTO>() { return true; }
|
||||||
|
template<> inline constexpr bool cn_is_monero<VARIANT_MOX>() { return true; }
|
||||||
|
|
||||||
|
|
||||||
inline bool cn_is_monero(Variant variant)
|
inline bool cn_is_monero(Variant variant)
|
||||||
|
|
|
@ -470,7 +470,7 @@ inline void cryptonight_single_hash(const uint8_t *__restrict__ input, size_t si
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_MONERO) {
|
if (IS_MONERO) {
|
||||||
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : 3>((uint64_t*)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx));
|
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : VARIANT == xmrig::VARIANT_MOX ? 8 : 3>((uint64_t*)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx));
|
||||||
} else {
|
} else {
|
||||||
_mm_store_si128((__m128i *)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx));
|
_mm_store_si128((__m128i *)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx));
|
||||||
}
|
}
|
||||||
|
@ -585,8 +585,8 @@ inline void cryptonight_double_hash(const uint8_t *__restrict__ input, size_t si
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_MONERO) {
|
if (IS_MONERO) {
|
||||||
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : 3>((uint64_t*)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx0));
|
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : VARIANT == xmrig::VARIANT_MOX ? 8 : 3>((uint64_t*)&l0[idx0 & MASK], _mm_xor_si128(bx0, cx0));
|
||||||
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : 3>((uint64_t*)&l1[idx1 & MASK], _mm_xor_si128(bx1, cx1));
|
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : VARIANT == xmrig::VARIANT_MOX ? 8 : 3>((uint64_t*)&l1[idx1 & MASK], _mm_xor_si128(bx1, cx1));
|
||||||
} else {
|
} else {
|
||||||
_mm_store_si128((__m128i *) &l0[idx0 & MASK], _mm_xor_si128(bx0, cx0));
|
_mm_store_si128((__m128i *) &l0[idx0 & MASK], _mm_xor_si128(bx0, cx0));
|
||||||
_mm_store_si128((__m128i *) &l1[idx1 & MASK], _mm_xor_si128(bx1, cx1));
|
_mm_store_si128((__m128i *) &l1[idx1 & MASK], _mm_xor_si128(bx1, cx1));
|
||||||
|
@ -707,7 +707,7 @@ inline void cryptonight_double_hash(const uint8_t *__restrict__ input, size_t si
|
||||||
b = _mm_xor_si128(b, c); \
|
b = _mm_xor_si128(b, c); \
|
||||||
\
|
\
|
||||||
if (IS_MONERO) { \
|
if (IS_MONERO) { \
|
||||||
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : 3>(reinterpret_cast<uint64_t*>(ptr), b); \
|
cryptonight_monero_tweak<VARIANT == xmrig::VARIANT_XTL ? 4 : VARIANT == xmrig::VARIANT_MOX ? 8 : 3>(reinterpret_cast<uint64_t*>(ptr), b); \
|
||||||
} else { \
|
} else { \
|
||||||
_mm_store_si128(ptr, b); \
|
_mm_store_si128(ptr, b); \
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue