summaryrefslogtreecommitdiff
path: root/apps/codecs/libwma/bswap.h
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2007-07-12 22:12:25 +0000
committerJens Arnold <amiconn@rockbox.org>2007-07-12 22:12:25 +0000
commit42bd5b46f09556e04994981e83d8da397912a303 (patch)
tree7f8d3bd685ff7719d257874459eac131724cd372 /apps/codecs/libwma/bswap.h
parentd7dd23939a9b9130ca26f94f122efd08e10bcc33 (diff)
downloadrockbox-42bd5b46f09556e04994981e83d8da397912a303.tar.gz
rockbox-42bd5b46f09556e04994981e83d8da397912a303.zip
WMA codec: Coldfire is capable of unaligned memory accesses, so lets make use of it. ~1.5% speedup.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13865 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libwma/bswap.h')
-rw-r--r--apps/codecs/libwma/bswap.h25
1 files changed, 23 insertions, 2 deletions
diff --git a/apps/codecs/libwma/bswap.h b/apps/codecs/libwma/bswap.h
index 460f7abd40..33377cfcba 100644
--- a/apps/codecs/libwma/bswap.h
+++ b/apps/codecs/libwma/bswap.h
@@ -10,7 +10,28 @@
10#include <byteswap.h> 10#include <byteswap.h>
11#else 11#else
12 12
13#ifdef ARCH_X86 13#ifdef ROCKBOX
14#include "codecs.h"
15
16/* rockbox' optimised inline functions */
17#define bswap_16(x) swap16(x)
18#define bswap_32(x) swap32(x)
19
20static inline uint64_t ByteSwap64(uint64_t x)
21{
22 union {
23 uint64_t ll;
24 struct {
25 uint32_t l,h;
26 } l;
27 } r;
28 r.l.l = bswap_32 (x);
29 r.l.h = bswap_32 (x>>32);
30 return r.ll;
31}
32#define bswap_64(x) ByteSwap64(x)
33
34#elif defined(ARCH_X86)
14static inline unsigned short ByteSwap16(unsigned short x) 35static inline unsigned short ByteSwap16(unsigned short x)
15{ 36{
16 __asm("xchgb %b0,%h0" : 37 __asm("xchgb %b0,%h0" :
@@ -83,7 +104,7 @@ static inline uint64_t ByteSwap64(uint64_t x)
83#else 104#else
84 105
85#define bswap_16(x) (((x) & 0x00ff) << 8 | ((x) & 0xff00) >> 8) 106#define bswap_16(x) (((x) & 0x00ff) << 8 | ((x) & 0xff00) >> 8)
86 107
87 108
88// code from bits/byteswap.h (C) 1997, 1998 Free Software Foundation, Inc. 109// code from bits/byteswap.h (C) 1997, 1998 Free Software Foundation, Inc.
89#define bswap_32(x) \ 110#define bswap_32(x) \