Home | History | Annotate | Download | only in armv7
      1 @/******************************************************************************
      2 @ *
      3 @ * Copyright (C) 2018 The Android Open Source Project
      4 @ *
      5 @ * Licensed under the Apache License, Version 2.0 (the "License");
      6 @ * you may not use this file except in compliance with the License.
      7 @ * You may obtain a copy of the License at:
      8 @ *
      9 @ * http://www.apache.org/licenses/LICENSE-2.0
     10 @ *
     11 @ * Unless required by applicable law or agreed to in writing, software
     12 @ * distributed under the License is distributed on an "AS IS" BASIS,
     13 @ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 @ * See the License for the specific language governing permissions and
     15 @ * limitations under the License.
     16 @ *
     17 @ *****************************************************************************
     18 @ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
     19 @*/
     20 
     21 
     22 .text
     23 .p2align 2
     24     .global ixheaacd_sbr_qmfanal32_winadds
     25 
     26 ixheaacd_sbr_qmfanal32_winadds:
     27 
     28     STMFD           sp!, {R4-R12, R14}
     29     VPUSH           {D8 - D15}
     30     LDR             R5, [SP, #108]
     31     LDR             R6, [SP, #112]
     32     LDR             R7, [SP, #116]
     33 
     34     MOV             R9, R7, LSL #1
     35 
     36     ADD             r5, r5, #64
     37     MOV             r10, #3
     38 
     39 LOOP:
     40     LDRSH           r4  , [R6], r9
     41     LDRSH           r8  , [R6], r9
     42     LDRSH           r11  , [R6], r9
     43     LDRSH           r12 , [R6], r9
     44 
     45 
     46     STRH            r4  , [r5 , #-2]!
     47     STRH            r8  , [r5 , #-2]!
     48     STRH            r11  , [r5 , #-2]!
     49     STRH            r12 , [r5 , #-2]!
     50 
     51     LDRSH           r4  , [R6], r9
     52     LDRSH           r8  , [R6], r9
     53     LDRSH           r11  , [R6], r9
     54     LDRSH           r12 , [R6], r9
     55 
     56 
     57     STRH            r4  , [r5 , #-2]!
     58     STRH            r8  , [r5 , #-2]!
     59     STRH            r11  , [r5 , #-2]!
     60     STRH            r12 , [r5 , #-2]!
     61 
     62 
     63     SUBS            r10, r10, #1
     64 
     65     BPL             LOOP
     66 
     67     LDR             R4, [SP, #104]
     68 
     69     MOV             R5, #8
     70     VLD1.16         D0, [R0]!
     71     MOV             R6, #64
     72 
     73     MOV             R6, R6, LSL #1
     74     VLD2.16         {D1, D2}, [R2]!
     75     MOV             R7, #244
     76 
     77     MOV             R9, R0
     78     ADD             R0, R0, #120
     79 
     80     MOV             R11, R4
     81     VLD1.16         D2, [R0], R6
     82     ADD             R11, R11, #128
     83 
     84 
     85 
     86 
     87     MOV             R10, R2
     88     ADD             R2, R2, #240
     89 
     90     VMULL.S16       Q15, D0, D1
     91     VLD2.16         {D3, D4}, [R2]!
     92     ADD             R2, R2, #240
     93 
     94 
     95     VLD1.16         D4, [R0], R6
     96     VMLAL.S16       Q15, D2, D3
     97 
     98     VLD2.16         {D5, D6}, [R2]!
     99 
    100 
    101     ADD             R2, R2, #240
    102     VLD1.16         D6, [R0], R6
    103     VMLAL.S16       Q15, D4, D5
    104 
    105     VLD2.16         {D7, D8}, [R2]!
    106 
    107 
    108     ADD             R2, R2, #240
    109     VLD1.16         D8, [R0], R6
    110     VMLAL.S16       Q15, D6, D7
    111 
    112     MOV             R0, R9
    113     VLD2.16         {D9, D10}, [R2]!
    114 
    115 
    116     ADD             R2, R2, #240
    117     VLD1.16         D10, [R1]!
    118     VMLAL.S16       Q15, D8, D9
    119 
    120 
    121 
    122     MOV             R9, R1
    123     VLD2.16         {D11, D12}, [R3]!
    124     ADD             R1, R1, #120
    125 
    126 
    127     MOV             R2, R10
    128     VLD1.16         D12, [R1], R6
    129     MOV             R10, R3
    130 
    131     ADD             R3, R3, #240
    132     VLD2.16         {D13, D14}, [R3]!
    133     ADD             R3, R3, #240
    134 
    135 
    136     VLD2.16         {D15, D16}, [R3]!
    137 
    138     VLD1.16         D14, [R1], R6
    139     ADD             R3, R3, #240
    140 
    141 
    142 
    143     VLD1.16         D16, [R1], R6
    144     SUB             R5, R5, #1
    145 
    146     VLD2.16         {D17, D18}, [R3]!
    147 
    148 
    149     ADD             R3, R3, #240
    150     VLD1.16         D18, [R1], R6
    151 
    152     MOV             R1, R9
    153     VLD2.16         {D19, D20}, [R3]!
    154 
    155     ADD             R3, R3, #240
    156 
    157     MOV             R3, R10
    158 
    159 
    160 LOOP_1:
    161 
    162 
    163     VLD1.16         D0, [R0]!
    164 
    165     MOV             R9, R0
    166     VLD2.16         {D1, D2}, [R2]!
    167     ADD             R0, R0, #120
    168 
    169     MOV             R10, R2
    170     VST1.32         {Q15}, [R4]!
    171     ADD             R2, R2, #240
    172 
    173 
    174     VMULL.S16       Q15, D10, D11
    175     VLD1.16         D2, [R0], R6
    176     VMLAL.S16       Q15, D12, D13
    177 
    178     VMLAL.S16       Q15, D14, D15
    179     VLD2.16         {D3, D4}, [R2]!
    180     VMLAL.S16       Q15, D16, D17
    181 
    182     VMLAL.S16       Q15, D18, D19
    183     VLD1.16         D4, [R0], R6
    184     ADD             R2, R2, #240
    185 
    186     VST1.32         {Q15}, [R11]!
    187 
    188 
    189     VMULL.S16       Q15, D0, D1
    190     VLD2.16         {D5, D6}, [R2]!
    191     VMLAL.S16       Q15, D2, D3
    192 
    193 
    194 
    195     ADD             R2, R2, #240
    196     VLD1.16         D6, [R0], R6
    197     VMLAL.S16       Q15, D4, D5
    198 
    199     VLD2.16         {D7, D8}, [R2]!
    200 
    201 
    202     ADD             R2, R2, #240
    203     VLD1.16         D8, [R0], R6
    204     VMLAL.S16       Q15, D6, D7
    205 
    206     MOV             R0, R9
    207     VLD2.16         {D9, D10}, [R2]!
    208 
    209 
    210 
    211     ADD             R2, R2, #240
    212     VLD1.16         D10, [R1]!
    213     MOV             R2, R10
    214 
    215     MOV             R9, R1
    216     VLD2.16         {D11, D12}, [R3]!
    217     ADD             R1, R1, #120
    218 
    219 
    220     VMLAL.S16       Q15, D8, D9
    221     VLD1.16         D12, [R1], R6
    222     MOV             R10, R3
    223 
    224 
    225     ADD             R3, R3, #240
    226     VLD2.16         {D13, D14}, [R3]!
    227     ADD             R3, R3, #240
    228 
    229 
    230 
    231     VLD1.16         D14, [R1], R6
    232     VLD2.16         {D15, D16}, [R3]!
    233     ADD             R3, R3, #240
    234 
    235 
    236     VLD1.16         D16, [R1], R6
    237     VLD2.16         {D17, D18}, [R3]!
    238     ADD             R3, R3, #240
    239 
    240 
    241     VLD1.16         D18, [R1], R6
    242     SUBS            R5, R5, #1
    243 
    244     MOV             R1, R9
    245     VLD2.16         {D19, D20}, [R3]!
    246 
    247     ADD             R3, R3, #240
    248 
    249     MOV             R3, R10
    250 
    251     BGT             LOOP_1
    252 
    253     VST1.32         {Q15}, [R4]!
    254     VMULL.S16       Q15, D10, D11
    255     VMLAL.S16       Q15, D12, D13
    256 
    257     VMLAL.S16       Q15, D14, D15
    258     VMLAL.S16       Q15, D16, D17
    259     VMLAL.S16       Q15, D18, D19
    260 
    261     VST1.32         {Q15}, [R11]!
    262 
    263     VPOP            {D8 - D15}
    264     LDMFD           sp!, {R4-R12, R15}
    265 
    266