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