diff options
author | Jens Arnold <amiconn@rockbox.org> | 2007-07-12 22:12:25 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2007-07-12 22:12:25 +0000 |
commit | 42bd5b46f09556e04994981e83d8da397912a303 (patch) | |
tree | 7f8d3bd685ff7719d257874459eac131724cd372 /apps/codecs/libwma/bswap.h | |
parent | d7dd23939a9b9130ca26f94f122efd08e10bcc33 (diff) | |
download | rockbox-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.h | 25 |
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 | |||
20 | static 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) | ||
14 | static inline unsigned short ByteSwap16(unsigned short x) | 35 | static 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) \ |