From 20d45dc2a8c3e4eb133b7947122d5c2ad7d3d79c Mon Sep 17 00:00:00 2001
From: Marc Hoffman <mmh@pleasantst.com>
Date: Tue, 24 Apr 2007 23:21:29 +0000
Subject: [PATCH] Faster 32 bit byteswaping code for Blackfin. 200% faster on
 BF537 compiled with gcc 4.1. patch by Marc Hoffman, mmh pleasantst com

Originally committed as revision 8802 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavutil/bswap.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/libavutil/bswap.h b/libavutil/bswap.h
index 03d613db2d8..8ef01b22f06 100644
--- a/libavutil/bswap.h
+++ b/libavutil/bswap.h
@@ -125,6 +125,18 @@ static av_always_inline uint32_t bswap_32(uint32_t x){
       : "+r"(x), "+r"(t));
     return x;
 }
+
+#elif defined(ARCH_BFIN)
+static av_always_inline uint32_t bswap_32(uint32_t x){
+    unsigned tmp;
+    asm("%1 = %0 >> 8 (V);\n\t"
+        "%0 = %0 << 8 (V);\n\t"
+        "%0 = %0 | %1;\n\t"
+        "%0 = PACK(%0.L, %0.H);\n\t"
+        : "+d"(x), "=&d"(tmp));
+    return x;
+}
+
 #else
 static av_always_inline uint32_t bswap_32(uint32_t x){
     x= ((x<<8)&0xFF00FF00) | ((x>>8)&0x00FF00FF);
-- 
GitLab