• 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_covariance_matrix_calc_2_armv7
25 ixheaacd_covariance_matrix_calc_2_armv7:
26     STMFD           sp!, {r4-r12, r14}
27 
28 AUTO_CORR_LOOP:
29 
30     STR             r0 , [sp, #-4]!
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41     LDR             r4 , [r1, #-4*128]
42     LDR             r5 , [r1, #4*(64-128)]
43     LDR             r6 , [r1]
44     LDR             r7 , [r1, #4*64]
45 
46     MOV             r4, r4, ASR #3
47     MOV             r5, r5, ASR #3
48     MOV             r6, r6, ASR #3
49     MOV             r7, r7, ASR #3
50 
51 
52     SMULWT          r8 , r6 , r4
53     SMULWT          r9 , r7 , r4
54     SMULWT          r10, r6 , r5
55     SMLAWT          r8 , r7 , r5, r8
56     SMULWT          r11, r4 , r4
57     SUB             r9 , r9 , r10
58     SMLAWT          r11, r5 , r5, r11
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73     MOV             r10, r1
74     ADD             r12, r1, #64*4
75     MOV             r4 , r6
76     MOV             r5 , r7
77 
78     SUB             r14, r3 , #2
79     MOVS            r14, r14, LSR #1
80     BEQ             ENDLOOP2
81 LOOP2:
82     LDR             r6 , [r10, #4*128]!
83     LDR             r7 , [r12, #4*128]!
84 
85     MOV             r6, r6, ASR #3
86     MOV             r7, r7, ASR #3
87 
88     SMLAWT          r8 , r6 , r4, r8
89     SMLAWT          r9 , r7 , r4, r9
90     SMLAWT          r8 , r7 , r5, r8
91     SMULWT          r0 , r6 , r5
92     SMLAWT          r11, r4 , r4, r11
93     SUB             r9 , r9 , r0
94     SMLAWT          r11, r5 , r5, r11
95 
96     LDR             r4  , [r10, #4*128]!
97     LDR             r5  , [r12, #4*128]!
98 
99     MOV             r4, r4, ASR #3
100     MOV             r5, r5, ASR #3
101 
102     SUBS            r14, r14, #1
103 
104     SMLAWT          r8 , r4 , r6, r8
105     SMLAWT          r9 , r5 , r6, r9
106     SMLAWT          r8 , r5 , r7, r8
107     SMULWT          r0 , r4 , r7
108     SMLAWT          r11, r6 , r6, r11
109     SUB             r9 , r9 , r0
110     SMLAWT          r11, r7 , r7, r11
111 
112     BNE             LOOP2
113 
114     ANDS            r0, r3, #0x01
115     BEQ             ENDLOOP2
116 ODDLOOP:
117 
118     LDR             r6 , [r10, #4*128]!
119     LDR             r7 , [r12, #4*128]!
120 
121     MOV             r6, r6, ASR #3
122     MOV             r7, r7, ASR #3
123 
124     SMLAWT          r8 , r6 , r4, r8
125     SMLAWT          r9 , r7 , r4, r9
126     SMLAWT          r8 , r7 , r5, r8
127     SMULWT          r0 , r6 , r5
128     SMLAWT          r11, r4 , r4, r11
129     SUB             r9 , r9 , r0
130     SMLAWT          r11, r5 , r5, r11
131 
132 
133 
134 ENDLOOP2:
135 
136 
137 
138 
139 
140 
141 
142 
143 
144     MOV             r12, r11
145     LDR             r6 , [r1, #-8*128]
146     LDR             r7 , [r1, #4*64-8*128]
147 
148     MOV             r6, r6, ASR #3
149     MOV             r7, r7, ASR #3
150 
151     SMLAWT          r12, r6 , r6, r12
152 
153     SUB             r10, r3, #2
154     SMLAWT          r12, r7 , r7, r12
155 
156 
157 
158 
159     MOV             r0, r10, LSL #(2+7)
160     ADD             r0, r0, #0x100
161     LDR             r4 , [r1, r10, LSL #(2+7)]
162     LDR             r5 , [r1, r0]
163 
164     MOV             r4, r4, ASR #3
165     MOV             r5, r5, ASR #3
166 
167     SMLAWT          r11, r4, r4, r11
168     LDR             r0 , [sp], #4
169     SMLAWT          r11, r5, r5, r11
170 
171     STR             r12, [r0, #4]
172     STR             r11, [r0]
173 
174 
175 
176 
177 
178 
179 
180 
181 
182 
183 
184 
185     MOV             r11, r8
186     LDR             r12, [r1, #-4*128]
187     LDR             r14, [r1, #4*(64-128)]
188 
189     MOV             r12, r12, ASR #3
190     MOV             r14, r14, ASR #3
191 
192 
193     SMLAWT          r11, r12, r6, r11
194     ADD             r10, r10, #1
195 
196     LDR             r12, [r1, r10, LSL#(2+7)]
197     SMLAWT          r11, r14, r7, r11
198 
199     MOV             r14, r10, LSL #(2+7)
200     ADD             r14, r14, #0x100
201 
202 
203     MOV             r12, r12, ASR #3
204 
205     LDR             r14, [r1, r14]
206 
207     SMLAWT          r8 , r12, r4, r8
208 
209     MOV             r14, r14, ASR #3
210     MOV             r10, r9
211 
212     SMLAWT          r8 , r14, r5, r8
213     STR             r11, [r0, #16]
214     STR             r8 , [r0, #8]
215 
216 
217 
218 
219 
220 
221 
222 
223 
224 
225 
226 
227     SMLAWT          r9 , r14, r4 , r9
228     SMULWT          r8 , r12, r5
229     LDR             r14, [r1, #4*(64-128)]
230     SUB             r9 , r9 , r8
231 
232     MOV             r14, r14, ASR #3
233     LDR             r12, [r1, #-4*128]
234     SMLAWT          r10, r14, r6 , r10
235 
236     MOV             r12, r12, ASR #3
237     SMULWT          r8 , r12, r7
238     STR             r9 , [r0, #20]
239     SUB             r10, r10, r8
240     STR             r10, [r0, #28]
241 
242 
243 
244 
245 
246 
247 
248 
249     STR             r1 , [sp, #-4]!
250 
251     STMFD           sp!, {r0, r3}
252     MOVS            r0 , r3 , LSR #2
253 
254     MOV             r12, #0
255     MOV             r3 , #0
256     LDR             r5 , [r1, #-8*128]
257     LDR             r7 , [r1, #-4*128]
258     LDR             r9 , [r1, #4*(64-256)]
259     LDR             r11, [r1, #4*(64-128)]
260 
261 
262 
263     MOV             r5, r5, ASR #3
264     MOV             r7, r7, ASR #3
265     MOV             r9, r9, ASR #3
266     MOV             r11, r11, ASR #3
267 
268 
269     BEQ             ENDLOOP3
270 LOOP3:
271 
272 
273 
274 
275 
276 
277     LDR             r4 , [r1], #4*128
278     LDR             r8 , [r1, #4*(64-128)]
279 
280     MOV             r4, r4, ASR #3
281     MOV             r8, r8, ASR #3
282 
283     SMLAWT          r12, r4 , r5 , r12
284     SMLAWT          r12, r8 , r9 , r12
285     SMULWT          r14, r4 , r9
286     SMLAWT          r3 , r8 , r5 , r3
287 
288     LDR             r6 , [r1], #4*128
289     SUB             r3 , r3 , r14
290 
291 
292 
293 
294 
295 
296 
297 
298     LDR             r10, [r1, #4*(64-128)]
299 
300     MOV             r6, r6, ASR #3
301     MOV             r10, r10, ASR #3
302 
303     SMLAWT          r12, r6 , r7 , r12
304     SMLAWT          r12, r10, r11, r12
305     SMULWT          r14, r6 , r11
306     SMLAWT          r3 , r10, r7 , r3
307 
308     LDR             r5 , [r1], #4*128
309     SUB             r3 , r3 , r14
310 
311 
312 
313 
314 
315 
316 
317 
318     LDR             r9 , [r1, #4*(64-128)]
319 
320     MOV             r5, r5, ASR #3
321     MOV             r9, r9, ASR #3
322 
323     SMLAWT          r12, r5 , r4 , r12
324     SMLAWT          r12, r9 , r8 , r12
325     SMULWT          r14, r5 , r8
326     SMLAWT          r3 , r9 , r4 , r3
327 
328     LDR             r7 , [r1], #4*128
329     SUB             r3 , r3 , r14
330 
331 
332 
333 
334 
335 
336 
337 
338 
339 
340     LDR             r11, [r1, #4*(64-128)]
341 
342     MOV             r7, r7, ASR #3
343     MOV             r11, r11, ASR #3
344 
345     SMLAWT          r12, r7 , r6 , r12
346     SMLAWT          r12, r11, r10, r12
347     SMULWT          r14, r7 , r10
348     SMLAWT          r3 , r11, r6 , r3
349 
350     SUBS            r0 , r0 , #1
351     SUB             r3 , r3 , r14
352 
353     BNE             LOOP3
354 ENDLOOP3:
355     MOV             r4 , r3
356     LDMFD           sp!, {r0, r3}
357 
358     ANDS            r5 , r3 , #3
359     BEQ             ENDLOOP4
360 
361 LOOP4:
362     LDR             r6 , [r1, #-8*128]
363     LDR             r10, [r1, #4*(64-256)]
364 
365     LDR             r7 , [r1], #4*128
366     LDR             r11, [r1, #4*(64-128)]
367 
368 
369     MOV             r6, r6, ASR #3
370     MOV             r7, r7, ASR #3
371     MOV             r10, r10, ASR #3
372     MOV             r11, r11, ASR #3
373 
374 
375     SMLAWT          r12, r7 , r6 , r12
376     SMLAWT          r12, r11, r10, r12
377     SMULWT          r14, r7 , r10
378     SMLAWT          r4 , r11, r6 , r4
379 
380     SUBSNE          r5 , r5 , #1
381 
382     SUB             r4 , r4 , r14
383 
384     BNE             LOOP4
385 ENDLOOP4:
386     STR             r12, [r0, #12]
387     STR             r4 , [r0, #24]
388     LDR             r1 , [sp], #4
389 
390     SUBS            R2, R2, #1
391 
392     ADD             r0, r0, #4*9
393 
394 
395     ADD             r1, r1, #4
396     BGT             AUTO_CORR_LOOP
397 
398 END_OF_AUT0:
399 
400     LDMFD           sp!, {r4-r12, r15}
401 
402