diff libavcodec/arm/dcadsp_neon.S @ 2:897f711a7157

rearrange to work with autoconf
author Nina Engelhardt <nengel@mailbox.tu-berlin.de>
date Tue, 25 Sep 2012 15:55:33 +0200
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/libavcodec/arm/dcadsp_neon.S	Tue Sep 25 15:55:33 2012 +0200
     1.3 @@ -0,0 +1,61 @@
     1.4 +/*
     1.5 + * Copyright (c) 2010 Mans Rullgard <mans@mansr.com>
     1.6 + *
     1.7 + * This file is part of FFmpeg.
     1.8 + *
     1.9 + * FFmpeg is free software; you can redistribute it and/or
    1.10 + * modify it under the terms of the GNU Lesser General Public
    1.11 + * License as published by the Free Software Foundation; either
    1.12 + * version 2.1 of the License, or (at your option) any later version.
    1.13 + *
    1.14 + * FFmpeg is distributed in the hope that it will be useful,
    1.15 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    1.16 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    1.17 + * Lesser General Public License for more details.
    1.18 + *
    1.19 + * You should have received a copy of the GNU Lesser General Public
    1.20 + * License along with FFmpeg; if not, write to the Free Software
    1.21 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
    1.22 + */
    1.23 +
    1.24 +#include "asm.S"
    1.25 +
    1.26 +function ff_dca_lfe_fir_neon, export=1
    1.27 +        push            {r4-r6,lr}
    1.28 +
    1.29 +        add             r4,  r0,  r3,  lsl #2   @ out2
    1.30 +        add             r5,  r2,  #256*4-16     @ cf1
    1.31 +        sub             r1,  r1,  #12
    1.32 +        cmp             r3,  #32
    1.33 +        moveq           r6,  #256/32
    1.34 +        movne           r6,  #256/64
    1.35 +NOVFP   vldr            d0,  [sp, #16]          @ scale, bias
    1.36 +        mov             lr,  #-16
    1.37 +1:
    1.38 +        vmov.f32        q2,  #0.0               @ v0
    1.39 +        vmov.f32        q3,  #0.0               @ v1
    1.40 +        mov             r12, r6
    1.41 +2:
    1.42 +        vld1.32         {q8},     [r2,:128]!    @ cf0
    1.43 +        vld1.32         {q9},     [r5,:128], lr @ cf1
    1.44 +        vld1.32         {q1},     [r1], lr      @ in
    1.45 +        subs            r12, r12, #4
    1.46 +        vrev64.32       q10, q8
    1.47 +        vmla.f32        q3,  q1,  q9
    1.48 +        vmla.f32        d4,  d2,  d21
    1.49 +        vmla.f32        d5,  d3,  d20
    1.50 +        bne             2b
    1.51 +
    1.52 +        add             r1,  r1,  r6,  lsl #2
    1.53 +        subs            r3,  r3,  #1
    1.54 +        vadd.f32        d4,  d4,  d5
    1.55 +        vadd.f32        d6,  d6,  d7
    1.56 +        vpadd.f32       d4,  d4,  d6
    1.57 +        vdup.32         d5,  d0[1]
    1.58 +        vmla.f32        d5,  d4,  d0[0]
    1.59 +        vst1.32         {d5[0]},  [r0,:32]!
    1.60 +        vst1.32         {d5[1]},  [r4,:32]!
    1.61 +        bne             1b
    1.62 +
    1.63 +        pop             {r4-r6,pc}
    1.64 +endfunc