From 9b9c9ef3b42116e7ad2111fc8145f4eca12d657b Mon Sep 17 00:00:00 2001 From: Matt Oliver Date: Mon, 9 Nov 2015 20:19:32 +1100 Subject: avutil/x86/bswap: Add msvc bswap instrinsics. This adds msvc optimisations as well as fixing an error in icl whereby it will generate invalid code otherwise. Signed-off-by: Matt Oliver --- libavutil/x86/bswap.h | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'libavutil/x86/bswap.h') diff --git a/libavutil/x86/bswap.h b/libavutil/x86/bswap.h index 3efd578b29..11d143b9c9 100644 --- a/libavutil/x86/bswap.h +++ b/libavutil/x86/bswap.h @@ -28,7 +28,30 @@ #include "config.h" #include "libavutil/attributes.h" -#if HAVE_INLINE_ASM +#if defined(_MSC_VER) + +#define av_bswap16 av_bswap16 +static av_always_inline av_const uint16_t av_bswap16(uint16_t x) +{ + return _rotr16(x, 8); +} + +#define av_bswap32 av_bswap32 +static av_always_inline av_const uint32_t av_bswap32(uint32_t x) +{ + return _byteswap_ulong(x); +} + +#if ARCH_X86_64 +#define av_bswap64 av_bswap64 +static inline uint64_t av_const av_bswap64(uint64_t x) +{ + return _byteswap_uint64(x); +} +#endif + + +#elif HAVE_INLINE_ASM #if AV_GCC_VERSION_AT_MOST(4,0) #define av_bswap16 av_bswap16 -- cgit v1.2.3