summaryrefslogtreecommitdiff
path: root/libavutil/arm/bswap.h
diff options
context:
space:
mode:
Diffstat (limited to 'libavutil/arm/bswap.h')
-rw-r--r--libavutil/arm/bswap.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/libavutil/arm/bswap.h b/libavutil/arm/bswap.h
index 65c73c5ccb..d19f972329 100644
--- a/libavutil/arm/bswap.h
+++ b/libavutil/arm/bswap.h
@@ -23,6 +23,25 @@
#include "config.h"
#include "libavutil/common.h"
+#ifdef __ARMCC_VERSION
+
+#if HAVE_ARMV6
+#define bswap_16 bswap_16
+static av_always_inline av_const uint16_t bswap_16(uint16_t x)
+{
+ __asm { rev16 x, x }
+ return x;
+}
+
+#define bswap_32 bswap_32
+static av_always_inline av_const uint32_t bswap_32(uint32_t x)
+{
+ return __rev(x);
+}
+#endif /* HAVE_ARMV6 */
+
+#else /* __ARMCC_VERSION */
+
#if HAVE_ARMV6
#define bswap_16 bswap_16
static av_always_inline av_const uint16_t bswap_16(uint16_t x)
@@ -48,4 +67,6 @@ static av_always_inline av_const uint32_t bswap_32(uint32_t x)
return x;
}
+#endif /* __ARMCC_VERSION */
+
#endif /* AVUTIL_ARM_BSWAP_H */