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_polyphase_filter_window.s 21; 22;------------------------------------------------------------------------------ 23; REVISION HISTORY 24; 25; 26; Who: Date: MM/DD/YYYY 27; Description: 28; 29;------------------------------------------------------------------------------ 30 31 CODE32 32 33 AREA |.drectve|, DRECTVE 34 35 EXPORT |pvmp3_polyphase_filter_window| 36 IMPORT |pqmfSynthWin| 37 38 AREA |.pdata|, PDATA 39 40 AREA |.text|, CODE, ARM 41 42|pvmp3_polyphase_filter_window| PROC 43 stmfd sp!,{r0-r2,r4-r11,lr} 44 45 sub sp,sp,#4 46 ldr r2,[sp,#0xc] 47 ldr r1,PolyPh_filter_coeff 48 49 sub r2,r2,#1 50 mov r10,#1 51 str r2,[sp] 52 53; Accumulators r9, r11::> Initialization 54 55Loop_j 56 mov r9, #0x20 57 mov r11, #0x20 58 mov r4, #0x10 59Loop_i 60 add r2,r4,r10 61 add r3,r0,r2,lsl #2 62 sub r2,r4,r10 63 ldr r5,[r3] 64 ldr lr,[r1] 65 add r12,r0,r2,lsl #2 66 ldr r6,[r12,#0x780] 67 smlal r2,r9,lr,r5 68 smlal r2,r11,lr,r6 69 ldr r2,[r1,#4] 70 ldr r7,[r12,#0x80] 71 smlal r5,r11,r2,r5 72 smull r6,r5,r2,r6 73 sub r9,r9,r5 74 ldr r5,[r1,#8] 75 ldr r8,[r3,#0x700] 76 add r4,r4,#0x200 77 smlal r6,r9,r5,r7 78 smull r6,r2,r5,r8 79 ldr r5,[r1,#0xc] 80 sub r11,r11,r2 81 smlal r8,r9,r5,r8 82 smlal r7,r11,r5,r7 83 ldr r5,[r3,#0x100] 84 ldr r2,[r1,#0x10] 85 ldr r6,[r12,#0x680] 86 smlal lr,r9,r2,r5 87 smlal lr,r11,r2,r6 88 ldr r2,[r1,#0x14] 89 ldr r7,[r12,#0x180] 90 smlal r5,r11,r2,r5 91 smull r6,r5,r2,r6 92 ldr r6,[r1,#0x18] 93 ldr r8,[r3,#0x600] 94 sub r9,r9,r5 95 smlal r5,r9,r6,r7 96 smull r2,r5,r6,r8 97 ldr r6,[r1,#0x1c] 98 sub r11,r11,r5 99 smlal r8,r9,r6,r8 100 ldr r2,[r1,#0x20] 101 ldr r5,[r3,#0x200] 102 smlal r7,r11,r6,r7 103 ldr r6,[r12,#0x580] 104 smlal lr,r9,r2,r5 105 smlal lr,r11,r2,r6 106 ldr r2,[r1,#0x24] 107 ldr r7,[r12,#0x280] 108 smlal r5,r11,r2,r5 109 smull r6,r5,r2,r6 110 ldr r6,[r1,#0x28] 111 ldr r8,[r3,#0x500] 112 sub r9,r9,r5 113 smlal r5,r9,r6,r7 114 smull r2,r5,r6,r8 115 ldr r6,[r1,#0x2c] 116 sub r11,r11,r5 117 118 smlal r8,r9,r6,r8 119 smlal r7,r11,r6,r7 120 ldr r5,[r3,#0x300] 121 ldr r8,[r1,#0x30] 122 ldr r6,[r12,#0x480] 123 smlal r7,r9,r8,r5 124 smlal r7,r11,r8,r6 125 ldr r8,[r1,#0x34] 126 ldr r12,[r12,#0x380] 127 smlal r5,r11,r8,r5 128 smull r6,r5,r8,r6 129 ldr r6,[r1,#0x38] 130 131 132 ldr r3,[r3,#0x400] 133 sub r9,r9,r5 134 smlal r7,r9,r6,r12 135 smull r8,r7,r6,r3 136 cmp r4,#0x210 137 sub r11,r11,r7 138 139 ldr r2,[r1,#0x3c] 140 add r1,r1,#0x40 141 smlal r3,r9,r2,r3 142 smlal r12,r11,r2,r12 143 144 blt Loop_i 145 146 mov r3,r9, asr #6 147 mov r4,r3, asr #15 148 teq r4,r3, asr #31 149 ldr r12,LOW_16BITS 150 ldr r2,[sp] 151 eorne r3,r12,r3,asr #31 152 ldr r4,[sp,#8] 153 mov r2,r10,lsl r2 154 add r4,r4,r2,lsl #1 155 strh r3,[r4] 156 157 mov r3,r11,asr #6 158 mov r4,r3,asr #15 159 teq r4,r3,asr #31 160 eorne r3,r12,r3,asr #31 161 ldr r12,[sp,#0xc] 162 ldr r11,[sp,#8] 163 rsb r2,r2,r12,lsl #5 164 add r2,r11,r2,lsl #1 165 strh r3,[r2] 166 167 add r10,r10,#1 168 cmp r10,#0x10 169 blt Loop_j 170 171; Accumulators r4, r5 Initialization 172 173 mov r4,#0x20 174 mov r5,#0x20 175 mov r3,#0x10 176PolyPh_filter_loop2 177 add r2,r0,r3,lsl #2 178 ldr r12,[r2] 179 ldr r8,[r1] 180 ldr r6,[r2,#0x80] 181 smlal r12,r4,r8,r12 182 ldr r12,[r1,#4] 183 ldr r7,[r2,#0x40] 184 smlal r6,r4,r12,r6 185 186 ldr r12,[r1,#8] 187 ldr r6,[r2,#0x180] 188 smlal r7,r5,r12,r7 189 ldr r12,[r2,#0x100] 190 ldr r7,[r1,#0xc] 191 ldr r2,[r2,#0x140] 192 smlal r12,r4,r7,r12 193 ldr r12,[r1,#0x10] 194 add r3,r3,#0x80 195 smlal r6,r4,r12,r6 196 ldr r6,[r1,#0x14] 197 cmp r3,#0x210 198 smlal r2,r5,r6,r2 199 add r1,r1,#0x18 200 201 blt PolyPh_filter_loop2 202 mov r0,r4,asr #6 203 mov r2,r0,asr #15 204 teq r2,r0,asr #31 205 ldrne r12,LOW_16BITS 206 ldr r1,[sp,#8] 207 eorne r0,r12,r0,asr #31 208 strh r0,[r1,#0] 209 mov r0,r5,asr #6 210 mov r2,r0,asr #15 211 teq r2,r0,asr #31 212 ldrne r12,LOW_16BITS 213 ldr r2,[sp] 214 mov r1,#0x10 215 eorne r0,r12,r0,asr #31 216 ldr r12,[sp,#8] 217 mov r1,r1,lsl r2 218 add r1,r12,r1,lsl #1 219 strh r0,[r1] 220 add sp,sp,#0x10 221 ldmfd sp!,{r4-r11,pc} 222 223 224PolyPh_filter_coeff 225 DCD pqmfSynthWin 226LOW_16BITS 227 DCD 0x00007fff 228 229 ENDP ; |pvmp3_polyphase_filter_window| 230 END 231 232