Index: source/libvpx/vpx_util/endian_inl.h |
diff --git a/source/libvpx/vpx_util/endian_inl.h b/source/libvpx/vpx_util/endian_inl.h |
index 12cc720a419a9c1dae5e55ab70ec8c777591c9c0..6b177f174eec2d24d7b532df7112fb84bd2ffb16 100644 |
--- a/source/libvpx/vpx_util/endian_inl.h |
+++ b/source/libvpx/vpx_util/endian_inl.h |
@@ -63,6 +63,11 @@ |
#define HAVE_BUILTIN_BSWAP16 |
#endif |
+#if HAVE_MIPS32 && defined(__mips__) && !defined(__mips64) && \ |
+ defined(__mips_isa_rev) && (__mips_isa_rev >= 2) && (__mips_isa_rev < 6) |
+#define VPX_USE_MIPS32_R2 |
+#endif |
+ |
static INLINE uint16_t BSwap16(uint16_t x) { |
#if defined(HAVE_BUILTIN_BSWAP16) |
return __builtin_bswap16(x); |
@@ -75,7 +80,7 @@ static INLINE uint16_t BSwap16(uint16_t x) { |
} |
static INLINE uint32_t BSwap32(uint32_t x) { |
-#if HAVE_MIPS32 |
+#if defined(VPX_USE_MIPS32_R2) |
uint32_t ret; |
__asm__ volatile ( |
"wsbh %[ret], %[x] \n\t" |