Mercurial > libavutil.hg
annotate arm/bswap.h @ 993:f8db9a2bae05 libavutil
Add av_ prefix to bswap macros
author | mru |
---|---|
date | Sat, 10 Jul 2010 22:12:30 +0000 |
parents | 4d9ad0ed07d0 |
children |
rev | line source |
---|---|
582 | 1 /* |
2 * This file is part of FFmpeg. | |
3 * | |
4 * FFmpeg is free software; you can redistribute it and/or | |
5 * modify it under the terms of the GNU Lesser General Public | |
6 * License as published by the Free Software Foundation; either | |
7 * version 2.1 of the License, or (at your option) any later version. | |
8 * | |
9 * FFmpeg is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 * Lesser General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU Lesser General Public | |
15 * License along with FFmpeg; if not, write to the Free Software | |
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
17 */ | |
18 | |
19 #ifndef AVUTIL_ARM_BSWAP_H | |
20 #define AVUTIL_ARM_BSWAP_H | |
21 | |
22 #include <stdint.h> | |
23 #include "config.h" | |
873
4d9ad0ed07d0
Replace many includes of libavutil/common.h with what is actually needed
mru
parents:
846
diff
changeset
|
24 #include "libavutil/attributes.h" |
582 | 25 |
674 | 26 #ifdef __ARMCC_VERSION |
27 | |
28 #if HAVE_ARMV6 | |
993 | 29 #define av_bswap16 av_bswap16 |
30 static av_always_inline av_const unsigned av_bswap16(unsigned x) | |
674 | 31 { |
32 __asm { rev16 x, x } | |
33 return x; | |
34 } | |
35 | |
993 | 36 #define av_bswap32 av_bswap32 |
37 static av_always_inline av_const uint32_t av_bswap32(uint32_t x) | |
674 | 38 { |
39 return __rev(x); | |
40 } | |
41 #endif /* HAVE_ARMV6 */ | |
42 | |
744 | 43 #elif HAVE_INLINE_ASM |
674 | 44 |
603 | 45 #if HAVE_ARMV6 |
993 | 46 #define av_bswap16 av_bswap16 |
47 static av_always_inline av_const unsigned av_bswap16(unsigned x) | |
582 | 48 { |
49 __asm__("rev16 %0, %0" : "+r"(x)); | |
50 return x; | |
51 } | |
52 #endif | |
53 | |
993 | 54 #define av_bswap32 av_bswap32 |
55 static av_always_inline av_const uint32_t av_bswap32(uint32_t x) | |
582 | 56 { |
603 | 57 #if HAVE_ARMV6 |
582 | 58 __asm__("rev %0, %0" : "+r"(x)); |
59 #else | |
60 uint32_t t; | |
61 __asm__ ("eor %1, %0, %0, ror #16 \n\t" | |
62 "bic %1, %1, #0xFF0000 \n\t" | |
63 "mov %0, %0, ror #8 \n\t" | |
64 "eor %0, %0, %1, lsr #8 \n\t" | |
65 : "+r"(x), "=&r"(t)); | |
66 #endif /* HAVE_ARMV6 */ | |
67 return x; | |
68 } | |
69 | |
674 | 70 #endif /* __ARMCC_VERSION */ |
71 | |
582 | 72 #endif /* AVUTIL_ARM_BSWAP_H */ |