411 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			411 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| @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
 | |
|       .type ixheaacd_esbr_qmfsyn64_winadd, %function
 | |
| 
 | |
| 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
 |