Mercurial > libavcodec.hg
annotate arm/asm.S @ 11032:01bd040f8607 libavcodec
Unroll main loop so the edge==0 case is seperate.
This allows many things to be simplified away.
h264 decoder is overall 1% faster with a mbaff sample and
0.1% slower with the cathedral sample, probably because the slow loop
filter code must be loaded into the code cache for each first MB of each
row but isnt used for the following MBs.
| author | michael |
|---|---|
| date | Thu, 28 Jan 2010 01:24:25 +0000 |
| parents | c44205b868dc |
| children | 361a5fcb4393 |
| rev | line source |
|---|---|
| 8068 | 1 /* |
| 2 * Copyright (c) 2008 Mans Rullgard <mans@mansr.com> | |
| 3 * | |
| 4 * This file is part of FFmpeg. | |
| 5 * | |
| 6 * FFmpeg is free software; you can redistribute it and/or | |
| 7 * modify it under the terms of the GNU Lesser General Public | |
| 8 * License as published by the Free Software Foundation; either | |
| 9 * version 2.1 of the License, or (at your option) any later version. | |
| 10 * | |
| 11 * FFmpeg is distributed in the hope that it will be useful, | |
| 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 14 * Lesser General Public License for more details. | |
| 15 * | |
| 16 * You should have received a copy of the GNU Lesser General Public | |
| 17 * License along with FFmpeg; if not, write to the Free Software | |
| 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
| 19 */ | |
| 20 | |
|
8507
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
21 #include "config.h" |
|
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
22 |
|
9991
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
23 #ifdef __ELF__ |
|
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
24 # define ELF |
|
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
25 #else |
|
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
26 # define ELF @ |
|
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
27 #endif |
|
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
28 |
| 8068 | 29 .macro require8, val=1 |
|
9991
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
30 ELF .eabi_attribute 24, \val |
| 8068 | 31 .endm |
| 32 | |
| 33 .macro preserve8, val=1 | |
|
9991
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
34 ELF .eabi_attribute 25, \val |
| 8068 | 35 .endm |
| 36 | |
| 37 .macro function name, export=0 | |
| 38 .if \export | |
| 10346 | 39 .global EXTERN_ASM\name |
| 40 EXTERN_ASM\name: | |
| 8068 | 41 .endif |
|
9991
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
42 ELF .type \name, %function |
| 8068 | 43 .func \name |
| 44 \name: | |
| 45 .endm | |
|
8507
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
46 |
|
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
47 .macro movrel rd, val |
|
10384
c44205b868dc
ARM: simplify movrel definition as CONFIG_PIC is now set for shared libs
mru
parents:
10346
diff
changeset
|
48 #if HAVE_ARMV6T2 && !CONFIG_PIC |
|
8507
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
49 movw \rd, #:lower16:\val |
|
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
50 movt \rd, #:upper16:\val |
|
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
51 #else |
|
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
52 ldr \rd, =\val |
|
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
53 #endif |
|
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
54 .endm |
| 9968 | 55 |
| 56 #if HAVE_VFP_ARGS | |
| 57 .eabi_attribute 28, 1 | |
| 58 # define VFP | |
| 59 # define NOVFP @ | |
| 60 #else | |
| 61 # define VFP @ | |
| 62 # define NOVFP | |
| 63 #endif | |
| 10346 | 64 |
| 65 #define GLUE(a, b) a ## b | |
| 66 #define JOIN(a, b) GLUE(a, b) | |
| 67 #define X(s) JOIN(EXTERN_ASM, s) |
