| @VOID ixheaacd_esbr_qmfsyn64_winadd( |
| @WORD32 *tmp1, |
| @WORD32 *tmp2, |
| @WORD32 *inp1, |
| @WORD32 *sample_buffer, |
| @WORD32 ch_fac) |
| @R0->Word32 *tmp1 |
| @R1->Word32 *tmp2 |
| @R2->Word32 *inp1 |
| @R3->Word32 *sample_buffer |
| @R5->ch_fac |
| |
| .text |
| .p2align 2 |
| .global ixheaacd_esbr_qmfsyn64_winadd |
| |
| ixheaacd_esbr_qmfsyn64_winadd: @ PROC |
| |
| STMFD sp!, {R4-R12, R14} |
| VPUSH {D8- D15} |
| LDR R5, [SP, #104] |
| |
| MOV R7, #0 |
| VLD1.32 {D0, D1}, [R0]! |
| MOV R12, R2 |
| |
| VDUP.32 Q15, R7 |
| VLD1.32 {D2, D3}, [R2]! |
| |
| MOV R10, R0 |
| MOV R11, R2 |
| ADD R0, R0, #1008 |
| ADD R2, R2, #496 |
| |
| MOV R6, #64 |
| MOV R6, R6, LSL #2 |
| ADD R12, R12, R6 |
| MOV R7, #256 |
| MOV R9, R7, LSL #1 |
| ADD R1, R1, R9 |
| MOV R6, #64 |
| MOV R7, #256 |
| MOV R9, R7, LSL #1 @(256*2) |
| MOV R7, #512 |
| MOV R8, R7, LSL #1 @(512*2) |
| |
| MOV R5, R5, LSL #2 |
| VMOV Q13, Q15 |
| VMOV Q14, Q15 |
| |
| VMLAL.S32 Q13, D0, D2 |
| VMLAL.S32 Q14, D1, D3 |
| |
| VLD1.32 {D4, D5}, [R0], R8 |
| VLD1.32 {D6, D7}, [R2], R9 |
| |
| VMLAL.S32 Q13, D6, D4 |
| VMLAL.S32 Q14, D7, D5 |
| |
| VLD1.32 {D8, D9}, [R0], R8 |
| VLD1.32 {D10, D11}, [R2], R9 |
| |
| VMLAL.S32 Q13, D10, D8 |
| VMLAL.S32 Q14, D11, D9 |
| |
| VLD1.32 {D12, D13}, [R0], R8 |
| VLD1.32 {D14, D15}, [R2], R9 |
| |
| VMLAL.S32 Q13, D12, D14 |
| VMLAL.S32 Q14, D13, D15 |
| |
| VLD1.32 {D16, D17}, [R0], R8 |
| VLD1.32 {D18, D19}, [R2], R9 |
| |
| VMLAL.S32 Q13, D16, D18 |
| VMLAL.S32 Q14, D17, D19 |
| |
| MOV R0, R10 |
| |
| |
| MOV R2, R11 |
| VLD1.32 {D0, D1}, [R1]! |
| MOV R10, R1 |
| VLD1.32 {D2, D3}, [R12]! |
| ADD R1, R1, #1008 |
| MOV R11, R12 |
| |
| VMLAL.S32 Q13, D0, D2 |
| VMLAL.S32 Q14, D1, D3 |
| VLD1.32 {D4, D5}, [R1], R8 |
| ADD R12, R12, #496 |
| |
| VLD1.32 {D6, D7}, [R12], R9 |
| |
| VMLAL.S32 Q13, D6, D4 |
| VMLAL.S32 Q14, D7, D5 |
| |
| VLD1.32 {D8, D9}, [R1], R8 |
| VLD1.32 {D10, D11}, [R12], R9 |
| |
| VMLAL.S32 Q13, D10, D8 |
| VMLAL.S32 Q14, D11, D9 |
| |
| VLD1.32 {D12, D13}, [R1], R8 |
| VLD1.32 {D14, D15}, [R12], R9 |
| |
| VMLAL.S32 Q13, D12, D14 |
| VMLAL.S32 Q14, D13, D15 |
| |
| VLD1.32 {D16, D17}, [R1], R8 |
| VLD1.32 {D18, D19}, [R12], R9 |
| |
| VMLAL.S32 Q13, D16, D18 |
| VMLAL.S32 Q14, D17, D19 |
| |
| VSHRN.S64 D26 , Q13, #31 |
| |
| VST1.32 D26[0], [R3], R5 |
| VST1.32 D26[1], [R3], R5 |
| |
| VSHRN.S64 D27 , Q14, #31 |
| |
| VST1.32 D27[0], [R3], R5 |
| VST1.32 D27[1], [R3], R5 |
| |
| SUB R6, R6, #8 |
| LOOP_1: |
| |
| VLD1.32 {D0, D1}, [R0]! |
| MOV R12, R11 |
| MOV R1, R10 |
| VLD1.32 {D2, D3}, [R2]! |
| MOV R10, R0 |
| |
| ADD R0, R0, #1008 |
| |
| MOV R11, R2 |
| ADD R2, R2, #496 |
| |
| |
| VMOV Q13, Q15 |
| VMOV Q14, Q15 |
| |
| VMLAL.S32 Q13, D0, D2 |
| VMLAL.S32 Q14, D1, D3 |
| |
| VLD1.32 {D4, D5}, [R0], R8 |
| VLD1.32 {D6, D7}, [R2], R9 |
| |
| VMLAL.S32 Q13, D6, D4 |
| VMLAL.S32 Q14, D7, D5 |
| |
| VLD1.32 {D8, D9}, [R0], R8 |
| VLD1.32 {D10, D11}, [R2], R9 |
| |
| VMLAL.S32 Q13, D10, D8 |
| VMLAL.S32 Q14, D11, D9 |
| |
| VLD1.32 {D12, D13}, [R0], R8 |
| VLD1.32 {D14, D15}, [R2], R9 |
| |
| VMLAL.S32 Q13, D12, D14 |
| VMLAL.S32 Q14, D13, D15 |
| |
| VLD1.32 {D16, D17}, [R0], R8 |
| VLD1.32 {D18, D19}, [R2], R9 |
| |
| VMLAL.S32 Q13, D16, D18 |
| VMLAL.S32 Q14, D17, D19 |
| |
| MOV R0, R10 |
| |
| |
| MOV R2, R11 |
| VLD1.32 {D0, D1}, [R1]! |
| MOV R10, R1 |
| VLD1.32 {D2, D3}, [R12]! |
| ADD R1, R1, #1008 |
| MOV R11, R12 |
| |
| VMLAL.S32 Q13, D0, D2 |
| VMLAL.S32 Q14, D1, D3 |
| VLD1.32 {D4, D5}, [R1], R8 |
| ADD R12, R12, #496 |
| |
| VLD1.32 {D6, D7}, [R12], R9 |
| |
| VMLAL.S32 Q13, D6, D4 |
| VMLAL.S32 Q14, D7, D5 |
| |
| VLD1.32 {D8, D9}, [R1], R8 |
| VLD1.32 {D10, D11}, [R12], R9 |
| |
| VMLAL.S32 Q13, D10, D8 |
| VMLAL.S32 Q14, D11, D9 |
| |
| VLD1.32 {D12, D13}, [R1], R8 |
| VLD1.32 {D14, D15}, [R12], R9 |
| |
| VMLAL.S32 Q13, D12, D14 |
| VMLAL.S32 Q14, D13, D15 |
| |
| VLD1.32 {D16, D17}, [R1], R8 |
| VLD1.32 {D18, D19}, [R12], R9 |
| |
| VMLAL.S32 Q13, D16, D18 |
| VMLAL.S32 Q14, D17, D19 |
| |
| VSHRN.S64 D26 , Q13, #31 |
| |
| VST1.32 D26[0], [R3], R5 |
| VST1.32 D26[1], [R3], R5 |
| |
| VSHRN.S64 D27 , Q14, #31 |
| |
| VST1.32 D27[0], [R3], R5 |
| VST1.32 D27[1], [R3], R5 |
| @@@ |
| VLD1.32 {D0, D1}, [R0]! |
| MOV R12, R11 |
| MOV R1, R10 |
| VLD1.32 {D2, D3}, [R2]! |
| MOV R10, R0 |
| |
| VMOV Q13, Q15 |
| VMLAL.S32 Q13, D0, D2 |
| VMOV Q14, Q15 |
| VMLAL.S32 Q14, D1, D3 |
| |
| ADD R0, R0, #1008 |
| |
| MOV R11, R2 |
| VLD1.32 {D4, D5}, [R0], R8 |
| ADD R2, R2, #496 |
| |
| |
| VLD1.32 {D6, D7}, [R2], R9 |
| |
| VMLAL.S32 Q13, D6, D4 |
| VMLAL.S32 Q14, D7, D5 |
| |
| VLD1.32 {D8, D9}, [R0], R8 |
| VLD1.32 {D10, D11}, [R2], R9 |
| |
| VMLAL.S32 Q13, D8, D10 |
| VMLAL.S32 Q14, D9, D11 |
| |
| VLD1.32 {D12, D13}, [R0], R8 |
| VLD1.32 {D14, D15}, [R2], R9 |
| |
| VMLAL.S32 Q13, D12, D14 |
| VMLAL.S32 Q14, D13, D15 |
| |
| VLD1.32 {D16, D17}, [R0], R8 |
| VLD1.32 {D18, D19}, [R2], R9 |
| |
| VMLAL.S32 Q13, D16, D18 |
| VMLAL.S32 Q14, D17, D19 |
| |
| MOV R0, R10 |
| |
| |
| MOV R2, R11 |
| VLD1.32 {D0, D1}, [R1]! |
| |
| MOV R10, R1 |
| VLD1.32 {D2, D3}, [R12]! |
| ADD R1, R1, #1008 |
| |
| VMLAL.S32 Q13, D0, D2 |
| VMLAL.S32 Q14, D1, D3 |
| |
| MOV R11, R12 |
| VLD1.32 {D4, D5}, [R1], R8 |
| ADD R12, R12, #496 |
| |
| |
| VLD1.32 {D6, D7}, [R12], R9 |
| |
| VMLAL.S32 Q13, D6, D4 |
| VMLAL.S32 Q14, D7, D5 |
| |
| VLD1.32 {D8, D9}, [R1], R8 |
| VLD1.32 {D10, D11}, [R12], R9 |
| |
| VMLAL.S32 Q13, D8, D10 |
| VMLAL.S32 Q14, D9, D11 |
| |
| VLD1.32 {D12, D13}, [R1], R8 |
| VLD1.32 {D14, D15}, [R12], R9 |
| |
| VMLAL.S32 Q13, D12, D14 |
| VMLAL.S32 Q14, D13, D15 |
| |
| VLD1.32 {D16, D17}, [R1], R8 |
| VLD1.32 {D18, D19}, [R12], R9 |
| |
| VMLAL.S32 Q13, D16, D18 |
| VMLAL.S32 Q14, D17, D19 |
| |
| VSHRN.S64 D26 , Q13, #31 |
| |
| VST1.32 D26[0], [R3], R5 |
| VST1.32 D26[1], [R3], R5 |
| |
| VSHRN.S64 D27 , Q14, #31 |
| |
| VST1.32 D27[0], [R3], R5 |
| VST1.32 D27[1], [R3], R5 |
| |
| SUBS R6, R6, #8 @1 |
| |
| BGT LOOP_1 |
| |
| VLD1.32 {D0, D1}, [R0]! |
| MOV R12, R11 |
| MOV R1, R10 |
| VLD1.32 {D2, D3}, [R2]! |
| MOV R10, R0 |
| |
| VMOV Q13, Q15 |
| VMLAL.S32 Q13, D0, D2 |
| VMOV Q14, Q15 |
| VMLAL.S32 Q14, D1, D3 |
| |
| ADD R0, R0, #1008 |
| |
| MOV R11, R2 |
| VLD1.32 {D4, D5}, [R0], R8 |
| ADD R2, R2, #496 |
| |
| |
| VLD1.32 {D6, D7}, [R2], R9 |
| |
| VMLAL.S32 Q13, D6, D4 |
| VMLAL.S32 Q14, D7, D5 |
| |
| VLD1.32 {D8, D9}, [R0], R8 |
| VLD1.32 {D10, D11}, [R2], R9 |
| |
| VMLAL.S32 Q13, D8, D10 |
| VMLAL.S32 Q14, D9, D11 |
| |
| VLD1.32 {D12, D13}, [R0], R8 |
| VLD1.32 {D14, D15}, [R2], R9 |
| |
| VMLAL.S32 Q13, D12, D14 |
| VMLAL.S32 Q14, D13, D15 |
| |
| VLD1.32 {D16, D17}, [R0], R8 |
| VLD1.32 {D18, D19}, [R2], R9 |
| |
| VMLAL.S32 Q13, D16, D18 |
| VMLAL.S32 Q14, D17, D19 |
| |
| MOV R0, R10 |
| |
| |
| MOV R2, R11 |
| VLD1.32 {D0, D1}, [R1]! |
| |
| MOV R10, R1 |
| VLD1.32 {D2, D3}, [R12]! |
| ADD R1, R1, #1008 |
| |
| VMLAL.S32 Q13, D0, D2 |
| VMLAL.S32 Q14, D1, D3 |
| |
| MOV R11, R12 |
| VLD1.32 {D4, D5}, [R1], R8 |
| ADD R12, R12, #496 |
| |
| |
| VLD1.32 {D6, D7}, [R12], R9 |
| |
| VMLAL.S32 Q13, D6, D4 |
| VMLAL.S32 Q14, D7, D5 |
| |
| VLD1.32 {D8, D9}, [R1], R8 |
| VLD1.32 {D10, D11}, [R12], R9 |
| |
| VMLAL.S32 Q13, D8, D10 |
| VMLAL.S32 Q14, D9, D11 |
| |
| VLD1.32 {D12, D13}, [R1], R8 |
| VLD1.32 {D14, D15}, [R12], R9 |
| |
| VMLAL.S32 Q13, D12, D14 |
| VMLAL.S32 Q14, D13, D15 |
| |
| VLD1.32 {D16, D17}, [R1], R8 |
| VLD1.32 {D18, D19}, [R12], R9 |
| |
| VMLAL.S32 Q13, D16, D18 |
| VMLAL.S32 Q14, D17, D19 |
| |
| VSHRN.S64 D26 , Q13, #31 |
| |
| VST1.32 D26[0], [R3], R5 |
| VST1.32 D26[1], [R3], R5 |
| |
| VSHRN.S64 D27, Q14, #31 |
| |
| VST1.32 D27[0], [R3], R5 |
| VST1.32 D27[1], [R3], R5 |
| |
| VPOP {D8 - D15} |
| LDMFD sp!, {R4-R12, R15} |
| @ ENDP |