• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
26ixheaacd_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
39LOOP:
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
160LOOP_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