1@VOID ixheaacd_esbr_qmfsyn64_winadd( 2@WORD32 *tmp1, 3@WORD32 *tmp2, 4@WORD32 *inp1, 5@WORD32 *sample_buffer, 6@WORD32 ch_fac) 7@R0->Word32 *tmp1 8@R1->Word32 *tmp2 9@R2->Word32 *inp1 10@R3->Word32 *sample_buffer 11@R5->ch_fac 12 13.text 14.p2align 2 15 .global ixheaacd_esbr_qmfsyn64_winadd 16 17ixheaacd_esbr_qmfsyn64_winadd: @ PROC 18 19 STMFD sp!, {R4-R12, R14} 20 VPUSH {D8- D15} 21 LDR R5, [SP, #104] 22 23 MOV R7, #0 24 VLD1.32 {D0, D1}, [R0]! 25 MOV R12, R2 26 27 VDUP.32 Q15, R7 28 VLD1.32 {D2, D3}, [R2]! 29 30 MOV R10, R0 31 MOV R11, R2 32 ADD R0, R0, #1008 33 ADD R2, R2, #496 34 35 MOV R6, #64 36 MOV R6, R6, LSL #2 37 ADD R12, R12, R6 38 MOV R7, #256 39 MOV R9, R7, LSL #1 40 ADD R1, R1, R9 41 MOV R6, #64 42 MOV R7, #256 43 MOV R9, R7, LSL #1 @(256*2) 44 MOV R7, #512 45 MOV R8, R7, LSL #1 @(512*2) 46 47 MOV R5, R5, LSL #2 48 VMOV Q13, Q15 49 VMOV Q14, Q15 50 51 VMLAL.S32 Q13, D0, D2 52 VMLAL.S32 Q14, D1, D3 53 54 VLD1.32 {D4, D5}, [R0], R8 55 VLD1.32 {D6, D7}, [R2], R9 56 57 VMLAL.S32 Q13, D6, D4 58 VMLAL.S32 Q14, D7, D5 59 60 VLD1.32 {D8, D9}, [R0], R8 61 VLD1.32 {D10, D11}, [R2], R9 62 63 VMLAL.S32 Q13, D10, D8 64 VMLAL.S32 Q14, D11, D9 65 66 VLD1.32 {D12, D13}, [R0], R8 67 VLD1.32 {D14, D15}, [R2], R9 68 69 VMLAL.S32 Q13, D12, D14 70 VMLAL.S32 Q14, D13, D15 71 72 VLD1.32 {D16, D17}, [R0], R8 73 VLD1.32 {D18, D19}, [R2], R9 74 75 VMLAL.S32 Q13, D16, D18 76 VMLAL.S32 Q14, D17, D19 77 78 MOV R0, R10 79 80 81 MOV R2, R11 82 VLD1.32 {D0, D1}, [R1]! 83 MOV R10, R1 84 VLD1.32 {D2, D3}, [R12]! 85 ADD R1, R1, #1008 86 MOV R11, R12 87 88 VMLAL.S32 Q13, D0, D2 89 VMLAL.S32 Q14, D1, D3 90 VLD1.32 {D4, D5}, [R1], R8 91 ADD R12, R12, #496 92 93 VLD1.32 {D6, D7}, [R12], R9 94 95 VMLAL.S32 Q13, D6, D4 96 VMLAL.S32 Q14, D7, D5 97 98 VLD1.32 {D8, D9}, [R1], R8 99 VLD1.32 {D10, D11}, [R12], R9 100 101 VMLAL.S32 Q13, D10, D8 102 VMLAL.S32 Q14, D11, D9 103 104 VLD1.32 {D12, D13}, [R1], R8 105 VLD1.32 {D14, D15}, [R12], R9 106 107 VMLAL.S32 Q13, D12, D14 108 VMLAL.S32 Q14, D13, D15 109 110 VLD1.32 {D16, D17}, [R1], R8 111 VLD1.32 {D18, D19}, [R12], R9 112 113 VMLAL.S32 Q13, D16, D18 114 VMLAL.S32 Q14, D17, D19 115 116 VSHRN.S64 D26 , Q13, #31 117 118 VST1.32 D26[0], [R3], R5 119 VST1.32 D26[1], [R3], R5 120 121 VSHRN.S64 D27 , Q14, #31 122 123 VST1.32 D27[0], [R3], R5 124 VST1.32 D27[1], [R3], R5 125 126 SUB R6, R6, #8 127LOOP_1: 128 129 VLD1.32 {D0, D1}, [R0]! 130 MOV R12, R11 131 MOV R1, R10 132 VLD1.32 {D2, D3}, [R2]! 133 MOV R10, R0 134 135 ADD R0, R0, #1008 136 137 MOV R11, R2 138 ADD R2, R2, #496 139 140 141 VMOV Q13, Q15 142 VMOV Q14, Q15 143 144 VMLAL.S32 Q13, D0, D2 145 VMLAL.S32 Q14, D1, D3 146 147 VLD1.32 {D4, D5}, [R0], R8 148 VLD1.32 {D6, D7}, [R2], R9 149 150 VMLAL.S32 Q13, D6, D4 151 VMLAL.S32 Q14, D7, D5 152 153 VLD1.32 {D8, D9}, [R0], R8 154 VLD1.32 {D10, D11}, [R2], R9 155 156 VMLAL.S32 Q13, D10, D8 157 VMLAL.S32 Q14, D11, D9 158 159 VLD1.32 {D12, D13}, [R0], R8 160 VLD1.32 {D14, D15}, [R2], R9 161 162 VMLAL.S32 Q13, D12, D14 163 VMLAL.S32 Q14, D13, D15 164 165 VLD1.32 {D16, D17}, [R0], R8 166 VLD1.32 {D18, D19}, [R2], R9 167 168 VMLAL.S32 Q13, D16, D18 169 VMLAL.S32 Q14, D17, D19 170 171 MOV R0, R10 172 173 174 MOV R2, R11 175 VLD1.32 {D0, D1}, [R1]! 176 MOV R10, R1 177 VLD1.32 {D2, D3}, [R12]! 178 ADD R1, R1, #1008 179 MOV R11, R12 180 181 VMLAL.S32 Q13, D0, D2 182 VMLAL.S32 Q14, D1, D3 183 VLD1.32 {D4, D5}, [R1], R8 184 ADD R12, R12, #496 185 186 VLD1.32 {D6, D7}, [R12], R9 187 188 VMLAL.S32 Q13, D6, D4 189 VMLAL.S32 Q14, D7, D5 190 191 VLD1.32 {D8, D9}, [R1], R8 192 VLD1.32 {D10, D11}, [R12], R9 193 194 VMLAL.S32 Q13, D10, D8 195 VMLAL.S32 Q14, D11, D9 196 197 VLD1.32 {D12, D13}, [R1], R8 198 VLD1.32 {D14, D15}, [R12], R9 199 200 VMLAL.S32 Q13, D12, D14 201 VMLAL.S32 Q14, D13, D15 202 203 VLD1.32 {D16, D17}, [R1], R8 204 VLD1.32 {D18, D19}, [R12], R9 205 206 VMLAL.S32 Q13, D16, D18 207 VMLAL.S32 Q14, D17, D19 208 209 VSHRN.S64 D26 , Q13, #31 210 211 VST1.32 D26[0], [R3], R5 212 VST1.32 D26[1], [R3], R5 213 214 VSHRN.S64 D27 , Q14, #31 215 216 VST1.32 D27[0], [R3], R5 217 VST1.32 D27[1], [R3], R5 218@@@ 219 VLD1.32 {D0, D1}, [R0]! 220 MOV R12, R11 221 MOV R1, R10 222 VLD1.32 {D2, D3}, [R2]! 223 MOV R10, R0 224 225 VMOV Q13, Q15 226 VMLAL.S32 Q13, D0, D2 227 VMOV Q14, Q15 228 VMLAL.S32 Q14, D1, D3 229 230 ADD R0, R0, #1008 231 232 MOV R11, R2 233 VLD1.32 {D4, D5}, [R0], R8 234 ADD R2, R2, #496 235 236 237 VLD1.32 {D6, D7}, [R2], R9 238 239 VMLAL.S32 Q13, D6, D4 240 VMLAL.S32 Q14, D7, D5 241 242 VLD1.32 {D8, D9}, [R0], R8 243 VLD1.32 {D10, D11}, [R2], R9 244 245 VMLAL.S32 Q13, D8, D10 246 VMLAL.S32 Q14, D9, D11 247 248 VLD1.32 {D12, D13}, [R0], R8 249 VLD1.32 {D14, D15}, [R2], R9 250 251 VMLAL.S32 Q13, D12, D14 252 VMLAL.S32 Q14, D13, D15 253 254 VLD1.32 {D16, D17}, [R0], R8 255 VLD1.32 {D18, D19}, [R2], R9 256 257 VMLAL.S32 Q13, D16, D18 258 VMLAL.S32 Q14, D17, D19 259 260 MOV R0, R10 261 262 263 MOV R2, R11 264 VLD1.32 {D0, D1}, [R1]! 265 266 MOV R10, R1 267 VLD1.32 {D2, D3}, [R12]! 268 ADD R1, R1, #1008 269 270 VMLAL.S32 Q13, D0, D2 271 VMLAL.S32 Q14, D1, D3 272 273 MOV R11, R12 274 VLD1.32 {D4, D5}, [R1], R8 275 ADD R12, R12, #496 276 277 278 VLD1.32 {D6, D7}, [R12], R9 279 280 VMLAL.S32 Q13, D6, D4 281 VMLAL.S32 Q14, D7, D5 282 283 VLD1.32 {D8, D9}, [R1], R8 284 VLD1.32 {D10, D11}, [R12], R9 285 286 VMLAL.S32 Q13, D8, D10 287 VMLAL.S32 Q14, D9, D11 288 289 VLD1.32 {D12, D13}, [R1], R8 290 VLD1.32 {D14, D15}, [R12], R9 291 292 VMLAL.S32 Q13, D12, D14 293 VMLAL.S32 Q14, D13, D15 294 295 VLD1.32 {D16, D17}, [R1], R8 296 VLD1.32 {D18, D19}, [R12], R9 297 298 VMLAL.S32 Q13, D16, D18 299 VMLAL.S32 Q14, D17, D19 300 301 VSHRN.S64 D26 , Q13, #31 302 303 VST1.32 D26[0], [R3], R5 304 VST1.32 D26[1], [R3], R5 305 306 VSHRN.S64 D27 , Q14, #31 307 308 VST1.32 D27[0], [R3], R5 309 VST1.32 D27[1], [R3], R5 310 311 SUBS R6, R6, #8 @1 312 313 BGT LOOP_1 314 315 VLD1.32 {D0, D1}, [R0]! 316 MOV R12, R11 317 MOV R1, R10 318 VLD1.32 {D2, D3}, [R2]! 319 MOV R10, R0 320 321 VMOV Q13, Q15 322 VMLAL.S32 Q13, D0, D2 323 VMOV Q14, Q15 324 VMLAL.S32 Q14, D1, D3 325 326 ADD R0, R0, #1008 327 328 MOV R11, R2 329 VLD1.32 {D4, D5}, [R0], R8 330 ADD R2, R2, #496 331 332 333 VLD1.32 {D6, D7}, [R2], R9 334 335 VMLAL.S32 Q13, D6, D4 336 VMLAL.S32 Q14, D7, D5 337 338 VLD1.32 {D8, D9}, [R0], R8 339 VLD1.32 {D10, D11}, [R2], R9 340 341 VMLAL.S32 Q13, D8, D10 342 VMLAL.S32 Q14, D9, D11 343 344 VLD1.32 {D12, D13}, [R0], R8 345 VLD1.32 {D14, D15}, [R2], R9 346 347 VMLAL.S32 Q13, D12, D14 348 VMLAL.S32 Q14, D13, D15 349 350 VLD1.32 {D16, D17}, [R0], R8 351 VLD1.32 {D18, D19}, [R2], R9 352 353 VMLAL.S32 Q13, D16, D18 354 VMLAL.S32 Q14, D17, D19 355 356 MOV R0, R10 357 358 359 MOV R2, R11 360 VLD1.32 {D0, D1}, [R1]! 361 362 MOV R10, R1 363 VLD1.32 {D2, D3}, [R12]! 364 ADD R1, R1, #1008 365 366 VMLAL.S32 Q13, D0, D2 367 VMLAL.S32 Q14, D1, D3 368 369 MOV R11, R12 370 VLD1.32 {D4, D5}, [R1], R8 371 ADD R12, R12, #496 372 373 374 VLD1.32 {D6, D7}, [R12], R9 375 376 VMLAL.S32 Q13, D6, D4 377 VMLAL.S32 Q14, D7, D5 378 379 VLD1.32 {D8, D9}, [R1], R8 380 VLD1.32 {D10, D11}, [R12], R9 381 382 VMLAL.S32 Q13, D8, D10 383 VMLAL.S32 Q14, D9, D11 384 385 VLD1.32 {D12, D13}, [R1], R8 386 VLD1.32 {D14, D15}, [R12], R9 387 388 VMLAL.S32 Q13, D12, D14 389 VMLAL.S32 Q14, D13, D15 390 391 VLD1.32 {D16, D17}, [R1], R8 392 VLD1.32 {D18, D19}, [R12], R9 393 394 VMLAL.S32 Q13, D16, D18 395 VMLAL.S32 Q14, D17, D19 396 397 VSHRN.S64 D26 , Q13, #31 398 399 VST1.32 D26[0], [R3], R5 400 VST1.32 D26[1], [R3], R5 401 402 VSHRN.S64 D27, Q14, #31 403 404 VST1.32 D27[0], [R3], R5 405 VST1.32 D27[1], [R3], R5 406 407 VPOP {D8 - D15} 408 LDMFD sp!, {R4-R12, R15} 409 @ ENDP 410