Mercurial > libavutil.hg
annotate arm/bswap.h @ 922:2acb0b1891c0 libavutil
av_default_item_name() so Simply AVClasses need 1 function less.
author | michael |
---|---|
date | Wed, 19 May 2010 22:45:04 +0000 |
parents | 4d9ad0ed07d0 |
children | f8db9a2bae05 |
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 | |
29 #define bswap_16 bswap_16 | |
846
3942cf6cdad3
ARM: change argument/return type of bswap_16() to unsigned 32-bit
mru
parents:
744
diff
changeset
|
30 static av_always_inline av_const unsigned bswap_16(unsigned x) |
674 | 31 { |
32 __asm { rev16 x, x } | |
33 return x; | |
34 } | |
35 | |
36 #define bswap_32 bswap_32 | |
37 static av_always_inline av_const uint32_t bswap_32(uint32_t x) | |
38 { | |
39 return __rev(x); | |
40 } | |
41 #endif /* HAVE_ARMV6 */ | |
42 | |
744 | 43 #elif HAVE_INLINE_ASM |
674 | 44 |
603 | 45 #if HAVE_ARMV6 |
582 | 46 #define bswap_16 bswap_16 |
846
3942cf6cdad3
ARM: change argument/return type of bswap_16() to unsigned 32-bit
mru
parents:
744
diff
changeset
|
47 static av_always_inline av_const unsigned bswap_16(unsigned x) |
582 | 48 { |
49 __asm__("rev16 %0, %0" : "+r"(x)); | |
50 return x; | |
51 } | |
52 #endif | |
53 | |
54 #define bswap_32 bswap_32 | |
55 static av_always_inline av_const uint32_t bswap_32(uint32_t x) | |
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 */ |