Remove conflicting declaration for _mulx_u64.

This commit is contained in:
XMRig 2017-04-25 03:20:32 +03:00
parent b35ecef06f
commit e71e9486c6
5 changed files with 13 additions and 29 deletions

View file

@ -30,16 +30,6 @@
#include "crypto/c_keccak.h"
#ifndef __BMI2__
static inline uint64_t _mulx_u64(uint64_t a, uint64_t b, uint64_t* hi)
{
unsigned __int128 r = (unsigned __int128) a * (unsigned __int128) b;
*hi = r >> 64;
return (uint64_t) r;
}
#endif
void cryptonight_av1_aesni(const void *restrict input, size_t size, void *restrict output, struct cryptonight_ctx *restrict ctx)
{
keccak((const uint8_t *) input, size, ctx->state, 200);
@ -67,7 +57,7 @@ void cryptonight_av1_aesni(const void *restrict input, size_t size, void *restri
uint64_t hi, lo, cl, ch;
cl = ((uint64_t*) &l0[idx0 & 0x1FFFF0])[0];
ch = ((uint64_t*) &l0[idx0 & 0x1FFFF0])[1];
lo = _mulx_u64(idx0, cl, &hi);
lo = _umul128(idx0, cl, &hi);
al0 += hi;
ah0 += lo;

View file

@ -30,16 +30,6 @@
#include "crypto/c_keccak.h"
#ifndef __BMI2__
static inline uint64_t _mulx_u64(uint64_t a, uint64_t b, uint64_t* hi)
{
unsigned __int128 r = (unsigned __int128) a * (unsigned __int128) b;
*hi = r >> 64;
return (uint64_t) r;
}
#endif
void cryptonight_av2_aesni_stak(const void *restrict input, size_t size, void *restrict output, struct cryptonight_ctx *restrict ctx)
{
keccak((const uint8_t *) input, size, ctx->state, 200);
@ -64,12 +54,10 @@ void cryptonight_av2_aesni_stak(const void *restrict input, size_t size, void *r
idx0 = _mm_cvtsi128_si64(cx);
bx0 = cx;
_mm_prefetch((const char*)&l0[idx0 & 0x1FFFF0], _MM_HINT_T0);
uint64_t hi, lo, cl, ch;
cl = ((uint64_t*)&l0[idx0 & 0x1FFFF0])[0];
ch = ((uint64_t*)&l0[idx0 & 0x1FFFF0])[1];
lo = _mulx_u64(idx0, cl, &hi);
lo = _umul128(idx0, cl, &hi);
al0 += hi;
ah0 += lo;
@ -80,8 +68,6 @@ void cryptonight_av2_aesni_stak(const void *restrict input, size_t size, void *r
ah0 ^= ch;
al0 ^= cl;
idx0 = al0;
_mm_prefetch((const char*)&l0[idx0 & 0x1FFFF0], _MM_HINT_T0);
}
cn_implode_scratchpad((__m128i*) ctx->memory, (__m128i*) ctx->state);

View file

@ -212,4 +212,12 @@ inline void cn_implode_scratchpad(const __m128i* input, __m128i* output)
}
inline uint64_t _umul128(uint64_t a, uint64_t b, uint64_t* hi)
{
unsigned __int128 r = (unsigned __int128) a * (unsigned __int128) b;
*hi = r >> 64;
return (uint64_t) r;
}
#endif /* __CRYPTONIGHT_P_H__ */