• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1@VOID ixheaacd_esbr_qmfsyn64_winadd(
2@WORD32 *tmp1,
3@WORD32 *tmp2,
4@WORD32 *inp1,
5@WORD32 *sample_buffer,
6@WORD32 ch_fac)
7@R0->Word32 *tmp1
8@R1->Word32 *tmp2
9@R2->Word32 *inp1
10@R3->Word32 *sample_buffer
11@R5->ch_fac
12
13.text
14.p2align 2
15      .global ixheaacd_esbr_qmfsyn64_winadd
16
17ixheaacd_esbr_qmfsyn64_winadd:          @ PROC
18
19    STMFD           sp!, {R4-R12, R14}
20    VPUSH           {D8- D15}
21    LDR             R5, [SP, #104]
22
23    MOV             R7, #0
24    VLD1.32         {D0, D1}, [R0]!
25    MOV             R12, R2
26
27    VDUP.32         Q15, R7
28    VLD1.32         {D2, D3}, [R2]!
29
30    MOV             R10, R0
31    MOV             R11, R2
32    ADD             R0, R0, #1008
33    ADD             R2, R2, #496
34
35    MOV             R6, #64
36    MOV             R6, R6, LSL #2
37    ADD             R12, R12, R6
38    MOV             R7, #256
39    MOV             R9, R7, LSL #1
40    ADD             R1, R1, R9
41    MOV             R6, #64
42    MOV             R7, #256
43    MOV             R9, R7, LSL #1      @(256*2)
44    MOV             R7, #512
45    MOV             R8, R7, LSL #1      @(512*2)
46
47    MOV             R5, R5, LSL #2
48    VMOV            Q13, Q15
49    VMOV            Q14, Q15
50
51    VMLAL.S32       Q13, D0, D2
52    VMLAL.S32       Q14, D1, D3
53
54    VLD1.32         {D4, D5}, [R0], R8
55    VLD1.32         {D6, D7}, [R2], R9
56
57    VMLAL.S32       Q13, D6, D4
58    VMLAL.S32       Q14, D7, D5
59
60    VLD1.32         {D8, D9}, [R0], R8
61    VLD1.32         {D10, D11}, [R2], R9
62
63    VMLAL.S32       Q13, D10, D8
64    VMLAL.S32       Q14, D11, D9
65
66    VLD1.32         {D12, D13}, [R0], R8
67    VLD1.32         {D14, D15}, [R2], R9
68
69    VMLAL.S32       Q13, D12, D14
70    VMLAL.S32       Q14, D13, D15
71
72    VLD1.32         {D16, D17}, [R0], R8
73    VLD1.32         {D18, D19}, [R2], R9
74
75    VMLAL.S32       Q13, D16, D18
76    VMLAL.S32       Q14, D17, D19
77
78    MOV             R0, R10
79
80
81    MOV             R2, R11
82    VLD1.32         {D0, D1}, [R1]!
83    MOV             R10, R1
84    VLD1.32         {D2, D3}, [R12]!
85    ADD             R1, R1, #1008
86    MOV             R11, R12
87
88    VMLAL.S32       Q13, D0, D2
89    VMLAL.S32       Q14, D1, D3
90    VLD1.32         {D4, D5}, [R1], R8
91    ADD             R12, R12, #496
92
93    VLD1.32         {D6, D7}, [R12], R9
94
95    VMLAL.S32       Q13, D6, D4
96    VMLAL.S32       Q14, D7, D5
97
98    VLD1.32         {D8, D9}, [R1], R8
99    VLD1.32         {D10, D11}, [R12], R9
100
101    VMLAL.S32       Q13, D10, D8
102    VMLAL.S32       Q14, D11, D9
103
104    VLD1.32         {D12, D13}, [R1], R8
105    VLD1.32         {D14, D15}, [R12], R9
106
107    VMLAL.S32       Q13, D12, D14
108    VMLAL.S32       Q14, D13, D15
109
110    VLD1.32         {D16, D17}, [R1], R8
111    VLD1.32         {D18, D19}, [R12], R9
112
113    VMLAL.S32       Q13, D16, D18
114    VMLAL.S32       Q14, D17, D19
115
116    VSHRN.S64       D26 , Q13, #31
117
118    VST1.32         D26[0], [R3], R5
119    VST1.32         D26[1], [R3], R5
120
121    VSHRN.S64       D27 , Q14, #31
122
123    VST1.32         D27[0], [R3], R5
124    VST1.32         D27[1], [R3], R5
125
126    SUB             R6, R6, #8
127LOOP_1:
128
129    VLD1.32         {D0, D1}, [R0]!
130    MOV             R12, R11
131    MOV             R1, R10
132    VLD1.32         {D2, D3}, [R2]!
133    MOV             R10, R0
134
135    ADD             R0, R0, #1008
136
137    MOV             R11, R2
138    ADD             R2, R2, #496
139
140
141    VMOV            Q13, Q15
142    VMOV            Q14, Q15
143
144    VMLAL.S32       Q13, D0, D2
145    VMLAL.S32       Q14, D1, D3
146
147    VLD1.32         {D4, D5}, [R0], R8
148    VLD1.32         {D6, D7}, [R2], R9
149
150    VMLAL.S32       Q13, D6, D4
151    VMLAL.S32       Q14, D7, D5
152
153    VLD1.32         {D8, D9}, [R0], R8
154    VLD1.32         {D10, D11}, [R2], R9
155
156    VMLAL.S32       Q13, D10, D8
157    VMLAL.S32       Q14, D11, D9
158
159    VLD1.32         {D12, D13}, [R0], R8
160    VLD1.32         {D14, D15}, [R2], R9
161
162    VMLAL.S32       Q13, D12, D14
163    VMLAL.S32       Q14, D13, D15
164
165    VLD1.32         {D16, D17}, [R0], R8
166    VLD1.32         {D18, D19}, [R2], R9
167
168    VMLAL.S32       Q13, D16, D18
169    VMLAL.S32       Q14, D17, D19
170
171    MOV             R0, R10
172
173
174    MOV             R2, R11
175    VLD1.32         {D0, D1}, [R1]!
176    MOV             R10, R1
177    VLD1.32         {D2, D3}, [R12]!
178    ADD             R1, R1, #1008
179    MOV             R11, R12
180
181    VMLAL.S32       Q13, D0, D2
182    VMLAL.S32       Q14, D1, D3
183    VLD1.32         {D4, D5}, [R1], R8
184    ADD             R12, R12, #496
185
186    VLD1.32         {D6, D7}, [R12], R9
187
188    VMLAL.S32       Q13, D6, D4
189    VMLAL.S32       Q14, D7, D5
190
191    VLD1.32         {D8, D9}, [R1], R8
192    VLD1.32         {D10, D11}, [R12], R9
193
194    VMLAL.S32       Q13, D10, D8
195    VMLAL.S32       Q14, D11, D9
196
197    VLD1.32         {D12, D13}, [R1], R8
198    VLD1.32         {D14, D15}, [R12], R9
199
200    VMLAL.S32       Q13, D12, D14
201    VMLAL.S32       Q14, D13, D15
202
203    VLD1.32         {D16, D17}, [R1], R8
204    VLD1.32         {D18, D19}, [R12], R9
205
206    VMLAL.S32       Q13, D16, D18
207    VMLAL.S32       Q14, D17, D19
208
209    VSHRN.S64       D26 , Q13, #31
210
211    VST1.32         D26[0], [R3], R5
212    VST1.32         D26[1], [R3], R5
213
214    VSHRN.S64       D27 , Q14, #31
215
216    VST1.32         D27[0], [R3], R5
217    VST1.32         D27[1], [R3], R5
218@@@
219    VLD1.32         {D0, D1}, [R0]!
220    MOV             R12, R11
221    MOV             R1, R10
222    VLD1.32         {D2, D3}, [R2]!
223    MOV             R10, R0
224
225    VMOV            Q13, Q15
226    VMLAL.S32       Q13, D0, D2
227    VMOV            Q14, Q15
228    VMLAL.S32       Q14, D1, D3
229
230    ADD             R0, R0, #1008
231
232    MOV             R11, R2
233    VLD1.32         {D4, D5}, [R0], R8
234    ADD             R2, R2, #496
235
236
237    VLD1.32         {D6, D7}, [R2], R9
238
239    VMLAL.S32       Q13, D6, D4
240    VMLAL.S32       Q14, D7, D5
241
242    VLD1.32         {D8, D9}, [R0], R8
243    VLD1.32         {D10, D11}, [R2], R9
244
245    VMLAL.S32       Q13, D8, D10
246    VMLAL.S32       Q14, D9, D11
247
248    VLD1.32         {D12, D13}, [R0], R8
249    VLD1.32         {D14, D15}, [R2], R9
250
251    VMLAL.S32       Q13, D12, D14
252    VMLAL.S32       Q14, D13, D15
253
254    VLD1.32         {D16, D17}, [R0], R8
255    VLD1.32         {D18, D19}, [R2], R9
256
257    VMLAL.S32       Q13, D16, D18
258    VMLAL.S32       Q14, D17, D19
259
260    MOV             R0, R10
261
262
263    MOV             R2, R11
264    VLD1.32         {D0, D1}, [R1]!
265
266    MOV             R10, R1
267    VLD1.32         {D2, D3}, [R12]!
268    ADD             R1, R1, #1008
269
270    VMLAL.S32       Q13, D0, D2
271    VMLAL.S32       Q14, D1, D3
272
273    MOV             R11, R12
274    VLD1.32         {D4, D5}, [R1], R8
275    ADD             R12, R12, #496
276
277
278    VLD1.32         {D6, D7}, [R12], R9
279
280    VMLAL.S32       Q13, D6, D4
281    VMLAL.S32       Q14, D7, D5
282
283    VLD1.32         {D8, D9}, [R1], R8
284    VLD1.32         {D10, D11}, [R12], R9
285
286    VMLAL.S32       Q13, D8, D10
287    VMLAL.S32       Q14, D9, D11
288
289    VLD1.32         {D12, D13}, [R1], R8
290    VLD1.32         {D14, D15}, [R12], R9
291
292    VMLAL.S32       Q13, D12, D14
293    VMLAL.S32       Q14, D13, D15
294
295    VLD1.32         {D16, D17}, [R1], R8
296    VLD1.32         {D18, D19}, [R12], R9
297
298    VMLAL.S32       Q13, D16, D18
299    VMLAL.S32       Q14, D17, D19
300
301    VSHRN.S64       D26 , Q13, #31
302
303    VST1.32         D26[0], [R3], R5
304    VST1.32         D26[1], [R3], R5
305
306    VSHRN.S64       D27 , Q14, #31
307
308    VST1.32         D27[0], [R3], R5
309    VST1.32         D27[1], [R3], R5
310
311    SUBS            R6, R6, #8          @1
312
313    BGT             LOOP_1
314
315    VLD1.32         {D0, D1}, [R0]!
316    MOV             R12, R11
317    MOV             R1, R10
318    VLD1.32         {D2, D3}, [R2]!
319    MOV             R10, R0
320
321    VMOV            Q13, Q15
322    VMLAL.S32       Q13, D0, D2
323    VMOV            Q14, Q15
324    VMLAL.S32       Q14, D1, D3
325
326    ADD             R0, R0, #1008
327
328    MOV             R11, R2
329    VLD1.32         {D4, D5}, [R0], R8
330    ADD             R2, R2, #496
331
332
333    VLD1.32         {D6, D7}, [R2], R9
334
335    VMLAL.S32       Q13, D6, D4
336    VMLAL.S32       Q14, D7, D5
337
338    VLD1.32         {D8, D9}, [R0], R8
339    VLD1.32         {D10, D11}, [R2], R9
340
341    VMLAL.S32       Q13, D8, D10
342    VMLAL.S32       Q14, D9, D11
343
344    VLD1.32         {D12, D13}, [R0], R8
345    VLD1.32         {D14, D15}, [R2], R9
346
347    VMLAL.S32       Q13, D12, D14
348    VMLAL.S32       Q14, D13, D15
349
350    VLD1.32         {D16, D17}, [R0], R8
351    VLD1.32         {D18, D19}, [R2], R9
352
353    VMLAL.S32       Q13, D16, D18
354    VMLAL.S32       Q14, D17, D19
355
356    MOV             R0, R10
357
358
359    MOV             R2, R11
360    VLD1.32         {D0, D1}, [R1]!
361
362    MOV             R10, R1
363    VLD1.32         {D2, D3}, [R12]!
364    ADD             R1, R1, #1008
365
366    VMLAL.S32       Q13, D0, D2
367    VMLAL.S32       Q14, D1, D3
368
369    MOV             R11, R12
370    VLD1.32         {D4, D5}, [R1], R8
371    ADD             R12, R12, #496
372
373
374    VLD1.32         {D6, D7}, [R12], R9
375
376    VMLAL.S32       Q13, D6, D4
377    VMLAL.S32       Q14, D7, D5
378
379    VLD1.32         {D8, D9}, [R1], R8
380    VLD1.32         {D10, D11}, [R12], R9
381
382    VMLAL.S32       Q13, D8, D10
383    VMLAL.S32       Q14, D9, D11
384
385    VLD1.32         {D12, D13}, [R1], R8
386    VLD1.32         {D14, D15}, [R12], R9
387
388    VMLAL.S32       Q13, D12, D14
389    VMLAL.S32       Q14, D13, D15
390
391    VLD1.32         {D16, D17}, [R1], R8
392    VLD1.32         {D18, D19}, [R12], R9
393
394    VMLAL.S32       Q13, D16, D18
395    VMLAL.S32       Q14, D17, D19
396
397    VSHRN.S64       D26 , Q13, #31
398
399    VST1.32         D26[0], [R3], R5
400    VST1.32         D26[1], [R3], R5
401
402    VSHRN.S64       D27, Q14, #31
403
404    VST1.32         D27[0], [R3], R5
405    VST1.32         D27[1], [R3], R5
406
407    VPOP            {D8 - D15}
408    LDMFD           sp!, {R4-R12, R15}
409    @ ENDP
410