Merged features for # 1.6.3 (#114)
- Added shift+click function for multi row selection to Dashboard - Added -DBUILD_STATIC=ON/OFF option to CMake configuration to create fully static builds - Added current algo and list of supported_varaints to login message for future usage on proxy - Added support for latest Stellite (XTL) and Alloy (XAO) variants - Simplification of configuration, "force-pow-variant" and "cryptonight-lite-ipbc" parameters are now deprecated see [Coin Configuration](https://github.com/Bendr0id/xmrigCC/wiki/Coin-configurations) for guidance - Fixed leaks in transport shutdown
This commit is contained in:
parent
dc6bcacaed
commit
f54ce3c95c
25 changed files with 654 additions and 431 deletions
|
@ -468,7 +468,7 @@ static inline void cn_implode_scratchpad_heavy(const __m128i* input, __m128i* ou
|
|||
}
|
||||
|
||||
// n-Loop version. Seems to be little bit slower then the hardcoded one.
|
||||
template<size_t ITERATIONS, size_t MEM, size_t MASK, bool SOFT_AES, size_t NUM_HASH_BLOCKS>
|
||||
template<size_t ITERATIONS, size_t INDEX_SHIFT, size_t MEM, size_t MASK, bool SOFT_AES, size_t NUM_HASH_BLOCKS>
|
||||
class CryptoNightMultiHash
|
||||
{
|
||||
public:
|
||||
|
@ -570,8 +570,7 @@ public:
|
|||
|
||||
al[hashBlock] = h[hashBlock][0] ^ h[hashBlock][4];
|
||||
ah[hashBlock] = h[hashBlock][1] ^ h[hashBlock][5];
|
||||
bx[hashBlock] =
|
||||
_mm_set_epi64x(h[hashBlock][3] ^ h[hashBlock][7], h[hashBlock][2] ^ h[hashBlock][6]);
|
||||
bx[hashBlock] = _mm_set_epi64x(h[hashBlock][3] ^ h[hashBlock][7], h[hashBlock][2] ^ h[hashBlock][6]);
|
||||
idx[hashBlock] = h[hashBlock][0] ^ h[hashBlock][4];
|
||||
}
|
||||
|
||||
|
@ -586,12 +585,11 @@ public:
|
|||
cx = _mm_aesenc_si128(cx, _mm_set_epi64x(ah[hashBlock], al[hashBlock]));
|
||||
}
|
||||
|
||||
_mm_store_si128((__m128i*) &l[hashBlock][idx[hashBlock] & MASK],
|
||||
_mm_xor_si128(bx[hashBlock], cx));
|
||||
_mm_store_si128((__m128i*) &l[hashBlock][idx[hashBlock] & MASK], _mm_xor_si128(bx[hashBlock], cx));
|
||||
|
||||
const uint8_t tmp = reinterpret_cast<const uint8_t*>(&l[hashBlock][idx[hashBlock] & MASK])[11];
|
||||
static const uint32_t table = 0x75310;
|
||||
const uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
const uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l[hashBlock][idx[hashBlock] & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
|
||||
idx[hashBlock] = EXTRACT64(cx);
|
||||
|
@ -674,7 +672,7 @@ public:
|
|||
|
||||
const uint8_t tmp = reinterpret_cast<const uint8_t*>(&l[hashBlock][idx[hashBlock] & MASK])[11];
|
||||
static const uint32_t table = 0x75310;
|
||||
const uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
const uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l[hashBlock][idx[hashBlock] & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
|
||||
idx[hashBlock] = EXTRACT64(cx);
|
||||
|
@ -790,8 +788,8 @@ public:
|
|||
};
|
||||
|
||||
|
||||
template<size_t ITERATIONS, size_t MEM, size_t MASK, bool SOFT_AES>
|
||||
class CryptoNightMultiHash<ITERATIONS, MEM, MASK, SOFT_AES, 1>
|
||||
template<size_t ITERATIONS, size_t INDEX_SHIFT, size_t MEM, size_t MASK, bool SOFT_AES>
|
||||
class CryptoNightMultiHash<ITERATIONS, INDEX_SHIFT, MEM, MASK, SOFT_AES, 1>
|
||||
{
|
||||
public:
|
||||
inline static void hash(const uint8_t* __restrict__ input,
|
||||
|
@ -892,7 +890,7 @@ public:
|
|||
_mm_store_si128((__m128i*) &l[idx & MASK], _mm_xor_si128(bx, cx));
|
||||
const uint8_t tmp = reinterpret_cast<const uint8_t*>(&l[idx & MASK])[11];
|
||||
static const uint32_t table = 0x75310;
|
||||
const uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
const uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l[idx & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
idx = EXTRACT64(cx);
|
||||
bx = cx;
|
||||
|
@ -959,7 +957,7 @@ public:
|
|||
_mm_store_si128((__m128i*) &l[idx & MASK], _mm_xor_si128(bx, cx));
|
||||
const uint8_t tmp = reinterpret_cast<const uint8_t*>(&l[idx & MASK])[11];
|
||||
static const uint32_t table = 0x75310;
|
||||
const uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
const uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l[idx & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
idx = EXTRACT64(cx);
|
||||
bx = cx;
|
||||
|
@ -1056,8 +1054,8 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
template<size_t ITERATIONS, size_t MEM, size_t MASK, bool SOFT_AES>
|
||||
class CryptoNightMultiHash<ITERATIONS, MEM, MASK, SOFT_AES, 2>
|
||||
template<size_t ITERATIONS, size_t INDEX_SHIFT, size_t MEM, size_t MASK, bool SOFT_AES>
|
||||
class CryptoNightMultiHash<ITERATIONS, INDEX_SHIFT, MEM, MASK, SOFT_AES, 2>
|
||||
{
|
||||
public:
|
||||
inline static void hash(const uint8_t* __restrict__ input,
|
||||
|
@ -1203,10 +1201,10 @@ public:
|
|||
|
||||
static const uint32_t table = 0x75310;
|
||||
uint8_t tmp = reinterpret_cast<const uint8_t*>(&l0[idx0 & MASK])[11];
|
||||
uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l0[idx0 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l1[idx1 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l1[idx1 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
|
||||
idx0 = EXTRACT64(cx0);
|
||||
|
@ -1311,10 +1309,10 @@ public:
|
|||
|
||||
static const uint32_t table = 0x75310;
|
||||
uint8_t tmp = reinterpret_cast<const uint8_t*>(&l0[idx0 & MASK])[11];
|
||||
uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l0[idx0 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l1[idx1 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l1[idx1 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
|
||||
idx0 = EXTRACT64(cx0);
|
||||
|
@ -1478,8 +1476,8 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
template<size_t ITERATIONS, size_t MEM, size_t MASK, bool SOFT_AES>
|
||||
class CryptoNightMultiHash<ITERATIONS, MEM, MASK, SOFT_AES, 3>
|
||||
template<size_t ITERATIONS, size_t INDEX_SHIFT, size_t MEM, size_t MASK, bool SOFT_AES>
|
||||
class CryptoNightMultiHash<ITERATIONS, INDEX_SHIFT, MEM, MASK, SOFT_AES, 3>
|
||||
{
|
||||
public:
|
||||
inline static void hash(const uint8_t* __restrict__ input,
|
||||
|
@ -1675,13 +1673,13 @@ public:
|
|||
|
||||
static const uint32_t table = 0x75310;
|
||||
uint8_t tmp = reinterpret_cast<const uint8_t*>(&l0[idx0 & MASK])[11];
|
||||
uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l0[idx0 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l1[idx1 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l1[idx1 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l2[idx2 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l2[idx2 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
|
||||
idx0 = EXTRACT64(cx0);
|
||||
|
@ -1825,13 +1823,13 @@ public:
|
|||
|
||||
static const uint32_t table = 0x75310;
|
||||
uint8_t tmp = reinterpret_cast<const uint8_t*>(&l0[idx0 & MASK])[11];
|
||||
uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l0[idx0 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l1[idx1 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l1[idx1 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l2[idx2 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l2[idx2 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
|
||||
idx0 = EXTRACT64(cx0);
|
||||
|
@ -2062,8 +2060,8 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
template<size_t ITERATIONS, size_t MEM, size_t MASK, bool SOFT_AES>
|
||||
class CryptoNightMultiHash<ITERATIONS, MEM, MASK, SOFT_AES, 4>
|
||||
template<size_t ITERATIONS, size_t INDEX_SHIFT, size_t MEM, size_t MASK, bool SOFT_AES>
|
||||
class CryptoNightMultiHash<ITERATIONS, INDEX_SHIFT, MEM, MASK, SOFT_AES, 4>
|
||||
{
|
||||
public:
|
||||
inline static void hash(const uint8_t* __restrict__ input,
|
||||
|
@ -2307,16 +2305,16 @@ public:
|
|||
|
||||
static const uint32_t table = 0x75310;
|
||||
uint8_t tmp = reinterpret_cast<const uint8_t*>(&l0[idx0 & MASK])[11];
|
||||
uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l0[idx0 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l1[idx1 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l1[idx1 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l2[idx2 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l2[idx2 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l3[idx3 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l3[idx3 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
|
||||
idx0 = EXTRACT64(cx0);
|
||||
|
@ -2497,16 +2495,16 @@ public:
|
|||
|
||||
static const uint32_t table = 0x75310;
|
||||
uint8_t tmp = reinterpret_cast<const uint8_t*>(&l0[idx0 & MASK])[11];
|
||||
uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l0[idx0 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l1[idx1 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l1[idx1 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l2[idx2 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l2[idx2 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l3[idx3 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l3[idx3 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
|
||||
idx0 = EXTRACT64(cx0);
|
||||
|
@ -2801,8 +2799,8 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
template<size_t ITERATIONS, size_t MEM, size_t MASK, bool SOFT_AES>
|
||||
class CryptoNightMultiHash<ITERATIONS, MEM, MASK, SOFT_AES, 5>
|
||||
template<size_t ITERATIONS, size_t INDEX_SHIFT, size_t MEM, size_t MASK, bool SOFT_AES>
|
||||
class CryptoNightMultiHash<ITERATIONS, INDEX_SHIFT, MEM, MASK, SOFT_AES, 5>
|
||||
{
|
||||
public:
|
||||
inline static void hash(const uint8_t* __restrict__ input,
|
||||
|
@ -3094,19 +3092,19 @@ public:
|
|||
|
||||
static const uint32_t table = 0x75310;
|
||||
uint8_t tmp = reinterpret_cast<const uint8_t*>(&l0[idx0 & MASK])[11];
|
||||
uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l0[idx0 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l1[idx1 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l1[idx1 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l2[idx2 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l2[idx2 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l3[idx3 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l3[idx3 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l4[idx4 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l4[idx4 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
|
||||
idx0 = EXTRACT64(cx0);
|
||||
|
@ -3324,19 +3322,19 @@ public:
|
|||
|
||||
static const uint32_t table = 0x75310;
|
||||
uint8_t tmp = reinterpret_cast<const uint8_t*>(&l0[idx0 & MASK])[11];
|
||||
uint8_t index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
uint8_t index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l0[idx0 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l1[idx1 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l1[idx1 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l2[idx2 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l2[idx2 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l3[idx3 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l3[idx3 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
tmp = reinterpret_cast<const uint8_t*>(&l4[idx4 & MASK])[11];
|
||||
index = (((tmp >> 3) & 6) | (tmp & 1)) << 1;
|
||||
index = (((tmp >> INDEX_SHIFT) & 6) | (tmp & 1)) << 1;
|
||||
((uint8_t*)(&l4[idx4 & MASK]))[11] = tmp ^ ((table >> index) & 0x30);
|
||||
|
||||
idx0 = EXTRACT64(cx0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue