1
0
mirror of https://github.com/xmrig/xmrig.git synced 2025-12-07 16:05:05 -05:00

Optimize cn-heavy in GCC builds

+0.7% in GCC builds, but GCC is still slower than MSVC on cn-heavy.
This commit is contained in:
SChernykh
2021-03-28 16:12:09 +02:00
parent c5c958743e
commit dc70893e6b

View File

@@ -740,7 +740,17 @@ inline void cryptonight_single_hash(const uint8_t *__restrict__ input, size_t si
if (props.isHeavy()) {
int64_t n = ((int64_t*)&l0[interleaved_index<interleave>(idx0 & MASK)])[0];
int64_t d = ((int32_t*)&l0[interleaved_index<interleave>(idx0 & MASK)])[2];
int64_t q = n / (d | 0x5);
int64_t d5;
# if defined _MSC_VER
d5 = d | 5;
# else
// Workaround for stupid GCC which converts to 32 bit before doing "| 5" and then converts back to 64 bit
asm("mov %1, %0\n\tor $5, %0" : "=r"(d5) : "r"(d));
# endif
int64_t q = n / d5;
((int64_t*)&l0[interleaved_index<interleave>(idx0 & MASK)])[0] = n ^ q;