1d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ ------------------------------------------------------------------ 2d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ Copyright (C) 1998-2009 PacketVideo 3d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ 4d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ Licensed under the Apache License, Version 2.0 (the "License"); 5d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ you may not use this file except in compliance with the License. 6d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ You may obtain a copy of the License at 7d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ 8d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ http://www.apache.org/licenses/LICENSE-2.0 9d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ 10d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ Unless required by applicable law or agreed to in writing, software 11d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ distributed under the License is distributed on an "AS IS" BASIS, 12d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ express or implied. 14d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ See the License for the specific language governing permissions 15d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ and limitations under the License. 16d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ ------------------------------------------------------------------- 17d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 18d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ 19d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ 20d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ Filename: pvmp3_dct_9_gcc.s 21d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ 22d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@------------------------------------------------------------------------------ 23d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ REVISION HISTORY 24d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ 25d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ 26d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ Who: Date: MM/DD/YYYY 27d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ Description: 28d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ 29d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@------------------------------------------------------------------------------ 30d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 31d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.arm 32d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 33d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.align 4 34d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 35d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.text 36d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 37d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 38d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@------------------------------------------------------------------------------ 39d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 40d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.global pvmp3_dct_9 41d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 42d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberpvmp3_dct_9: 43d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber stmfd sp!,{r4-r11,lr} 44d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r2, [r0, #0x20] 45d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r3, [r0, #0] 46d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r12,[r0, #4] 47d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber add r1,r2,r3 48d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber sub lr,r2,r3 49d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r3,[r0, #0x1c] 50d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r4,[r0, #0x18] 51d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber add r2,r3,r12 52d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r5,[r0,#8] 53d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber sub r3,r3,r12 54d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber add r12,r4,r5 55d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber sub r4,r4,r5 56d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r5,[r0, #0x14] 57d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r7,[r0, #0xc] 58d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r9,[r0, #0x10] 59d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber add r6,r5,r7 60d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber sub r5,r5,r7 61d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber add r7,r1,r12 62d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber add r8,r9,r2 63d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber add r7,r7,r6 64d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber add r10,r7,r8 65d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber rsb r7,r8,r7,asr #1 66d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber str r7,[r0, #0x18] 67d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber rsb r2,r9,r2,asr #1 68d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber str r10,[r0,#0] 69d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r11,cos_2pi_9 70d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber rsb r7,r2,#0 71d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 72d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r10,cos_4pi_9 73d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber mov r9,r1,lsl #1 74d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber mov r8,r7 75d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 76d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[4] = fxp_mac32_Q32( vec[4], tmp0<<1, cos_2pi_9)@ 77d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 78d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r1,r8,r11,r9 79d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r11,cos_pi_9 80d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber mov r1,r9 @@@@@@ !!!!!! 81d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 82d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[8] = fxp_mac32_Q32( vec[8], tmp0<<1, cos_4pi_9)@ 83d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 84d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r1,r7,r10,r9 85d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 86d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber mov r1,r12,lsl #1 87d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 88d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 89d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[2] = fxp_mac32_Q32( vec[2], tmp0<<1, cos_pi_9)@ 90d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 91d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r9,r2,r11,r9 92d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber rsb r9,r10,#0 93d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r11,cos_5pi_9 94d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 95d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r12,r2,r9,r1 96d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 97d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 98d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 99d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[2] = fxp_mac32_Q32( vec[2], tmp2<<1, cos_5pi_9)@ 100d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 101d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r9,cos_2pi_9 102d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber mov r12,r1 @@@@@@ !!!!!! 103d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r12,r8,r11,r1 104d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 105d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 106d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[8] = fxp_mac32_Q32( vec[8], tmp2<<1, cos_2pi_9)@ 107d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 108d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r1,r7,r9,r1 109d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber mov r1,r6,lsl #1 110d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r12,r7,r11,r1 111d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber and r6,r10,r11,asr #14 112d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r12,r8,r6,r1 113d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r10,cos_11pi_18 114d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber add r12,r11,r6 115d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r1,r2,r12,r1 116d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r9,cos_8pi_9 117d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber str r2,[r0,#8] 118d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber mov r1,r5,lsl #1 119d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 120d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[8] = fxp_mac32_Q32( vec[8], tmp3<<1, cos_8pi_9)@ 121d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 122d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smull r2,r6,r9,r1 123d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber str r7,[r0,#0x20] 124d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber mov r2,r4,lsl #1 125d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r7,cos_13pi_18 126d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r12,r6,r10,r2 127d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 128d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber mov r3,r3,lsl #1 129d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 130d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[5] = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18)@ 131d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 132d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r12,r6,r7,r3 133d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber add r4,r5,r4 134d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber mov r12,lr,lsl #1 135d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber sub lr,r4,lr 136d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r7,cos_17pi_18 137d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber str r8,[r0, #0x10] 138d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldr r4,cos_pi_6 139d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 140d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber mov lr,lr,lsl #1 141d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 142d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[1] = fxp_mac32_Q32( vec[1], tmp8<<1, cos_17pi_18)@ 143d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 144d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r8,r6,r7,r12 145d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 146d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[3] = fxp_mul32_Q32((tmp5 + tmp6 - tmp8)<<1, cos_pi_6)@ 147d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 148d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smull r5,lr,r4,lr 149d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber str r6,[r0, #4] 150d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber str lr,[r0, #0xc] 151d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 152d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 153d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[5] = fxp_mul32_Q32(tmp5<<1, cos_17pi_18)@ 154d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smull r5,lr,r7,r1 155d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber rsb r6,r9,#0 156d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[5] = fxp_mac32_Q32( vec[5], tmp6<<1, cos_7pi_18)@ 157d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r5,lr,r6,r2 158d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[5] = fxp_mac32_Q32( vec[5], tmp7<<1, cos_pi_6)@ 159d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r5,lr,r4,r3 160d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[5] = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18)@ 161d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r5,lr,r10,r12 162d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber str lr,[r0, #0x14] 163d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber rsb lr,r10,#0 164d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 165d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[7] = fxp_mul32_Q32(tmp5<<1, cos_5pi_18)@ 166d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smull r5,r1,lr,r1 167d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[7] = fxp_mac32_Q32( vec[7], tmp6<<1, cos_17pi_18)@ 168d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r2,r1,r7,r2 169d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[7] = fxp_mac32_Q32( vec[7], tmp7<<1, cos_pi_6)@ 170d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r3,r1,r4,r3 171d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@ vec[7] = fxp_mac32_Q32( vec[7], tmp8<<1, cos_11pi_18)@ 172d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber smlal r12,r1,r9,r12 173d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber str r1,[r0, #0x1c] 174d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ldmfd sp!,{r4-r11,pc} 175d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_2pi_9: 176d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber .word 0x620dbe80 177d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_4pi_9: 178d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber .word 0x163a1a80 179d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_pi_9: 180d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber .word 0x7847d900 181d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_5pi_9: 182d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber .word 0x87b82700 183d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_8pi_9: 184d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber .word 0xd438af00 185d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_11pi_18: 186d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber .word 0xadb92280 187d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_13pi_18: 188d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber .word 0x91261480 189d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_17pi_18: 190d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber .word 0x81f1d200 191d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_pi_6: 192d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber .word 0x6ed9eb80 193d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 194