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