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