@ ------------------------------------------------------------------ @ 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_gcc.s @ @------------------------------------------------------------------------------ @ REVISION HISTORY @ @ @ Who: Date: MM/DD/YYYY @ Description: @ @------------------------------------------------------------------------------ .arm .align 4 .text @------------------------------------------------------------------------------ .global pvmp3_dct_9 pvmp3_dct_9: stmfd sp!,{r4-r11,lr} ldr r2, [r0, #0x20] ldr r3, [r0, #0] 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,#0] ldr r11,cos_2pi_9 rsb r7,r2,#0 ldr r10,cos_4pi_9 mov r9,r1,lsl #1 mov r8,r7 @ vec[4] = fxp_mac32_Q32( vec[4], tmp0<<1, cos_2pi_9)@ smlal r1,r8,r11,r9 ldr r11,cos_pi_9 mov r1,r9 @@@@@@ !!!!!! @ vec[8] = fxp_mac32_Q32( vec[8], tmp0<<1, cos_4pi_9)@ smlal r1,r7,r10,r9 mov r1,r12,lsl #1 @ vec[2] = fxp_mac32_Q32( vec[2], tmp0<<1, cos_pi_9)@ smlal r9,r2,r11,r9 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-r11,pc} cos_2pi_9: .word 0x620dbe80 cos_4pi_9: .word 0x163a1a80 cos_pi_9: .word 0x7847d900 cos_5pi_9: .word 0x87b82700 cos_8pi_9: .word 0xd438af00 cos_11pi_18: .word 0xadb92280 cos_13pi_18: .word 0x91261480 cos_17pi_18: .word 0x81f1d200 cos_pi_6: .word 0x6ed9eb80