(need not be aligned).
**/
extern u64 movzx_le64(const u8* p, size_t size);
extern u64 movzx_be64(const u8* p, size_t size);
/**
* sign-extend (need not be aligned).
**/
extern i64 movsx_le64(const u8* p, size_t size);
extern i64 movsx_be64(const u8* p, size_t size);
#if MSC_VERSION
extern unsigned short _byteswap_ushort(unsigned short);
extern unsigned long _byteswap_ulong(unsigned long);
extern unsigned __int64 _byteswap_uint64(unsigned __int64);
# if !ICC_VERSION // ICC doesn't need (and warns about) the pragmas
# pragma intrinsic(_byteswap_ushort)
# pragma intrinsic(_byteswap_ulong)
# pragma intrinsic(_byteswap_uint64)
# endif
# define swap16 _byteswap_ushort
# define swap32 _byteswap_ulong
# define swap64 _byteswap_uint64
#elif defined(linux)
# include