@/* | |
@ ** 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: PrePostMDCT_v5.s | |
@ | |
@ Content: premdct and postmdct function armv5 assemble | |
@ | |
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
.section .text | |
.global PreMDCT | |
PreMDCT: | |
stmdb sp!, {r4 - r11, lr} | |
add r9, r0, r1, lsl #2 | |
sub r3, r9, #8 | |
movs r1, r1, asr #2 | |
beq PreMDCT_END | |
PreMDCT_LOOP: | |
ldr r8, [r2], #4 | |
ldr r9, [r2], #4 | |
ldrd r4, [r0] | |
ldrd r6, [r3] | |
smull r14, r11, r4, r8 @ MULHIGH(tr1, cosa) | |
smull r10, r12, r7, r8 @ MULHIGH(ti1, cosa) | |
smull r14, r8, r7, r9 @ MULHIGH(ti1, sina) | |
smull r7, r10, r4, r9 @ MULHIGH(tr1, sina) | |
add r11, r11, r8 @ MULHIGH(cosa, tr1) + MULHIGH(sina, ti1)@ | |
sub r7, r12, r10 @ MULHIGH(ti1, cosa) - MULHIGH(tr1, sina) | |
ldr r8, [r2], #4 | |
ldr r9, [r2], #4 | |
smull r14, r4, r6, r8 @ MULHIGH(tr2, cosa) | |
smull r10, r12, r5, r8 @ MULHIGH(ti2, cosa) | |
smull r14, r8, r5, r9 @ MULHIGH(ti2, sina) | |
smull r5, r10, r6, r9 @ MULHIGH(tr2, sina) | |
add r8, r8, r4 | |
sub r9, r12, r10 | |
mov r6, r11 | |
strd r6, [r0] | |
strd r8, [r3] | |
subs r1, r1, #1 | |
sub r3, r3, #8 | |
add r0, r0, #8 | |
bne PreMDCT_LOOP | |
PreMDCT_END: | |
ldmia sp!, {r4 - r11, pc} | |
@ENDP @ |PreMDCT| | |
.section .text | |
.global PostMDCT | |
PostMDCT: | |
stmdb sp!, {r4 - r11, lr} | |
add r9, r0, r1, lsl #2 | |
sub r3, r9, #8 | |
movs r1, r1, asr #2 | |
beq PostMDCT_END | |
PostMDCT_LOOP: | |
ldr r8, [r2], #4 | |
ldr r9, [r2], #4 | |
ldrd r4, [r0] | |
ldrd r6, [r3] | |
smull r14, r11, r4, r8 @ MULHIGH(tr1, cosa) | |
smull r10, r12, r5, r8 @ MULHIGH(ti1, cosa) | |
smull r14, r8, r5, r9 @ MULHIGH(ti1, sina) | |
smull r5, r10, r4, r9 @ MULHIGH(tr1, sina) | |
add r4, r11, r8 @ MULHIGH(cosa, tr1) + MULHIGH(sina, ti1)@ | |
sub r11, r10, r12 @ MULHIGH(ti1, cosa) - MULHIGH(tr1, sina)@ | |
ldr r8, [r2], #4 @ | |
ldr r9, [r2], #4 | |
smull r14, r5, r6, r8 @ MULHIGH(tr2, cosa) | |
smull r10, r12, r7, r8 @ MULHIGH(ti2, cosa) | |
smull r14, r8, r7, r9 @ MULHIGH(ti2, sina) | |
smull r7, r10, r6, r9 @ MULHIGH(tr2, sina) | |
add r6, r8, r5 @ MULHIGH(cosb, tr2) + MULHIGH(sinb, ti2)@ | |
sub r5, r10, r12 @ MULHIGH(sinb, tr2) - MULHIGH(cosb, ti2)@ | |
mov r7, r11 | |
strd r4, [r0] | |
strd r6, [r3] | |
subs r1, r1, #1 | |
sub r3, r3, #8 | |
add r0, r0, #8 | |
bne PostMDCT_LOOP | |
PostMDCT_END: | |
ldmia sp!, {r4 - r11, pc} | |
@ENDP @ |PostMDCT| | |
.end |