Nicolas Mora <[email protected]> writes:
> I've added 2 macros definitions: MSB_XOR_T_WRAP and MSB_XOR_T_UNWRAP,
> I couldn't find how to make just one macro for both cases because of
> the direction of the xor.
Hmm. Maybe better to define an optional swap operation. Like
#if WORDS_BIGENDIAN
#define bswap_if_le(x) (x)
#elif HAVE_BUILTIN_BSWAP64
#define bswap_if_le(x) (__builtin_bswap64 (x))
#else
static uint64_t
bswap_if_le(uint64_t x)
{
x = ((x >> 32) & UINT64_C(0xffffffff))
| ((x & UINT64_C(0xffffffff)) << 32);
x = ((x >> 16) & UINT64_C(0xffff0000ffff))
| ((x & UINT64_C(0xffff0000ffff)) << 16);
x = ((x >> 8) & UINT64_C(0xff00ff00ff00ff))
| ((x & UINT64_C(0xff00ff00ff00ff)) << 8);
return x;
}
#endif
and then use as
B.u64[0] = A.u64 ^ bswap_if_le((n * j) + (i + 1));
Regards,
/Niels
--
Niels Möller. PGP-encrypted email is preferred. Keyid 368C6677.
Internet email is subject to wholesale government surveillance.
_______________________________________________
nettle-bugs mailing list
[email protected]
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs