| @/* |
| @ ** 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 |