ByteBuffer change order of tests for optimized byte swap

Check __clang__ before __GNUC__ as clang
also identifies itself as gcc for compatibility.
This commit is contained in:
Michael Davidsaver
2018-03-19 14:36:41 -07:00
parent e42bb46563
commit 1c09b42951

View File

@@ -29,16 +29,7 @@
/* various compilers provide builtins for byte order swaps.
* conditions based on boost endian library
*/
#if defined(__GNUC__) && ((__GNUC__>4) || (__GNUC__==4 && __GNUC_MINOR__>=3))
#if (__GNUC__>4) || (__GNUC__==4 && __GNUC_MINOR__>=8)
#define _PVA_swap16(X) __builtin_bswap16(X)
#endif
#define _PVA_swap32(X) __builtin_bswap32(X)
#define _PVA_swap64(X) __builtin_bswap64(X)
#elif defined(__clang__)
#if defined(__clang__)
#if __has_builtin(__builtin_bswap16)
#define _PVA_swap16(X) __builtin_bswap16(X)
@@ -50,6 +41,15 @@
#define _PVA_swap64(X) __builtin_bswap64(X)
#endif
#elif defined(__GNUC__) && ((__GNUC__>4) || (__GNUC__==4 && __GNUC_MINOR__>=3))
#if (__GNUC__>4) || (__GNUC__==4 && __GNUC_MINOR__>=8)
#define _PVA_swap16(X) __builtin_bswap16(X)
#endif
#define _PVA_swap32(X) __builtin_bswap32(X)
#define _PVA_swap64(X) __builtin_bswap64(X)
#elif defined(_MSC_VER)
#define _PVA_swap16(X) _byteswap_ushort(X)