diff options
Diffstat (limited to 'media/libstagefright/codecs/mp3dec/src/asm/pvmp3_dct_9_arm.s')
-rw-r--r-- | media/libstagefright/codecs/mp3dec/src/asm/pvmp3_dct_9_arm.s | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_dct_9_arm.s b/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_dct_9_arm.s new file mode 100644 index 0000000..3a6dd4f --- /dev/null +++ b/media/libstagefright/codecs/mp3dec/src/asm/pvmp3_dct_9_arm.s @@ -0,0 +1,210 @@ +; ------------------------------------------------------------------ +; Copyright (C) 1998-2009 PacketVideo +; +; 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. +; ------------------------------------------------------------------- + +; +; +; Filename: pvmp3_dct_9.s +; +;------------------------------------------------------------------------------ +; REVISION HISTORY +; +; +; Who: Date: MM/DD/YYYY +; Description: +; +;------------------------------------------------------------------------------ + + AREA |.drectve|, DRECTVE + + DCB "-defaultlib:coredll.lib " + DCB "-defaultlib:corelibc.lib " + + IMPORT pvmp3_mdct_18 ; pvmp3_mdct_18.cpp + +;------------------------------------------------------------------------------ + + AREA |.rdata|, DATA, READONLY + % 4 + + +;------------------------------------------------------------------------------ + + AREA |.text|, CODE, READONLY + + +;------------------------------------------------------------------------------ + + EXPORT |pvmp3_dct_9| + +|pvmp3_dct_9| PROC + stmfd sp!,{r4-r10,lr} + ldr r2, [r0, #0x20] + ldr r3, [r0] + ldr r12,[r0, #4] + add r1,r2,r3 + sub lr,r2,r3 + ldr r3,[r0, #0x1c] + ldr r4,[r0, #0x18] + add r2,r3,r12 + ldr r5,[r0,#8] + sub r3,r3,r12 + add r12,r4,r5 + sub r4,r4,r5 + ldr r5,[r0, #0x14] + ldr r7,[r0, #0xc] + ldr r9,[r0, #0x10] + add r6,r5,r7 + sub r5,r5,r7 + add r7,r1,r12 + add r8,r9,r2 + add r7,r7,r6 + add r10,r7,r8 + rsb r7,r8,r7,asr #1 + str r7,[r0, #0x18] + rsb r2,r9,r2,asr #1 + str r10,[r0] + ldr r11,|cos_2pi_9| + rsb r7,r2,#0 + + mov r9,r1,lsl #1 + mov r1,r9 ;;;;;; !!!!!! + mov r8,r7 + +; vec[4] = fxp_mac32_Q32( vec[4], tmp0<<1, cos_2pi_9); + + smlal r1,r8,r11,r9 + ldr r10,|cos_4pi_9| + ldr r11,|cos_pi_9| + +; vec[8] = fxp_mac32_Q32( vec[8], tmp0<<1, cos_4pi_9); + + smlal r1,r7,r10,r9 + + + +; vec[2] = fxp_mac32_Q32( vec[2], tmp0<<1, cos_pi_9); + + smlal r9,r2,r11,r9 + mov r1,r12,lsl #1 + rsb r9,r10,#0 + ldr r11,|cos_5pi_9| + + smlal r12,r2,r9,r1 + + + +; vec[2] = fxp_mac32_Q32( vec[2], tmp2<<1, cos_5pi_9); + + ldr r9,|cos_2pi_9| + mov r12,r1 ;;;;;; !!!!!! + smlal r12,r8,r11,r1 + + +; vec[8] = fxp_mac32_Q32( vec[8], tmp2<<1, cos_2pi_9); + + smlal r1,r7,r9,r1 + mov r1,r6,lsl #1 + smlal r12,r7,r11,r1 + and r6,r10,r11,asr #14 + smlal r12,r8,r6,r1 + ldr r10,|cos_11pi_18| + add r12,r11,r6 + smlal r1,r2,r12,r1 + ldr r9,|cos_8pi_9| + str r2,[r0,#8] + mov r1,r5,lsl #1 + +; vec[8] = fxp_mac32_Q32( vec[8], tmp3<<1, cos_8pi_9); + + smull r2,r6,r9,r1 + str r7,[r0,#0x20] + mov r2,r4,lsl #1 + ldr r7,|cos_13pi_18| + smlal r12,r6,r10,r2 + + mov r3,r3,lsl #1 + +; vec[5] = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18); + + smlal r12,r6,r7,r3 + add r4,r5,r4 + mov r12,lr,lsl #1 + sub lr,r4,lr + ldr r7,|cos_17pi_18| + str r8,[r0, #0x10] + ldr r4,|cos_pi_6| + + mov lr,lr,lsl #1 + +; vec[1] = fxp_mac32_Q32( vec[1], tmp8<<1, cos_17pi_18); + + smlal r8,r6,r7,r12 + +; vec[3] = fxp_mul32_Q32((tmp5 + tmp6 - tmp8)<<1, cos_pi_6); + + smull r5,lr,r4,lr + str r6,[r0, #4] + str lr,[r0, #0xc] + + +; vec[5] = fxp_mul32_Q32(tmp5<<1, cos_17pi_18); + smull r5,lr,r7,r1 + rsb r6,r9,#0 +; vec[5] = fxp_mac32_Q32( vec[5], tmp6<<1, cos_7pi_18); + smlal r5,lr,r6,r2 +; vec[5] = fxp_mac32_Q32( vec[5], tmp7<<1, cos_pi_6); + smlal r5,lr,r4,r3 +; vec[5] = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18); + smlal r5,lr,r10,r12 + str lr,[r0, #0x14] + rsb lr,r10,#0 + +; vec[7] = fxp_mul32_Q32(tmp5<<1, cos_5pi_18); + smull r5,r1,lr,r1 +; vec[7] = fxp_mac32_Q32( vec[7], tmp6<<1, cos_17pi_18); + smlal r2,r1,r7,r2 +; vec[7] = fxp_mac32_Q32( vec[7], tmp7<<1, cos_pi_6); + smlal r3,r1,r4,r3 +; vec[7] = fxp_mac32_Q32( vec[7], tmp8<<1, cos_11pi_18); + smlal r12,r1,r9,r12 + str r1,[r0, #0x1c] + ldmfd sp!,{r4-r10,pc} +|cos_2pi_9| + DCD 0x620dbe80 +|cos_4pi_9| + DCD 0x163a1a80 +|cos_pi_9| + DCD 0x7847d900 +|cos_5pi_9| + DCD 0x87b82700 +|cos_8pi_9| + DCD 0xd438af00 +|cos_11pi_18| + DCD 0xadb92280 +|cos_13pi_18| + DCD 0x91261480 +|cos_17pi_18| + DCD 0x81f1d200 +|cos_pi_6| + DCD 0x6ed9eb80 + ENDP + + + + + + END |