diff options
Diffstat (limited to 'ffmpeg1/libavutil/arm')
| -rw-r--r-- | ffmpeg1/libavutil/arm/Makefile | 8 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/asm.S | 304 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/bswap.h | 67 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/cpu.c | 146 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/cpu.h | 32 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/float_dsp_arm.h | 29 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/float_dsp_init_arm.c | 33 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/float_dsp_init_neon.c | 58 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/float_dsp_init_vfp.c | 38 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/float_dsp_neon.S | 271 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/float_dsp_vfp.S | 137 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/intmath.h | 110 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/intreadwrite.h | 91 | ||||
| -rw-r--r-- | ffmpeg1/libavutil/arm/timer.h | 40 |
14 files changed, 0 insertions, 1364 deletions
diff --git a/ffmpeg1/libavutil/arm/Makefile b/ffmpeg1/libavutil/arm/Makefile deleted file mode 100644 index 5da44b0..0000000 --- a/ffmpeg1/libavutil/arm/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -OBJS += arm/cpu.o \ - arm/float_dsp_init_arm.o \ - -VFP-OBJS += arm/float_dsp_init_vfp.o \ - arm/float_dsp_vfp.o \ - -NEON-OBJS += arm/float_dsp_init_neon.o \ - arm/float_dsp_neon.o \ diff --git a/ffmpeg1/libavutil/arm/asm.S b/ffmpeg1/libavutil/arm/asm.S deleted file mode 100644 index 6061e47..0000000 --- a/ffmpeg1/libavutil/arm/asm.S +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright (c) 2008 Mans Rullgard <mans@mansr.com> - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" - -#ifdef __ELF__ -# define ELF -#else -# define ELF @ -#endif - -#if CONFIG_THUMB -# define A @ -# define T -#else -# define A -# define T @ -#endif - -#if HAVE_NEON - .arch armv7-a -#elif HAVE_ARMV6T2 - .arch armv6t2 -#elif HAVE_ARMV6 - .arch armv6 -#elif HAVE_ARMV5TE - .arch armv5te -#endif - -#if HAVE_NEON - .fpu neon -#elif HAVE_VFP - .fpu vfp -#endif - - .syntax unified -T .thumb -ELF .eabi_attribute 25, 1 @ Tag_ABI_align_preserved - -.macro function name, export=0 - .set .Lpic_idx, 0 - .set .Lpic_gp, 0 - .macro endfunc - .if .Lpic_idx - .align 2 - .altmacro - put_pic %(.Lpic_idx - 1) - .noaltmacro - .endif -ELF .size \name, . - \name - .endfunc - .purgem endfunc - .endm - .text - .align 2 - .if \export - .global EXTERN_ASM\name -EXTERN_ASM\name: - .endif -ELF .type \name, %function - .func \name -\name: -.endm - -.macro const name, align=2 - .macro endconst -ELF .size \name, . - \name - .purgem endconst - .endm - .section .rodata - .align \align -\name: -.endm - -#if !HAVE_ARMV6T2_EXTERNAL -.macro movw rd, val - mov \rd, \val & 255 - orr \rd, \val & ~255 -.endm -#endif - -.macro mov32 rd, val -#if HAVE_ARMV6T2_EXTERNAL - movw \rd, #(\val) & 0xffff - .if (\val) >> 16 - movt \rd, #(\val) >> 16 - .endif -#else - ldr \rd, =\val -#endif -.endm - -.macro put_pic num - put_pic_\num -.endm - -.macro do_def_pic num, val, label - .macro put_pic_\num - .if \num - .altmacro - put_pic %(\num - 1) - .noaltmacro - .endif -\label: .word \val - .purgem put_pic_\num - .endm -.endm - -.macro def_pic val, label - .altmacro - do_def_pic %.Lpic_idx, \val, \label - .noaltmacro - .set .Lpic_idx, .Lpic_idx + 1 -.endm - -.macro ldpic rd, val, indir=0 - ldr \rd, .Lpicoff\@ -.Lpic\@: - .if \indir -A ldr \rd, [pc, \rd] -T add \rd, pc -T ldr \rd, [\rd] - .else - add \rd, pc - .endif - def_pic \val - (.Lpic\@ + (8 >> CONFIG_THUMB)), .Lpicoff\@ -.endm - -.macro movrel rd, val -#if CONFIG_PIC - ldpic \rd, \val -#elif HAVE_ARMV6T2_EXTERNAL && !defined(__APPLE__) - movw \rd, #:lower16:\val - movt \rd, #:upper16:\val -#else - ldr \rd, =\val -#endif -.endm - -.macro movrelx rd, val, gp -#if CONFIG_PIC && defined(__ELF__) - .ifnb \gp - .if .Lpic_gp - .unreq gp - .endif - gp .req \gp - ldpic gp, _GLOBAL_OFFSET_TABLE_ - .elseif !.Lpic_gp - gp .req r12 - ldpic gp, _GLOBAL_OFFSET_TABLE_ - .endif - .set .Lpic_gp, 1 - ldr \rd, .Lpicoff\@ - ldr \rd, [gp, \rd] - def_pic \val(GOT), .Lpicoff\@ -#elif CONFIG_PIC && defined(__APPLE__) - ldpic \rd, .Lpic\@, indir=1 - .non_lazy_symbol_pointer -.Lpic\@: - .indirect_symbol \val - .word 0 - .text -#else - movrel \rd, \val -#endif -.endm - -.macro add_sh rd, rn, rm, sh:vararg -A add \rd, \rn, \rm, \sh -T mov \rm, \rm, \sh -T add \rd, \rn, \rm -.endm - -.macro ldr_pre rt, rn, rm:vararg -A ldr \rt, [\rn, \rm]! -T add \rn, \rn, \rm -T ldr \rt, [\rn] -.endm - -.macro ldr_dpre rt, rn, rm:vararg -A ldr \rt, [\rn, -\rm]! -T sub \rn, \rn, \rm -T ldr \rt, [\rn] -.endm - -.macro ldr_nreg rt, rn, rm:vararg -A ldr \rt, [\rn, -\rm] -T sub \rt, \rn, \rm -T ldr \rt, [\rt] -.endm - -.macro ldr_post rt, rn, rm:vararg -A ldr \rt, [\rn], \rm -T ldr \rt, [\rn] -T add \rn, \rn, \rm -.endm - -.macro ldrd_reg rt, rt2, rn, rm -A ldrd \rt, \rt2, [\rn, \rm] -T add \rt, \rn, \rm -T ldrd \rt, \rt2, [\rt] -.endm - -.macro ldrd_post rt, rt2, rn, rm -A ldrd \rt, \rt2, [\rn], \rm -T ldrd \rt, \rt2, [\rn] -T add \rn, \rn, \rm -.endm - -.macro ldrh_pre rt, rn, rm -A ldrh \rt, [\rn, \rm]! -T add \rn, \rn, \rm -T ldrh \rt, [\rn] -.endm - -.macro ldrh_dpre rt, rn, rm -A ldrh \rt, [\rn, -\rm]! -T sub \rn, \rn, \rm -T ldrh \rt, [\rn] -.endm - -.macro ldrh_post rt, rn, rm -A ldrh \rt, [\rn], \rm -T ldrh \rt, [\rn] -T add \rn, \rn, \rm -.endm - -.macro ldrb_post rt, rn, rm -A ldrb \rt, [\rn], \rm -T ldrb \rt, [\rn] -T add \rn, \rn, \rm -.endm - -.macro str_post rt, rn, rm:vararg -A str \rt, [\rn], \rm -T str \rt, [\rn] -T add \rn, \rn, \rm -.endm - -.macro strb_post rt, rn, rm:vararg -A strb \rt, [\rn], \rm -T strb \rt, [\rn] -T add \rn, \rn, \rm -.endm - -.macro strd_post rt, rt2, rn, rm -A strd \rt, \rt2, [\rn], \rm -T strd \rt, \rt2, [\rn] -T add \rn, \rn, \rm -.endm - -.macro strh_pre rt, rn, rm -A strh \rt, [\rn, \rm]! -T add \rn, \rn, \rm -T strh \rt, [\rn] -.endm - -.macro strh_dpre rt, rn, rm -A strh \rt, [\rn, -\rm]! -T sub \rn, \rn, \rm -T strh \rt, [\rn] -.endm - -.macro strh_post rt, rn, rm -A strh \rt, [\rn], \rm -T strh \rt, [\rn] -T add \rn, \rn, \rm -.endm - -.macro strh_dpost rt, rn, rm -A strh \rt, [\rn], -\rm -T strh \rt, [\rn] -T sub \rn, \rn, \rm -.endm - -#if HAVE_VFP_ARGS - .eabi_attribute 28, 1 -# define VFP -# define NOVFP @ -#else -# define VFP @ -# define NOVFP -#endif - -#define GLUE(a, b) a ## b -#define JOIN(a, b) GLUE(a, b) -#define X(s) JOIN(EXTERN_ASM, s) diff --git a/ffmpeg1/libavutil/arm/bswap.h b/ffmpeg1/libavutil/arm/bswap.h deleted file mode 100644 index ae5fdb7..0000000 --- a/ffmpeg1/libavutil/arm/bswap.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_ARM_BSWAP_H -#define AVUTIL_ARM_BSWAP_H - -#include <stdint.h> -#include "config.h" -#include "libavutil/attributes.h" - -#ifdef __ARMCC_VERSION - -#if HAVE_ARMV6 -#define av_bswap32 av_bswap32 -static av_always_inline av_const uint32_t av_bswap32(uint32_t x) -{ - return __rev(x); -} -#endif /* HAVE_ARMV6 */ - -#elif HAVE_INLINE_ASM - -#if HAVE_ARMV6_INLINE -#define av_bswap16 av_bswap16 -static av_always_inline av_const unsigned av_bswap16(unsigned x) -{ - __asm__("rev16 %0, %0" : "+r"(x)); - return x; -} -#endif - -#if !AV_GCC_VERSION_AT_LEAST(4,5) -#define av_bswap32 av_bswap32 -static av_always_inline av_const uint32_t av_bswap32(uint32_t x) -{ -#if HAVE_ARMV6_INLINE - __asm__("rev %0, %0" : "+r"(x)); -#else - uint32_t t; - __asm__ ("eor %1, %0, %0, ror #16 \n\t" - "bic %1, %1, #0xFF0000 \n\t" - "mov %0, %0, ror #8 \n\t" - "eor %0, %0, %1, lsr #8 \n\t" - : "+r"(x), "=&r"(t)); -#endif /* HAVE_ARMV6_INLINE */ - return x; -} -#endif /* !AV_GCC_VERSION_AT_LEAST(4,5) */ - -#endif /* __ARMCC_VERSION */ - -#endif /* AVUTIL_ARM_BSWAP_H */ diff --git a/ffmpeg1/libavutil/arm/cpu.c b/ffmpeg1/libavutil/arm/cpu.c deleted file mode 100644 index b4aabc3..0000000 --- a/ffmpeg1/libavutil/arm/cpu.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "libavutil/cpu.h" -#include "config.h" - -#define CORE_FLAG(f) \ - (AV_CPU_FLAG_ ## f * (HAVE_ ## f ## _EXTERNAL || HAVE_ ## f ## _INLINE)) - -#define CORE_CPU_FLAGS \ - (CORE_FLAG(ARMV5TE) | \ - CORE_FLAG(ARMV6) | \ - CORE_FLAG(ARMV6T2) | \ - CORE_FLAG(VFP) | \ - CORE_FLAG(VFPV3) | \ - CORE_FLAG(NEON)) - -#if defined __linux__ || defined __ANDROID__ - -#include <stdint.h> -#include <stdio.h> -#include <string.h> -#include "libavutil/avstring.h" - -#define AT_HWCAP 16 - -/* Relevant HWCAP values from kernel headers */ -#define HWCAP_VFP (1 << 6) -#define HWCAP_EDSP (1 << 7) -#define HWCAP_THUMBEE (1 << 11) -#define HWCAP_NEON (1 << 12) -#define HWCAP_VFPv3 (1 << 13) -#define HWCAP_TLS (1 << 15) - -static int get_hwcap(uint32_t *hwcap) -{ - struct { uint32_t a_type; uint32_t a_val; } auxv; - FILE *f = fopen("/proc/self/auxv", "r"); - int err = -1; - - if (!f) - return -1; - - while (fread(&auxv, sizeof(auxv), 1, f) > 0) { - if (auxv.a_type == AT_HWCAP) { - *hwcap = auxv.a_val; - err = 0; - break; - } - } - - fclose(f); - return err; -} - -static int get_cpuinfo(uint32_t *hwcap) -{ - FILE *f = fopen("/proc/cpuinfo", "r"); - char buf[200]; - - if (!f) - return -1; - - *hwcap = 0; - while (fgets(buf, sizeof(buf), f)) { - if (av_strstart(buf, "Features", NULL)) { - if (strstr(buf, " edsp ")) - *hwcap |= HWCAP_EDSP; - if (strstr(buf, " tls ")) - *hwcap |= HWCAP_TLS; - if (strstr(buf, " thumbee ")) - *hwcap |= HWCAP_THUMBEE; - if (strstr(buf, " vfp ")) - *hwcap |= HWCAP_VFP; - if (strstr(buf, " vfpv3 ")) - *hwcap |= HWCAP_VFPv3; - if (strstr(buf, " neon ")) - *hwcap |= HWCAP_NEON; - break; - } - } - fclose(f); - return 0; -} - -int ff_get_cpu_flags_arm(void) -{ - int flags = CORE_CPU_FLAGS; - uint32_t hwcap; - - if (get_hwcap(&hwcap) < 0) - if (get_cpuinfo(&hwcap) < 0) - return flags; - -#define check_cap(cap, flag) do { \ - if (hwcap & HWCAP_ ## cap) \ - flags |= AV_CPU_FLAG_ ## flag; \ - } while (0) - - /* No flags explicitly indicate v6 or v6T2 so check others which - imply support. */ - check_cap(EDSP, ARMV5TE); - check_cap(TLS, ARMV6); - check_cap(THUMBEE, ARMV6T2); - check_cap(VFP, VFP); - check_cap(VFPv3, VFPV3); - check_cap(NEON, NEON); - - /* The v6 checks above are not reliable so let higher flags - trickle down. */ - if (flags & (AV_CPU_FLAG_VFPV3 | AV_CPU_FLAG_NEON)) - flags |= AV_CPU_FLAG_ARMV6T2; - if (flags & AV_CPU_FLAG_ARMV6T2) - flags |= AV_CPU_FLAG_ARMV6; - - return flags; -} - -#else - -int ff_get_cpu_flags_arm(void) -{ - return AV_CPU_FLAG_ARMV5TE * HAVE_ARMV5TE | - AV_CPU_FLAG_ARMV6 * HAVE_ARMV6 | - AV_CPU_FLAG_ARMV6T2 * HAVE_ARMV6T2 | - AV_CPU_FLAG_VFP * HAVE_VFP | - AV_CPU_FLAG_VFPV3 * HAVE_VFPV3 | - AV_CPU_FLAG_NEON * HAVE_NEON; -} - -#endif diff --git a/ffmpeg1/libavutil/arm/cpu.h b/ffmpeg1/libavutil/arm/cpu.h deleted file mode 100644 index 91c959a..0000000 --- a/ffmpeg1/libavutil/arm/cpu.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_ARM_CPU_H -#define AVUTIL_ARM_CPU_H - -#include "config.h" -#include "libavutil/cpu.h" - -#define have_armv5te(flags) (HAVE_ARMV5TE && ((flags) & AV_CPU_FLAG_ARMV5TE)) -#define have_armv6(flags) (HAVE_ARMV6 && ((flags) & AV_CPU_FLAG_ARMV6)) -#define have_armv6t2(flags) (HAVE_ARMV6T2 && ((flags) & AV_CPU_FLAG_ARMV6T2)) -#define have_vfp(flags) (HAVE_VFP && ((flags) & AV_CPU_FLAG_VFP)) -#define have_vfpv3(flags) (HAVE_VFPV3 && ((flags) & AV_CPU_FLAG_VFPV3)) -#define have_neon(flags) (HAVE_NEON && ((flags) & AV_CPU_FLAG_NEON)) - -#endif diff --git a/ffmpeg1/libavutil/arm/float_dsp_arm.h b/ffmpeg1/libavutil/arm/float_dsp_arm.h deleted file mode 100644 index f3fafe3..0000000 --- a/ffmpeg1/libavutil/arm/float_dsp_arm.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2009 Mans Rullgard <mans@mansr.com> - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_ARM_FLOAT_DSP_ARM_H -#define AVUTIL_ARM_FLOAT_DSP_ARM_H - -#include "libavutil/float_dsp.h" - -void ff_float_dsp_init_vfp (AVFloatDSPContext *fdsp); -void ff_float_dsp_init_neon(AVFloatDSPContext *fdsp); - -#endif /* AVUTIL_ARM_FLOAT_DSP_ARM_H */ diff --git a/ffmpeg1/libavutil/arm/float_dsp_init_arm.c b/ffmpeg1/libavutil/arm/float_dsp_init_arm.c deleted file mode 100644 index f721344..0000000 --- a/ffmpeg1/libavutil/arm/float_dsp_init_arm.c +++ /dev/null @@ -1,33 +0,0 @@ -/* - * ARM optimized DSP utils - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "libavutil/float_dsp.h" -#include "cpu.h" -#include "float_dsp_arm.h" - -void ff_float_dsp_init_arm(AVFloatDSPContext *fdsp) -{ - int cpu_flags = av_get_cpu_flags(); - - if (have_vfp(cpu_flags)) - ff_float_dsp_init_vfp(fdsp); - if (have_neon(cpu_flags)) - ff_float_dsp_init_neon(fdsp); -} diff --git a/ffmpeg1/libavutil/arm/float_dsp_init_neon.c b/ffmpeg1/libavutil/arm/float_dsp_init_neon.c deleted file mode 100644 index a7245ad..0000000 --- a/ffmpeg1/libavutil/arm/float_dsp_init_neon.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * ARM NEON optimised Float DSP functions - * Copyright (c) 2008 Mans Rullgard <mans@mansr.com> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include <stdint.h> - -#include "libavutil/float_dsp.h" -#include "float_dsp_arm.h" - -void ff_vector_fmul_neon(float *dst, const float *src0, const float *src1, int len); - -void ff_vector_fmac_scalar_neon(float *dst, const float *src, float mul, - int len); - -void ff_vector_fmul_scalar_neon(float *dst, const float *src, float mul, - int len); - -void ff_vector_fmul_window_neon(float *dst, const float *src0, - const float *src1, const float *win, int len); - -void ff_vector_fmul_add_neon(float *dst, const float *src0, const float *src1, - const float *src2, int len); - -void ff_vector_fmul_reverse_neon(float *dst, const float *src0, - const float *src1, int len); - -void ff_butterflies_float_neon(float *v1, float *v2, int len); - -float ff_scalarproduct_float_neon(const float *v1, const float *v2, int len); - -void ff_float_dsp_init_neon(AVFloatDSPContext *fdsp) -{ - fdsp->vector_fmul = ff_vector_fmul_neon; - fdsp->vector_fmac_scalar = ff_vector_fmac_scalar_neon; - fdsp->vector_fmul_scalar = ff_vector_fmul_scalar_neon; - fdsp->vector_fmul_window = ff_vector_fmul_window_neon; - fdsp->vector_fmul_add = ff_vector_fmul_add_neon; - fdsp->vector_fmul_reverse = ff_vector_fmul_reverse_neon; - fdsp->butterflies_float = ff_butterflies_float_neon; - fdsp->scalarproduct_float = ff_scalarproduct_float_neon; -} diff --git a/ffmpeg1/libavutil/arm/float_dsp_init_vfp.c b/ffmpeg1/libavutil/arm/float_dsp_init_vfp.c deleted file mode 100644 index f7e2f54..0000000 --- a/ffmpeg1/libavutil/arm/float_dsp_init_vfp.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2008 Siarhei Siamashka <ssvb@users.sourceforge.net> - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "libavutil/float_dsp.h" -#include "cpu.h" -#include "float_dsp_arm.h" - -void ff_vector_fmul_vfp(float *dst, const float *src0, const float *src1, - int len); - -void ff_vector_fmul_reverse_vfp(float *dst, const float *src0, - const float *src1, int len); - -void ff_float_dsp_init_vfp(AVFloatDSPContext *fdsp) -{ - int cpu_flags = av_get_cpu_flags(); - - if (!have_vfpv3(cpu_flags)) - fdsp->vector_fmul = ff_vector_fmul_vfp; - fdsp->vector_fmul_reverse = ff_vector_fmul_reverse_vfp; -} diff --git a/ffmpeg1/libavutil/arm/float_dsp_neon.S b/ffmpeg1/libavutil/arm/float_dsp_neon.S deleted file mode 100644 index 559b565..0000000 --- a/ffmpeg1/libavutil/arm/float_dsp_neon.S +++ /dev/null @@ -1,271 +0,0 @@ -/* - * ARM NEON optimised Float DSP functions - * Copyright (c) 2008 Mans Rullgard <mans@mansr.com> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" -#include "asm.S" - -function ff_vector_fmul_neon, export=1 - subs r3, r3, #8 - vld1.32 {d0-d3}, [r1,:128]! - vld1.32 {d4-d7}, [r2,:128]! - vmul.f32 q8, q0, q2 - vmul.f32 q9, q1, q3 - beq 3f - bics ip, r3, #15 - beq 2f -1: subs ip, ip, #16 - vld1.32 {d0-d1}, [r1,:128]! - vld1.32 {d4-d5}, [r2,:128]! - vmul.f32 q10, q0, q2 - vld1.32 {d2-d3}, [r1,:128]! - vld1.32 {d6-d7}, [r2,:128]! - vmul.f32 q11, q1, q3 - vst1.32 {d16-d19},[r0,:128]! - vld1.32 {d0-d1}, [r1,:128]! - vld1.32 {d4-d5}, [r2,:128]! - vmul.f32 q8, q0, q2 - vld1.32 {d2-d3}, [r1,:128]! - vld1.32 {d6-d7}, [r2,:128]! - vmul.f32 q9, q1, q3 - vst1.32 {d20-d23},[r0,:128]! - bne 1b - ands r3, r3, #15 - beq 3f -2: vld1.32 {d0-d1}, [r1,:128]! - vld1.32 {d4-d5}, [r2,:128]! - vst1.32 {d16-d17},[r0,:128]! - vmul.f32 q8, q0, q2 - vld1.32 {d2-d3}, [r1,:128]! - vld1.32 {d6-d7}, [r2,:128]! - vst1.32 {d18-d19},[r0,:128]! - vmul.f32 q9, q1, q3 -3: vst1.32 {d16-d19},[r0,:128]! - bx lr -endfunc - -function ff_vector_fmac_scalar_neon, export=1 -VFP len .req r2 -VFP acc .req r3 -NOVFP len .req r3 -NOVFP acc .req r2 -VFP vdup.32 q15, d0[0] -NOVFP vdup.32 q15, r2 - bics r12, len, #15 - mov acc, r0 - beq 3f - vld1.32 {q0}, [r1,:128]! - vld1.32 {q8}, [acc,:128]! - vld1.32 {q1}, [r1,:128]! - vld1.32 {q9}, [acc,:128]! -1: vmla.f32 q8, q0, q15 - vld1.32 {q2}, [r1,:128]! - vld1.32 {q10}, [acc,:128]! - vmla.f32 q9, q1, q15 - vld1.32 {q3}, [r1,:128]! - vld1.32 {q11}, [acc,:128]! - vmla.f32 q10, q2, q15 - vst1.32 {q8}, [r0,:128]! - vmla.f32 q11, q3, q15 - vst1.32 {q9}, [r0,:128]! - subs r12, r12, #16 - beq 2f - vld1.32 {q0}, [r1,:128]! - vld1.32 {q8}, [acc,:128]! - vst1.32 {q10}, [r0,:128]! - vld1.32 {q1}, [r1,:128]! - vld1.32 {q9}, [acc,:128]! - vst1.32 {q11}, [r0,:128]! - b 1b -2: vst1.32 {q10}, [r0,:128]! - vst1.32 {q11}, [r0,:128]! - ands len, len, #15 - it eq - bxeq lr -3: vld1.32 {q0}, [r1,:128]! - vld1.32 {q8}, [acc,:128]! - vmla.f32 q8, q0, q15 - vst1.32 {q8}, [r0,:128]! - subs len, len, #4 - bgt 3b - bx lr - .unreq len -endfunc - -function ff_vector_fmul_scalar_neon, export=1 -VFP len .req r2 -NOVFP len .req r3 -VFP vdup.32 q8, d0[0] -NOVFP vdup.32 q8, r2 - bics r12, len, #15 - beq 3f - vld1.32 {q0},[r1,:128]! - vld1.32 {q1},[r1,:128]! -1: vmul.f32 q0, q0, q8 - vld1.32 {q2},[r1,:128]! - vmul.f32 q1, q1, q8 - vld1.32 {q3},[r1,:128]! - vmul.f32 q2, q2, q8 - vst1.32 {q0},[r0,:128]! - vmul.f32 q3, q3, q8 - vst1.32 {q1},[r0,:128]! - subs r12, r12, #16 - beq 2f - vld1.32 {q0},[r1,:128]! - vst1.32 {q2},[r0,:128]! - vld1.32 {q1},[r1,:128]! - vst1.32 {q3},[r0,:128]! - b 1b -2: vst1.32 {q2},[r0,:128]! - vst1.32 {q3},[r0,:128]! - ands len, len, #15 - it eq - bxeq lr -3: vld1.32 {q0},[r1,:128]! - vmul.f32 q0, q0, q8 - vst1.32 {q0},[r0,:128]! - subs len, len, #4 - bgt 3b - bx lr - .unreq len -endfunc - -function ff_vector_fmul_window_neon, export=1 - push {r4,r5,lr} - ldr lr, [sp, #12] - sub r2, r2, #8 - sub r5, lr, #2 - add r2, r2, r5, lsl #2 - add r4, r3, r5, lsl #3 - add ip, r0, r5, lsl #3 - mov r5, #-16 - vld1.32 {d0,d1}, [r1,:128]! - vld1.32 {d2,d3}, [r2,:128], r5 - vld1.32 {d4,d5}, [r3,:128]! - vld1.32 {d6,d7}, [r4,:128], r5 -1: subs lr, lr, #4 - vmul.f32 d22, d0, d4 - vrev64.32 q3, q3 - vmul.f32 d23, d1, d5 - vrev64.32 q1, q1 - vmul.f32 d20, d0, d7 - vmul.f32 d21, d1, d6 - beq 2f - vmla.f32 d22, d3, d7 - vld1.32 {d0,d1}, [r1,:128]! - vmla.f32 d23, d2, d6 - vld1.32 {d18,d19},[r2,:128], r5 - vmls.f32 d20, d3, d4 - vld1.32 {d24,d25},[r3,:128]! - vmls.f32 d21, d2, d5 - vld1.32 {d6,d7}, [r4,:128], r5 - vmov q1, q9 - vrev64.32 q11, q11 - vmov q2, q12 - vswp d22, d23 - vst1.32 {d20,d21},[r0,:128]! - vst1.32 {d22,d23},[ip,:128], r5 - b 1b -2: vmla.f32 d22, d3, d7 - vmla.f32 d23, d2, d6 - vmls.f32 d20, d3, d4 - vmls.f32 d21, d2, d5 - vrev64.32 q11, q11 - vswp d22, d23 - vst1.32 {d20,d21},[r0,:128]! - vst1.32 {d22,d23},[ip,:128], r5 - pop {r4,r5,pc} -endfunc - -function ff_vector_fmul_add_neon, export=1 - ldr r12, [sp] - vld1.32 {q0-q1}, [r1,:128]! - vld1.32 {q8-q9}, [r2,:128]! - vld1.32 {q2-q3}, [r3,:128]! - vmul.f32 q10, q0, q8 - vmul.f32 q11, q1, q9 -1: vadd.f32 q12, q2, q10 - vadd.f32 q13, q3, q11 - pld [r1, #16] - pld [r2, #16] - pld [r3, #16] - subs r12, r12, #8 - beq 2f - vld1.32 {q0}, [r1,:128]! - vld1.32 {q8}, [r2,:128]! - vmul.f32 q10, q0, q8 - vld1.32 {q1}, [r1,:128]! - vld1.32 {q9}, [r2,:128]! - vmul.f32 q11, q1, q9 - vld1.32 {q2-q3}, [r3,:128]! - vst1.32 {q12-q13},[r0,:128]! - b 1b -2: vst1.32 {q12-q13},[r0,:128]! - bx lr -endfunc - -function ff_vector_fmul_reverse_neon, export=1 - add r2, r2, r3, lsl #2 - sub r2, r2, #32 - mov r12, #-32 - vld1.32 {q0-q1}, [r1,:128]! - vld1.32 {q2-q3}, [r2,:128], r12 -1: pld [r1, #32] - vrev64.32 q3, q3 - vmul.f32 d16, d0, d7 - vmul.f32 d17, d1, d6 - pld [r2, #-32] - vrev64.32 q2, q2 - vmul.f32 d18, d2, d5 - vmul.f32 d19, d3, d4 - subs r3, r3, #8 - beq 2f - vld1.32 {q0-q1}, [r1,:128]! - vld1.32 {q2-q3}, [r2,:128], r12 - vst1.32 {q8-q9}, [r0,:128]! - b 1b -2: vst1.32 {q8-q9}, [r0,:128]! - bx lr -endfunc - -function ff_butterflies_float_neon, export=1 -1: vld1.32 {q0},[r0,:128] - vld1.32 {q1},[r1,:128] - vsub.f32 q2, q0, q1 - vadd.f32 q1, q0, q1 - vst1.32 {q2},[r1,:128]! - vst1.32 {q1},[r0,:128]! - subs r2, r2, #4 - bgt 1b - bx lr -endfunc - -function ff_scalarproduct_float_neon, export=1 - vmov.f32 q2, #0.0 -1: vld1.32 {q0},[r0,:128]! - vld1.32 {q1},[r1,:128]! - vmla.f32 q2, q0, q1 - subs r2, r2, #4 - bgt 1b - vadd.f32 d0, d4, d5 - vpadd.f32 d0, d0, d0 -NOVFP vmov.32 r0, d0[0] - bx lr -endfunc diff --git a/ffmpeg1/libavutil/arm/float_dsp_vfp.S b/ffmpeg1/libavutil/arm/float_dsp_vfp.S deleted file mode 100644 index 8695fbd..0000000 --- a/ffmpeg1/libavutil/arm/float_dsp_vfp.S +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2008 Siarhei Siamashka <ssvb@users.sourceforge.net> - * - * This file is part of FFmpeg - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" -#include "asm.S" - -/** - * Assume that len is a positive number and is multiple of 8 - */ -@ void ff_vector_fmul_vfp(float *dst, const float *src0, const float *src1, int len) -function ff_vector_fmul_vfp, export=1 - vpush {d8-d15} - fmrx r12, fpscr - orr r12, r12, #(3 << 16) /* set vector size to 4 */ - fmxr fpscr, r12 - - vldmia r1!, {s0-s3} - vldmia r2!, {s8-s11} - vldmia r1!, {s4-s7} - vldmia r2!, {s12-s15} - vmul.f32 s8, s0, s8 -1: - subs r3, r3, #16 - vmul.f32 s12, s4, s12 - itttt ge - vldmiage r1!, {s16-s19} - vldmiage r2!, {s24-s27} - vldmiage r1!, {s20-s23} - vldmiage r2!, {s28-s31} - it ge - vmulge.f32 s24, s16, s24 - vstmia r0!, {s8-s11} - vstmia r0!, {s12-s15} - it ge - vmulge.f32 s28, s20, s28 - itttt gt - vldmiagt r1!, {s0-s3} - vldmiagt r2!, {s8-s11} - vldmiagt r1!, {s4-s7} - vldmiagt r2!, {s12-s15} - ittt ge - vmulge.f32 s8, s0, s8 - vstmiage r0!, {s24-s27} - vstmiage r0!, {s28-s31} - bgt 1b - - bic r12, r12, #(7 << 16) /* set vector size back to 1 */ - fmxr fpscr, r12 - vpop {d8-d15} - bx lr -endfunc - -/** - * ARM VFP optimized implementation of 'vector_fmul_reverse_c' function. - * Assume that len is a positive number and is multiple of 8 - */ -@ void ff_vector_fmul_reverse_vfp(float *dst, const float *src0, -@ const float *src1, int len) -function ff_vector_fmul_reverse_vfp, export=1 - vpush {d8-d15} - add r2, r2, r3, lsl #2 - vldmdb r2!, {s0-s3} - vldmia r1!, {s8-s11} - vldmdb r2!, {s4-s7} - vldmia r1!, {s12-s15} - vmul.f32 s8, s3, s8 - vmul.f32 s9, s2, s9 - vmul.f32 s10, s1, s10 - vmul.f32 s11, s0, s11 -1: - subs r3, r3, #16 - it ge - vldmdbge r2!, {s16-s19} - vmul.f32 s12, s7, s12 - it ge - vldmiage r1!, {s24-s27} - vmul.f32 s13, s6, s13 - it ge - vldmdbge r2!, {s20-s23} - vmul.f32 s14, s5, s14 - it ge - vldmiage r1!, {s28-s31} - vmul.f32 s15, s4, s15 - it ge - vmulge.f32 s24, s19, s24 - it gt - vldmdbgt r2!, {s0-s3} - it ge - vmulge.f32 s25, s18, s25 - vstmia r0!, {s8-s13} - it ge - vmulge.f32 s26, s17, s26 - it gt - vldmiagt r1!, {s8-s11} - itt ge - vmulge.f32 s27, s16, s27 - vmulge.f32 s28, s23, s28 - it gt - vldmdbgt r2!, {s4-s7} - it ge - vmulge.f32 s29, s22, s29 - vstmia r0!, {s14-s15} - ittt ge - vmulge.f32 s30, s21, s30 - vmulge.f32 s31, s20, s31 - vmulge.f32 s8, s3, s8 - it gt - vldmiagt r1!, {s12-s15} - itttt ge - vmulge.f32 s9, s2, s9 - vmulge.f32 s10, s1, s10 - vstmiage r0!, {s24-s27} - vmulge.f32 s11, s0, s11 - it ge - vstmiage r0!, {s28-s31} - bgt 1b - - vpop {d8-d15} - bx lr -endfunc diff --git a/ffmpeg1/libavutil/arm/intmath.h b/ffmpeg1/libavutil/arm/intmath.h deleted file mode 100644 index fd52648..0000000 --- a/ffmpeg1/libavutil/arm/intmath.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2010 Mans Rullgard <mans@mansr.com> - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_ARM_INTMATH_H -#define AVUTIL_ARM_INTMATH_H - -#include <stdint.h> - -#include "config.h" -#include "libavutil/attributes.h" - -#if HAVE_INLINE_ASM - -#if HAVE_ARMV6_INLINE - -#define av_clip_uint8 av_clip_uint8_arm -static av_always_inline av_const unsigned av_clip_uint8_arm(int a) -{ - unsigned x; - __asm__ ("usat %0, #8, %1" : "=r"(x) : "r"(a)); - return x; -} - -#define av_clip_int8 av_clip_int8_arm -static av_always_inline av_const int av_clip_int8_arm(int a) -{ - int x; - __asm__ ("ssat %0, #8, %1" : "=r"(x) : "r"(a)); - return x; -} - -#define av_clip_uint16 av_clip_uint16_arm -static av_always_inline av_const unsigned av_clip_uint16_arm(int a) -{ - unsigned x; - __asm__ ("usat %0, #16, %1" : "=r"(x) : "r"(a)); - return x; -} - -#define av_clip_int16 av_clip_int16_arm -static av_always_inline av_const int av_clip_int16_arm(int a) -{ - int x; - __asm__ ("ssat %0, #16, %1" : "=r"(x) : "r"(a)); - return x; -} - -#define av_clip_uintp2 av_clip_uintp2_arm -static av_always_inline av_const unsigned av_clip_uintp2_arm(int a, int p) -{ - unsigned x; - __asm__ ("usat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p)); - return x; -} - -#define av_sat_add32 av_sat_add32_arm -static av_always_inline int av_sat_add32_arm(int a, int b) -{ - int r; - __asm__ ("qadd %0, %1, %2" : "=r"(r) : "r"(a), "r"(b)); - return r; -} - -#define av_sat_dadd32 av_sat_dadd32_arm -static av_always_inline int av_sat_dadd32_arm(int a, int b) -{ - int r; - __asm__ ("qdadd %0, %1, %2" : "=r"(r) : "r"(a), "r"(b)); - return r; -} - -#endif /* HAVE_ARMV6_INLINE */ - -#if HAVE_ASM_MOD_Q - -#define av_clipl_int32 av_clipl_int32_arm -static av_always_inline av_const int32_t av_clipl_int32_arm(int64_t a) -{ - int x, y; - __asm__ ("adds %1, %R2, %Q2, lsr #31 \n\t" - "itet ne \n\t" - "mvnne %1, #1<<31 \n\t" - "moveq %0, %Q2 \n\t" - "eorne %0, %1, %R2, asr #31 \n\t" - : "=r"(x), "=&r"(y) : "r"(a) : "cc"); - return x; -} - -#endif /* HAVE_ASM_MOD_Q */ - -#endif /* HAVE_INLINE_ASM */ - -#endif /* AVUTIL_ARM_INTMATH_H */ diff --git a/ffmpeg1/libavutil/arm/intreadwrite.h b/ffmpeg1/libavutil/arm/intreadwrite.h deleted file mode 100644 index 2340a9a..0000000 --- a/ffmpeg1/libavutil/arm/intreadwrite.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_ARM_INTREADWRITE_H -#define AVUTIL_ARM_INTREADWRITE_H - -#include <stdint.h> -#include "config.h" -#include "libavutil/attributes.h" - -#if HAVE_FAST_UNALIGNED && HAVE_INLINE_ASM && !AV_GCC_VERSION_AT_LEAST(4,7) - -#define AV_RN16 AV_RN16 -static av_always_inline unsigned AV_RN16(const void *p) -{ - const uint8_t *q = p; - unsigned v; -#if !AV_GCC_VERSION_AT_LEAST(4,6) - __asm__ ("ldrh %0, %1" : "=r"(v) : "m"(*(const uint16_t *)q)); -#elif defined __thumb__ - __asm__ ("ldrh %0, %1" : "=r"(v) : "m"(q[0]), "m"(q[1])); -#else - __asm__ ("ldrh %0, %1" : "=r"(v) : "Uq"(q[0]), "m"(q[1])); -#endif - return v; -} - -#define AV_WN16 AV_WN16 -static av_always_inline void AV_WN16(void *p, uint16_t v) -{ - __asm__ ("strh %1, %0" : "=m"(*(uint16_t *)p) : "r"(v)); -} - -#define AV_RN32 AV_RN32 -static av_always_inline uint32_t AV_RN32(const void *p) -{ - const struct __attribute__((packed)) { uint32_t v; } *q = p; - uint32_t v; - __asm__ ("ldr %0, %1" : "=r"(v) : "m"(*q)); - return v; -} - -#define AV_WN32 AV_WN32 -static av_always_inline void AV_WN32(void *p, uint32_t v) -{ - __asm__ ("str %1, %0" : "=m"(*(uint32_t *)p) : "r"(v)); -} - -#if HAVE_ASM_MOD_Q - -#define AV_RN64 AV_RN64 -static av_always_inline uint64_t AV_RN64(const void *p) -{ - const struct __attribute__((packed)) { uint32_t v; } *q = p; - uint64_t v; - __asm__ ("ldr %Q0, %1 \n\t" - "ldr %R0, %2 \n\t" - : "=&r"(v) - : "m"(q[0]), "m"(q[1])); - return v; -} - -#define AV_WN64 AV_WN64 -static av_always_inline void AV_WN64(void *p, uint64_t v) -{ - __asm__ ("str %Q2, %0 \n\t" - "str %R2, %1 \n\t" - : "=m"(*(uint32_t*)p), "=m"(*((uint32_t*)p+1)) - : "r"(v)); -} - -#endif /* HAVE_ASM_MOD_Q */ - -#endif /* HAVE_INLINE_ASM */ - -#endif /* AVUTIL_ARM_INTREADWRITE_H */ diff --git a/ffmpeg1/libavutil/arm/timer.h b/ffmpeg1/libavutil/arm/timer.h deleted file mode 100644 index 5e8bc8e..0000000 --- a/ffmpeg1/libavutil/arm/timer.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2009 Mans Rullgard <mans@mansr.com> - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_ARM_TIMER_H -#define AVUTIL_ARM_TIMER_H - -#include <stdint.h> -#include "config.h" - -#if HAVE_INLINE_ASM && defined(__ARM_ARCH_7A__) - -#define AV_READ_TIME read_time - -static inline uint64_t read_time(void) -{ - unsigned cc; - __asm__ volatile ("mrc p15, 0, %0, c9, c13, 0" : "=r"(cc)); - return cc; -} - -#endif /* HAVE_INLINE_ASM && __ARM_ARCH_7A__ */ - -#endif /* AVUTIL_ARM_TIMER_H */ |
