• 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
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
81LOOP2:
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
116ODDLOOP:
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
134ENDLOOP2:
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
270LOOP3:
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
354ENDLOOP3:
355    MOV             r4 , r3
356    LDMFD           sp!, {r0, r3}
357
358    ANDS            r5 , r3 , #3
359    BEQ             ENDLOOP4
360
361LOOP4:
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
385ENDLOOP4:
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
398END_OF_AUT0:
399
400    LDMFD           sp!, {r4-r12, r15}
401
402