blob: e7051975f8f44b5f46746e2b660a432da41bb396 [file] [log] [blame]
@/*
@ ** Copyright 2003-2010, VisualOn, Inc.
@ **
@ ** Licensed under the Apache License, Version 2.0 (the "License");
@ ** you may not use this file except in compliance with the License.
@ ** You may obtain a copy of the License at
@ **
@ ** http://www.apache.org/licenses/LICENSE-2.0
@ **
@ ** Unless required by applicable law or agreed to in writing, software
@ ** distributed under the License is distributed on an "AS IS" BASIS,
@ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@ ** See the License for the specific language governing permissions and
@ ** limitations under the License.
@ */
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ File: AutoCorrelation_v5.s
@
@ Content: AutoCorrelation function armv5 assemble
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.section .text
.global AutoCorrelation
AutoCorrelation:
stmdb sp!, {r4 - r11, lr}
sub r13, r13, #20
mov r5, r0
mov r7, r1
mov r9, r3
mov r2, r2, lsl #16
mov r0, #0
mov r4, r2, asr #16
mov r8, #0
cmp r4, #0
ble L136
cmp r4, #8
mov r2, #0
blt L133
sub r12, r4, #8
L132:
ldr r6, [r5, r2]
add r2, r2, #4
smulbb r3, r6, r6
ldr r1, [r5, r2]
smultt r10, r6, r6
mov r3, r3, asr #9
smulbb r6, r1, r1
mov r10, r10, asr #9
qadd r0, r0, r3
smultt r11, r1, r1
add r2, r2, #4
qadd r0, r0, r10
mov r6, r6, asr #9
mov r11, r11, asr #9
ldr r1, [r5, r2]
qadd r0, r0, r6
smulbb r10, r1, r1
smultt r6, r1, r1
qadd r0, r0, r11
mov r10, r10, asr #9
mov r6, r6, asr #9
qadd r0, r0, r10
add r2, r2, #4
add r8, r8, #6
qadd r0, r0, r6
cmp r8, r12
blt L132
L133:
ldrsh r6, [r5, r2]
mul r10, r6, r6
add r2, r2, #2
mov r1, r10, asr #9
qadd r0, r0, r1
L134:
add r8, r8, #1
cmp r8, r4
blt L133
L135:
L136:
str r0, [r7, #0]
cmp r0, #0
beq L1320
L137:
mov r2, r9, lsl #16
mov r8, #1
mov r2, r2, asr #16
cmp r2, #1
ble L1319
L138:
L139:
sub r4, r4, #1
mov r14, #0
mov r3, #0
cmp r4, #0
ble L1317
L1310:
cmp r4, #6
addlt r6, r5, r8, lsl #1
blt L1314
L1311:
add r6, r5, r8, lsl #1
sub r12, r4, #6
str r8, [r13, #8]
str r7, [r13, #4]
L1312:
mov r1, r3, lsl #1
ldrsh r7, [r6, r1]
ldrsh r10, [r5, r1]
add r8, r1, r6
add r9, r5, r1
mul r7, r10, r7
ldrsh r1, [r8, #2]
ldrsh r10, [r8, #4]
add r7, r14, r7, asr #9
ldrsh r0, [r9, #2]
ldrsh r11, [r9, #4]
mul r1, r0, r1
ldrsh r14, [r8, #6]
mul r10, r11, r10
add r7, r7, r1, asr #9
ldrsh r8, [r8, #8]
add r3, r3, #5
ldrsh r11, [r9, #6]
ldrsh r1, [r9, #8]
mul r14, r11, r14
add r7, r7, r10, asr #9
mul r1, r1, r8
add r14, r7, r14, asr #9
cmp r3, r12
add r14, r14, r1, asr #9
ble L1312
L1313:
ldr r8, [r13, #8]
ldr r7, [r13, #4]
L1314:
L1315:
mov r12, r3, lsl #1
ldrsh r9, [r6, r12]
ldrsh r12, [r5, r12]
add r3, r3, #1
cmp r3, r4
mul r12, r12, r9
add r14, r14, r12, asr #9
blt L1315
L1316:
L1317:
str r14, [r7, +r8, lsl #2]
add r8, r8, #1
cmp r8, r2
blt L139
L1319:
L1320:
add r13, r13, #20
ldmia sp!, {r4 - r11, pc}
@ENDP @ |AutoCorrelation|
.end