AutoCorrelation_v5.s revision f3664ae9369a861ffbc2354e8e93e48983802062
1@/*
2@ ** Copyright 2003-2010, VisualOn, Inc.
3@ **
4@ ** Licensed under the Apache License, Version 2.0 (the "License");
5@ ** you may not use this file except in compliance with the License.
6@ ** You may obtain a copy of the License at
7@ **
8@ **     http://www.apache.org/licenses/LICENSE-2.0
9@ **
10@ ** Unless required by applicable law or agreed to in writing, software
11@ ** distributed under the License is distributed on an "AS IS" BASIS,
12@ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13@ ** See the License for the specific language governing permissions and
14@ ** limitations under the License.
15@ */
16
17@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
18@	File:		AutoCorrelation_v5.s
19@
20@	Content:	AutoCorrelation function armv5 assemble
21@
22@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
23
24
25	.section .text
26	.global	AutoCorrelation
27
28AutoCorrelation:
29	stmdb     sp!, {r4 - r11, lr}
30
31  sub     r13, r13, #20
32
33  mov     r5, r0
34  mov     r7, r1
35  mov     r9, r3
36  mov     r2, r2, lsl #16
37  mov     r0, #0
38  mov     r4, r2, asr #16
39  mov     r8, #0
40  cmp     r4, #0
41  ble     L136
42
43	cmp     r4, #8
44	mov		  r2, #0
45  blt     L133
46
47	sub     r12, r4, #8
48L132:
49  ldr     r6, [r5, r2]
50	add		  r2, r2, #4
51	smulbb  r3, r6, r6
52	ldr     r1, [r5, r2]
53	smultt	r10, r6, r6
54	mov		  r3, r3, asr #9
55	smulbb	r6, r1, r1
56	mov		  r10, r10, asr #9
57	qadd	  r0, r0, r3
58	smultt	r11, r1, r1
59	add     r2, r2, #4
60	qadd	  r0, r0, r10
61	mov		  r6, r6, asr #9
62	mov		  r11, r11, asr #9
63	ldr		  r1, [r5, r2]
64	qadd	  r0, r0, r6
65	smulbb	r10, r1, r1
66	smultt	r6, r1, r1
67	qadd	  r0, r0, r11
68	mov		  r10, r10, asr #9
69	mov		  r6, r6, asr #9
70	qadd	  r0, r0, r10
71	add     r2, r2, #4
72	add     r8, r8, #6
73
74	qadd	  r0, r0, r6
75	cmp     r8, r12
76  blt     L132
77L133:
78  ldrsh   r6, [r5, r2]
79  mul     r10, r6, r6
80	add     r2, r2, #2
81  mov     r1, r10, asr #9
82  qadd    r0, r0, r1
83L134:
84  add     r8, r8, #1
85  cmp     r8, r4
86  blt     L133
87L135:
88L136:
89  str     r0, [r7, #0]
90  cmp     r0, #0
91  beq     L1320
92L137:
93  mov     r2, r9, lsl #16
94	mov     r8, #1
95  mov     r2, r2, asr #16
96  cmp     r2, #1
97  ble     L1319
98L138:
99L139:
100  sub     r4, r4, #1
101  mov     r14, #0
102  mov     r3, #0
103  cmp     r4, #0
104  ble     L1317
105L1310:
106  cmp     r4, #6
107  addlt   r6, r5, r8, lsl #1
108  blt     L1314
109L1311:
110  add     r6, r5, r8, lsl #1
111  sub     r12, r4, #6
112  str     r8, [r13, #8]
113  str     r7, [r13, #4]
114L1312:
115  mov     r1, r3, lsl #1
116  ldrsh   r7, [r6, r1]
117  ldrsh   r10, [r5, r1]
118  add     r8, r1, r6
119	add     r9, r5, r1
120	mul     r7, r10, r7
121  ldrsh   r1, [r8, #2]
122	ldrsh   r10, [r8, #4]
123  add     r7, r14, r7, asr #9
124  ldrsh   r0, [r9, #2]
125  ldrsh   r11, [r9, #4]
126  mul     r1, r0, r1
127  ldrsh   r14, [r8, #6]
128  mul     r10, r11, r10
129	add     r7, r7, r1, asr #9
130  ldrsh   r8, [r8, #8]
131	add     r3, r3, #5
132	ldrsh   r11, [r9, #6]
133  ldrsh   r1, [r9, #8]
134  mul     r14, r11, r14
135  add     r7, r7, r10, asr #9
136  mul     r1, r1, r8
137  add     r14, r7, r14, asr #9
138	cmp     r3, r12
139  add     r14, r14, r1, asr #9
140  ble     L1312
141L1313:
142  ldr     r8, [r13, #8]
143  ldr     r7, [r13, #4]
144L1314:
145L1315:
146  mov     r12, r3, lsl #1
147  ldrsh   r9, [r6, r12]
148  ldrsh   r12, [r5, r12]
149  add     r3, r3, #1
150  cmp     r3, r4
151  mul     r12, r12, r9
152  add     r14, r14, r12, asr #9
153  blt     L1315
154L1316:
155L1317:
156  str     r14, [r7, +r8, lsl #2]
157  add     r8, r8, #1
158  cmp     r8, r2
159  blt     L139
160
161L1319:
162L1320:
163	add     r13, r13, #20
164	ldmia   sp!, {r4 - r11, pc}
165
166	@ENDP  @ |AutoCorrelation|
167	.end
168