1250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ ------------------------------------------------------------------ 2250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ Copyright (C) 1998-2009 PacketVideo 3250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ 4250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ Licensed under the Apache License, Version 2.0 (the "License"); 5250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ you may not use this file except in compliance with the License. 6250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ You may obtain a copy of the License at 7250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ 8250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ http://www.apache.org/licenses/LICENSE-2.0 9250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ 10250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ Unless required by applicable law or agreed to in writing, software 11250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ distributed under the License is distributed on an "AS IS" BASIS, 12250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ express or implied. 14250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ See the License for the specific language governing permissions 15250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ and limitations under the License. 16250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ ------------------------------------------------------------------- 17250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 18250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ 19250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ 20250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ Filename: pvmp3_dct_9_gcc.s 21250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ 22250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@------------------------------------------------------------------------------ 23250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ REVISION HISTORY 24250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ 25250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ 26250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ Who: Date: MM/DD/YYYY 27250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ Description: 28250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ 29250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@------------------------------------------------------------------------------ 30250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 31250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber.arm 32250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 33250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber.align 4 34250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 35250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber.text 36250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 37250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 38250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@------------------------------------------------------------------------------ 39250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 40250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber.global pvmp3_dct_9 41250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 42250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huberpvmp3_dct_9: 43250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber stmfd sp!,{r4-r11,lr} 44250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r2, [r0, #0x20] 45250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r3, [r0, #0] 46250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r12,[r0, #4] 47250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber add r1,r2,r3 48250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber sub lr,r2,r3 49250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r3,[r0, #0x1c] 50250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r4,[r0, #0x18] 51250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber add r2,r3,r12 52250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r5,[r0,#8] 53250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber sub r3,r3,r12 54250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber add r12,r4,r5 55250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber sub r4,r4,r5 56250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r5,[r0, #0x14] 57250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r7,[r0, #0xc] 58250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r9,[r0, #0x10] 59250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber add r6,r5,r7 60250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber sub r5,r5,r7 61250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber add r7,r1,r12 62250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber add r8,r9,r2 63250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber add r7,r7,r6 64250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber add r10,r7,r8 65250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber rsb r7,r8,r7,asr #1 66250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber str r7,[r0, #0x18] 67250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber rsb r2,r9,r2,asr #1 68250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber str r10,[r0,#0] 69250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r11,cos_2pi_9 70250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber rsb r7,r2,#0 71250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 72250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r10,cos_4pi_9 73250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber mov r9,r1,lsl #1 74250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber mov r8,r7 75250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 76250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[4] = fxp_mac32_Q32( vec[4], tmp0<<1, cos_2pi_9)@ 77250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 78250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r1,r8,r11,r9 79250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r11,cos_pi_9 80250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber mov r1,r9 @@@@@@ !!!!!! 81250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 82250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[8] = fxp_mac32_Q32( vec[8], tmp0<<1, cos_4pi_9)@ 83250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 84250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r1,r7,r10,r9 85250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 86250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber mov r1,r12,lsl #1 87250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 88250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 89250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[2] = fxp_mac32_Q32( vec[2], tmp0<<1, cos_pi_9)@ 90250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 91250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r9,r2,r11,r9 92250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber rsb r9,r10,#0 93250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r11,cos_5pi_9 94250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 95250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r12,r2,r9,r1 96250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 97250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 98250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 99250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[2] = fxp_mac32_Q32( vec[2], tmp2<<1, cos_5pi_9)@ 100250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 101250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r9,cos_2pi_9 102250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber mov r12,r1 @@@@@@ !!!!!! 103250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r12,r8,r11,r1 104250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 105250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 106250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[8] = fxp_mac32_Q32( vec[8], tmp2<<1, cos_2pi_9)@ 107250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 108250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r1,r7,r9,r1 109250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber mov r1,r6,lsl #1 110250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r12,r7,r11,r1 111250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber and r6,r10,r11,asr #14 112250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r12,r8,r6,r1 113250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r10,cos_11pi_18 114250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber add r12,r11,r6 115250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r1,r2,r12,r1 116250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r9,cos_8pi_9 117250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber str r2,[r0,#8] 118250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber mov r1,r5,lsl #1 119250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 120250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[8] = fxp_mac32_Q32( vec[8], tmp3<<1, cos_8pi_9)@ 121250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 122250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smull r2,r6,r9,r1 123250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber str r7,[r0,#0x20] 124250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber mov r2,r4,lsl #1 125250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r7,cos_13pi_18 126250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r12,r6,r10,r2 127250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 128250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber mov r3,r3,lsl #1 129250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 130250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[5] = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18)@ 131250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 132250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r12,r6,r7,r3 133250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber add r4,r5,r4 134250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber mov r12,lr,lsl #1 135250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber sub lr,r4,lr 136250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r7,cos_17pi_18 137250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber str r8,[r0, #0x10] 138250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldr r4,cos_pi_6 139250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 140250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber mov lr,lr,lsl #1 141250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 142250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[1] = fxp_mac32_Q32( vec[1], tmp8<<1, cos_17pi_18)@ 143250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 144250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r8,r6,r7,r12 145250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 146250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[3] = fxp_mul32_Q32((tmp5 + tmp6 - tmp8)<<1, cos_pi_6)@ 147250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 148250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smull r5,lr,r4,lr 149250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber str r6,[r0, #4] 150250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber str lr,[r0, #0xc] 151250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 152250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 153250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[5] = fxp_mul32_Q32(tmp5<<1, cos_17pi_18)@ 154250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smull r5,lr,r7,r1 155250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber rsb r6,r9,#0 156250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[5] = fxp_mac32_Q32( vec[5], tmp6<<1, cos_7pi_18)@ 157250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r5,lr,r6,r2 158250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[5] = fxp_mac32_Q32( vec[5], tmp7<<1, cos_pi_6)@ 159250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r5,lr,r4,r3 160250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[5] = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18)@ 161250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r5,lr,r10,r12 162250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber str lr,[r0, #0x14] 163250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber rsb lr,r10,#0 164250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 165250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[7] = fxp_mul32_Q32(tmp5<<1, cos_5pi_18)@ 166250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smull r5,r1,lr,r1 167250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[7] = fxp_mac32_Q32( vec[7], tmp6<<1, cos_17pi_18)@ 168250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r2,r1,r7,r2 169250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[7] = fxp_mac32_Q32( vec[7], tmp7<<1, cos_pi_6)@ 170250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r3,r1,r4,r3 171250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber@ vec[7] = fxp_mac32_Q32( vec[7], tmp8<<1, cos_11pi_18)@ 172250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber smlal r12,r1,r9,r12 173250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber str r1,[r0, #0x1c] 174250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber ldmfd sp!,{r4-r11,pc} 175250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Hubercos_2pi_9: 176250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber .word 0x620dbe80 177250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Hubercos_4pi_9: 178250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber .word 0x163a1a80 179250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Hubercos_pi_9: 180250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber .word 0x7847d900 181250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Hubercos_5pi_9: 182250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber .word 0x87b82700 183250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Hubercos_8pi_9: 184250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber .word 0xd438af00 185250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Hubercos_11pi_18: 186250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber .word 0xadb92280 187250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Hubercos_13pi_18: 188250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber .word 0x91261480 189250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Hubercos_17pi_18: 190250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber .word 0x81f1d200 191250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Hubercos_pi_6: 192250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber .word 0x6ed9eb80 193250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber 194