20inline std::uint64_t mingw_bswap64(
const std::uint64_t val)
22 return (((val & (uint64_t)0x00000000000000ffULL) << 56)
23 | ((val & (uint64_t)0x000000000000ff00ULL) << 40)
24 | ((val & (uint64_t)0x0000000000ff0000ULL) << 24)
25 | ((val & (uint64_t)0x00000000ff000000ULL) << 8)
26 | ((val & (uint64_t)0x000000ff00000000ULL) >> 8)
27 | ((val & (uint64_t)0x0000ff0000000000ULL) >> 24)
28 | ((val & (uint64_t)0x00ff000000000000ULL) >> 40)
29 | ((val & (uint64_t)0xff00000000000000ULL) >> 56));
32inline std::uint64_t
rev64(
const std::uint64_t value)
34#ifdef OPENVPN_LITTLE_ENDIAN
36 return _byteswap_uint64(value);
37#elif defined(__MINGW32__)
38 return mingw_bswap64(value);
39#elif defined(__clang__) || !defined(__GLIBC__)
40 return __builtin_bswap64(value);
42 return __bswap_constant_64(value);
std::uint64_t rev64(const std::uint64_t value)