blob: fca39c0fd657b644e6ee767ed7ff885adbf62145 [file] [log] [blame]
@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