1278 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			1278 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| @/******************************************************************************
 | |
| @ *
 | |
| @ * Copyright (C) 2018 The Android Open Source Project
 | |
| @ *
 | |
| @ * Licensed under the Apache License, Version 2.0 (the "License");
 | |
| @ * you may not use this file except in compliance with the License.
 | |
| @ * You may obtain a copy of the License at:
 | |
| @ *
 | |
| @ * http://www.apache.org/licenses/LICENSE-2.0
 | |
| @ *
 | |
| @ * Unless required by applicable law or agreed to in writing, software
 | |
| @ * distributed under the License is distributed on an "AS IS" BASIS,
 | |
| @ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| @ * See the License for the specific language governing permissions and
 | |
| @ * limitations under the License.
 | |
| @ *
 | |
| @ *****************************************************************************
 | |
| @ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
 | |
| @*/
 | |
| 
 | |
| 
 | |
| .text
 | |
| .p2align 2
 | |
| .global ixheaacd_post_twid_overlap_add_armv7
 | |
| 
 | |
| ixheaacd_post_twid_overlap_add_armv7:
 | |
| 
 | |
|     STMFD           sp!, {R4-R12}
 | |
|     VPUSH           {d8 - d15}
 | |
| 
 | |
|     LDR             R4, [sp, #100]
 | |
|     LDR             R5, [sp, #104]
 | |
|     LDR             R6, [sp, #108]
 | |
| 
 | |
|     LSL             R9, R3, #2
 | |
|     ASR             R9, R9, #1
 | |
|     ADD             R6, R6, R9
 | |
|     SUB             R6, R6, #4
 | |
| 
 | |
|     MOVW            R8, #7500
 | |
|     ADD             R2, R2, R8
 | |
| 
 | |
| 
 | |
| 
 | |
|     VMOV.S16        D18, #50
 | |
|     RSB             R9, R5, #15
 | |
|     VMOV.S32        Q10, #0x00008000
 | |
|     VDUP.32         Q8, R5
 | |
|     SUB             R5, R5, #16
 | |
|     STR             R5, [sp, #116]
 | |
|     MOV             R8, #1
 | |
|     LSL             R8, R8, R9
 | |
|     STR             R8, [sp, #120]
 | |
| 
 | |
| 
 | |
| ARM_PROLOGUE:
 | |
| 
 | |
| 
 | |
|     LDR             R8, [R1], #4
 | |
|     LDR             R9, [R1], #4
 | |
| 
 | |
|     LDR             R10, [R2], #4
 | |
| 
 | |
|     SMULWT          R11, R8, R10
 | |
|     SMULWB          R12, R9, R10
 | |
|     SMULWB          R5, R8, R10
 | |
|     SMLAWT          R7, R9, R10, R5
 | |
|     SUB             R8, R12, R11
 | |
|     MVN             R5, R7
 | |
|     ADD             R5, R5, #1
 | |
| 
 | |
|     MOV             R9, #50
 | |
|     MOV             R12, #-50
 | |
|     SMULWB          R10, R5, R9
 | |
|     SMULWB          R11, R8, R12
 | |
| 
 | |
|     ADD             R8, R8, R10
 | |
|     ADD             R5, R5, R11
 | |
| 
 | |
|     LDR             R11, [sp, #104]
 | |
|     LDR             R10, [R6], #-32
 | |
| 
 | |
| 
 | |
|     SMULWB          R7, R8, R10
 | |
|     MVN             R8, R8
 | |
|     ADD             R8, R8, #1
 | |
|     SMULWT          R12, R8, R10
 | |
| 
 | |
|     CMP             R11, #0
 | |
|     BLT             NEXT
 | |
| 
 | |
|     RSBS            R9, R11, #16
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     LDR             R8, [sp, #120]
 | |
|     QADD            R5, R5, R8
 | |
|     ASR             R5, R5, R9
 | |
| 
 | |
|     RSBS            R9, R11, #31
 | |
|     MOVS            R8, R7, ASR R9
 | |
|     CMNLT           R8, #1
 | |
|     MOVLT           R7, #0x80000000
 | |
|     MVNGT           R7, #0x80000000
 | |
|     MOVEQ           R7, R7, LSL R11
 | |
| 
 | |
|     RSBS            R9, R11, #31
 | |
|     MOVS            R8, R12, ASR R9
 | |
|     CMNLT           R8, #1
 | |
|     MOVLT           R12, #0x80000000
 | |
|     MVNGT           R12, #0x80000000
 | |
|     MOVEQ           R12, R12, LSL R11
 | |
| 
 | |
|     B               NEXT1
 | |
| NEXT:
 | |
|     MVN             R11, R11
 | |
|     ADD             R11, R11, #1
 | |
|     ASR             R5, R5, R11
 | |
|     MOV             R8, #0x8000
 | |
|     QADD            R5, R5, R8
 | |
|     ASR             R5, R5, #16
 | |
|     ASR             R7, R7, R11
 | |
|     ASR             R12, R12, R11
 | |
| 
 | |
| NEXT1:
 | |
|     LDR             R9, [R4]
 | |
|     MOV             R8, #0x8000
 | |
| 
 | |
|     STR             R5, [R4], #4
 | |
| 
 | |
| 
 | |
|     UXTH            R5, R10, ROR #16
 | |
|     UXTH            R10, R10
 | |
| 
 | |
| 
 | |
|     VDUP.32         D0, R9
 | |
|     VDUP.32         D2, R10
 | |
|     VDUP.32         D3, R5
 | |
|     VZIP.32         D2, D3
 | |
|     VMULL.S32       Q0, D2, D0
 | |
|     VQMOVN.S64      D8, Q0
 | |
| 
 | |
| 
 | |
|     VDUP.32         D0, R12
 | |
|     VDUP.32         D1, R7
 | |
| 
 | |
|     VZIP.32         D0, D1
 | |
|     VQSUB.S32       D8, D0, D8
 | |
| 
 | |
| 
 | |
|     VQSHL.S32       D8, D8, #2
 | |
|     VDUP.32         D0, R8
 | |
|     VQADD.S32       D8, D8, D0
 | |
|     VSHR.S32        D8, D8, #16
 | |
| 
 | |
| 
 | |
| 
 | |
|     LDR             R7, [sp, #112]
 | |
|     LSL             R10, R7, #1
 | |
| 
 | |
|     ASR             R5, R3, #1
 | |
|     SMULBB          R5, R10, R5
 | |
|     ADD             R5, R5, R0
 | |
|     SUB             R0, R5, R10
 | |
|     MVN             R9, R10
 | |
|     ADD             R9, R9, #1
 | |
| 
 | |
|     VST1.16         D8[2], [R0], R9
 | |
|     VST1.16         D8[0], [R5], R10
 | |
| 
 | |
| 
 | |
|     MOV             R8, R1
 | |
|     LSL             R12, R3, #2
 | |
| 
 | |
|     ADD             R1, R1, R12
 | |
| 
 | |
|     SUB             R1, R1, #40
 | |
| 
 | |
|     MOV             R12, #-32
 | |
| 
 | |
| 
 | |
| 
 | |
| PROLOGUE_NEON:
 | |
| 
 | |
|     ASR             R3, R3, #2
 | |
|     SUB             R3, R3, #4
 | |
|     ASR             R3, R3, #2
 | |
|     SUB             R3, R3, #2
 | |
| 
 | |
|     VLD2.32         {Q0, Q1}, [R1], R12
 | |
|     VUZP.16         D0, D1
 | |
|     VUZP.16         D2, D3
 | |
| 
 | |
|     VREV64.16       Q0, Q0
 | |
|     VREV64.16       Q1, Q1
 | |
|     VLD2.16         {D8, D9}, [R2]!
 | |
| 
 | |
|     VLD2.32         {Q2, Q3}, [R8]!
 | |
|     VMULL.U16       Q15, D0, D9
 | |
| 
 | |
|     VUZP.16         D4, D5
 | |
|     VMULL.U16       Q14, D2, D8
 | |
| 
 | |
|     VUZP.16         D6, D7
 | |
|     VMULL.U16       Q13, D0, D8
 | |
| 
 | |
| 
 | |
|     VMULL.U16       Q12, D2, D9
 | |
| 
 | |
|     VLD2.32         {Q5, Q6}, [R6], R12
 | |
|     VSHR.U32        Q15, Q15, #16
 | |
| 
 | |
|     VUZP.16         D10, D11
 | |
|     VSHR.U32        Q14, Q14, #16
 | |
| 
 | |
|     VUZP.16         D12, D13
 | |
|     VMLAL.S16       Q15, D1, D9
 | |
| 
 | |
|     VREV64.16       Q5, Q5
 | |
|     VMLAL.S16       Q14, D3, D8
 | |
| 
 | |
|     VREV64.16       Q6, Q6
 | |
|     VSHR.U32        Q13, Q13, #16
 | |
| 
 | |
| 
 | |
|     VSHR.U32        Q12, Q12, #16
 | |
| 
 | |
|     VMLAL.S16       Q13, D1, D8
 | |
|     VMLAL.S16       Q12, D3, D9
 | |
| 
 | |
| 
 | |
| 
 | |
|     VADD.I32        Q15, Q15, Q14
 | |
|     VNEG.S32        Q15, Q15
 | |
| 
 | |
|     VMULL.U16       Q11, D4, D8
 | |
| 
 | |
|     VSUB.I32        Q14, Q12, Q13
 | |
| 
 | |
| 
 | |
|     VMOV            Q13, Q15
 | |
|     VMOV            Q12, Q14
 | |
| 
 | |
|     VUZP.16         D24, D25
 | |
| 
 | |
| 
 | |
|     VUZP.16         D26, D27
 | |
|     VMULL.U16       Q1, D24, D18
 | |
| 
 | |
|     VMULL.U16       Q0, D26, D18
 | |
| 
 | |
|     VSHR.U32        Q11, Q11, #16
 | |
|     VMLAL.S16       Q11, D5, D8
 | |
| 
 | |
|     VSHR.U32        Q1, Q1, #16
 | |
|     VSHR.U32        Q0, Q0, #16
 | |
|     VMLAL.S16       Q1, D25, D18
 | |
|     VMLAL.S16       Q0, D27, D18
 | |
| 
 | |
|     VMULL.U16       Q12, D4, D9
 | |
|     VMULL.U16       Q13, D6, D8
 | |
| 
 | |
|     VNEG.S32        Q1, Q1
 | |
|     VADD.I32        Q14, Q14, Q0
 | |
|     VADD.I32        Q15, Q15, Q1
 | |
| 
 | |
|     VMULL.U16       Q0, D6, D9
 | |
|     VSHR.S32        Q12, Q12, #16
 | |
|     VMLAL.S16       Q12, D5, D9
 | |
|     VSHR.S32        Q13, Q13, #16
 | |
|     VSHR.S32        Q0, Q0, #16
 | |
|     VMLAL.S16       Q13, D7, D8
 | |
|     VMLAL.S16       Q0, D7, D9
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     VADD.I32        Q11, Q11, Q0
 | |
|     VNEG.S32        Q11, Q11
 | |
|     VSUB.I32        Q12, Q13, Q12
 | |
| 
 | |
| 
 | |
| 
 | |
|     LDR             R11, [sp, #120]
 | |
|     VDUP.S32        Q7, R11
 | |
|     VQADD.S32       Q14, Q14, Q7
 | |
|     LDR             R11, [sp, #116]
 | |
|     VDUP.S32        Q0, R11
 | |
|     VQSHL.S32       Q14, Q14, Q0
 | |
| 
 | |
|     VMOV            Q0, Q11
 | |
|     VMOV            Q7, Q12
 | |
| 
 | |
| 
 | |
|     VUZP.16         D24, D25
 | |
| 
 | |
|     VUZP.16         D22, D23
 | |
|     VMULL.U16       Q4, D24, D18
 | |
|     VMULL.U16       Q13, D22, D18
 | |
| 
 | |
|     VNEG.S32        Q1, Q15
 | |
|     VUZP.16         D30, D31
 | |
| 
 | |
|     VUZP.16         D2, D3
 | |
|     VMULL.U16       Q2, D30, D12
 | |
| 
 | |
|     VMULL.U16       Q3, D2, D13
 | |
| 
 | |
|     VSHR.U32        Q4, Q4, #16
 | |
|     VSHR.U32        Q13, Q13, #16
 | |
| 
 | |
|     VMLAL.S16       Q4, D25, D18
 | |
|     VMLAL.S16       Q13, D23, D18
 | |
| 
 | |
|     VSHR.U32        Q2, Q2, #16
 | |
|     VSHR.U32        Q3, Q3, #16
 | |
| 
 | |
|     VMLAL.S16       Q2, D31, D12
 | |
|     VMLAL.S16       Q3, D3, D13
 | |
| 
 | |
|     VNEG.S32        Q4, Q4
 | |
|     VADD.I32        Q7, Q7, Q13
 | |
|     VADD.I32        Q0, Q0, Q4
 | |
| 
 | |
|     LDR             R11, [sp, #120]
 | |
|     VDUP.S32        Q4, R11
 | |
|     VQADD.S32       Q0, Q0, Q4
 | |
|     LDR             R11, [sp, #116]
 | |
|     VDUP.S32        Q13, R11
 | |
|     VQSHL.S32       Q0, Q0, Q13
 | |
| 
 | |
|     VMOV            Q13, Q14
 | |
| 
 | |
|     VLD2.32         {Q14, Q15}, [R4]
 | |
| 
 | |
|     VZIP.32         Q13, Q0
 | |
|     VST1.32         {Q13}, [R4]!
 | |
|     VST1.32         {Q0}, [R4]!
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D13, D1
 | |
| 
 | |
| 
 | |
|     VMULL.S32       Q13, D28, D0
 | |
|     VQMOVN.S64      D8, Q13
 | |
|     VMULL.S32       Q13, D29, D1
 | |
|     VQMOVN.S64      D9, Q13
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D12, D1
 | |
| 
 | |
| 
 | |
|     VMULL.S32       Q12, D28, D0
 | |
|     VQMOVN.S64      D26, Q12
 | |
|     VMULL.S32       Q12, D29, D1
 | |
|     VQMOVN.S64      D27, Q12
 | |
| 
 | |
|     VQSHL.S32       Q2, Q2, Q8
 | |
|     VQSHL.S32       Q3, Q3, Q8
 | |
| 
 | |
|     VQSUB.S32       Q2, Q2, Q4
 | |
|     VQSUB.S32       Q3, Q3, Q13
 | |
| 
 | |
|     VNEG.S32        Q13, Q7
 | |
|     VUZP.16         D14, D15
 | |
|     VUZP.16         D26, D27
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D10, D1
 | |
|     VMULL.S32       Q11, D30, D0
 | |
|     VQMOVN.S64      D24, Q11
 | |
|     VMULL.S32       Q11, D31, D1
 | |
|     VQMOVN.S64      D25, Q11
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D11, D1
 | |
|     VMULL.S32       Q4, D30, D0
 | |
|     VQMOVN.S64      D22, Q4
 | |
|     VMULL.S32       Q4, D31, D1
 | |
|     VQMOVN.S64      D23, Q4
 | |
|     VMULL.U16       Q4, D26, D11
 | |
|     VMULL.U16       Q15, D14, D10
 | |
| 
 | |
|     VLD2.32         {Q0, Q1}, [R1], R12
 | |
| 
 | |
|     VUZP.16         D0, D1
 | |
| 
 | |
|     VUZP.16         D2, D3
 | |
|     VSHR.U32        Q4, Q4, #16
 | |
| 
 | |
|     VREV64.16       Q0, Q0
 | |
|     VSHR.U32        Q15, Q15, #16
 | |
| 
 | |
|     VREV64.16       Q1, Q1
 | |
|     VMLAL.S16       Q4, D27, D11
 | |
| 
 | |
|     VMLAL.S16       Q15, D15, D10
 | |
| 
 | |
|     VLD2.32         {Q5, Q6}, [R6], R12
 | |
|     VQSHL.S32       Q2, Q2, #2
 | |
| 
 | |
|     VUZP.16         D10, D11
 | |
|     VQSHL.S32       Q3, Q3, #2
 | |
| 
 | |
|     VUZP.16         D12, D13
 | |
|     VQADD.S32       Q7, Q2, Q10
 | |
| 
 | |
|     VREV64.16       Q5, Q5
 | |
|     VQADD.S32       Q3, Q3, Q10
 | |
| 
 | |
|     VREV64.16       Q6, Q6
 | |
|     VSHR.S32        Q7, Q7, #16
 | |
| 
 | |
|     VUZP.16         D14, D15
 | |
|     VSHR.S32        Q3, Q3, #16
 | |
| 
 | |
|     VUZP.16         D6, D7
 | |
| 
 | |
|     VMOV            D15, D6
 | |
|     VQSHL.S32       Q4, Q4, Q8
 | |
| 
 | |
|     VLD2.32         {Q2, Q3}, [R8]!
 | |
|     VQSHL.S32       Q15, Q15, Q8
 | |
| 
 | |
|     VUZP.16         D4, D5
 | |
|     VQSUB.S32       Q4, Q4, Q12
 | |
| 
 | |
|     VUZP.16         D6, D7
 | |
|     VQSUB.S32       Q11, Q15, Q11
 | |
| 
 | |
|     VQSHL.S32       Q15, Q4, #2
 | |
| 
 | |
|     VLD2.16         {D8, D9}, [R2]!
 | |
|     VQSHL.S32       Q11, Q11, #2
 | |
| 
 | |
|     VQADD.S32       Q15, Q15, Q10
 | |
|     VQADD.S32       Q11, Q11, Q10
 | |
| 
 | |
|     VSHR.S32        Q15, Q15, #16
 | |
| 
 | |
|     VUZP.16         D30, D31
 | |
|     VSHR.S32        Q11, Q11, #16
 | |
| 
 | |
| 
 | |
|     VUZP.16         D22, D23
 | |
|     VMOV            D23, D30
 | |
| 
 | |
| CORE_LOOP_PTO:
 | |
|     VST1.16         D14[0], [R0, : 16], R9
 | |
|     VMULL.U16       Q15, D0, D9
 | |
| 
 | |
|     VST1.16         D22[0], [R0, : 16], R9
 | |
|     VMULL.U16       Q14, D2, D8
 | |
| 
 | |
|     VST1.16         D14[1], [R0, : 16], R9
 | |
|     VMULL.U16       Q13, D0, D8
 | |
| 
 | |
|     VST1.16         D22[1], [R0, : 16], R9
 | |
|     VMULL.U16       Q12, D2, D9
 | |
| 
 | |
|     VST1.16         D14[2], [R0, : 16], R9
 | |
|     VSHR.U32        Q15, Q15, #16
 | |
| 
 | |
|     VST1.16         D22[2], [R0, : 16], R9
 | |
|     VSHR.U32        Q14, Q14, #16
 | |
| 
 | |
|     VST1.16         D14[3], [R0, : 16], R9
 | |
|     VMLAL.S16       Q15, D1, D9
 | |
| 
 | |
|     VST1.16         D22[3], [R0, : 16], R9
 | |
|     VMLAL.S16       Q14, D3, D8
 | |
| 
 | |
|     VST1.16         D15[0], [R5, : 16], R10
 | |
|     VSHR.U32        Q13, Q13, #16
 | |
| 
 | |
|     VST1.16         D23[0], [R5, : 16], R10
 | |
|     VSHR.U32        Q12, Q12, #16
 | |
| 
 | |
|     VST1.16         D15[1], [R5, : 16], R10
 | |
|     VMLAL.S16       Q13, D1, D8
 | |
| 
 | |
|     VST1.16         D23[1], [R5, : 16], R10
 | |
|     VMLAL.S16       Q12, D3, D9
 | |
| 
 | |
|     VST1.16         D15[2], [R5, : 16], R10
 | |
|     VADD.I32        Q15, Q15, Q14
 | |
| 
 | |
|     VST1.16         D23[2], [R5, : 16], R10
 | |
|     VNEG.S32        Q15, Q15
 | |
| 
 | |
|     VST1.16         D15[3], [R5, : 16], R10
 | |
| 
 | |
|     VST1.16         D23[3], [R5, : 16], R10
 | |
|     VSUB.I32        Q14, Q12, Q13
 | |
| 
 | |
| 
 | |
|     VMOV            Q13, Q15
 | |
|     VMULL.U16       Q11, D4, D8
 | |
| 
 | |
|     VMOV            Q12, Q14
 | |
| 
 | |
|     VUZP.16         D24, D25
 | |
| 
 | |
| 
 | |
|     VUZP.16         D26, D27
 | |
|     VMULL.U16       Q1, D24, D18
 | |
|     VMULL.U16       Q0, D26, D18
 | |
| 
 | |
|     VSHR.U32        Q11, Q11, #16
 | |
|     VMLAL.S16       Q11, D5, D8
 | |
| 
 | |
|     VSHR.U32        Q1, Q1, #16
 | |
|     VSHR.U32        Q0, Q0, #16
 | |
|     VMLAL.S16       Q1, D25, D18
 | |
|     VMLAL.S16       Q0, D27, D18
 | |
| 
 | |
|     VMULL.U16       Q12, D4, D9
 | |
|     VMULL.U16       Q13, D6, D8
 | |
| 
 | |
|     VNEG.S32        Q1, Q1
 | |
|     VADD.I32        Q14, Q14, Q0
 | |
|     VADD.I32        Q15, Q15, Q1
 | |
| 
 | |
|     VMULL.U16       Q0, D6, D9
 | |
|     VSHR.S32        Q12, Q12, #16
 | |
|     VMLAL.S16       Q12, D5, D9
 | |
|     VSHR.S32        Q13, Q13, #16
 | |
|     VSHR.S32        Q0, Q0, #16
 | |
|     VMLAL.S16       Q13, D7, D8
 | |
|     VMLAL.S16       Q0, D7, D9
 | |
| 
 | |
| 
 | |
| 
 | |
|     VADD.I32        Q11, Q11, Q0
 | |
| 
 | |
|     VNEG.S32        Q11, Q11
 | |
|     VSUB.I32        Q12, Q13, Q12
 | |
| 
 | |
| 
 | |
|     LDR             R11, [sp, #120]
 | |
|     VDUP.S32        Q7, R11
 | |
|     VQADD.S32       Q14, Q14, Q7
 | |
|     LDR             R11, [sp, #116]
 | |
|     VDUP.S32        Q0, R11
 | |
|     VQSHL.S32       Q14, Q14, Q0
 | |
| 
 | |
| 
 | |
|     VMOV            Q0, Q11
 | |
|     VMOV            Q7, Q12
 | |
| 
 | |
|     VUZP.16         D24, D25
 | |
| 
 | |
|     VUZP.16         D22, D23
 | |
|     VMULL.U16       Q4, D24, D18
 | |
|     VMULL.U16       Q13, D22, D18
 | |
| 
 | |
|     VNEG.S32        Q1, Q15
 | |
| 
 | |
|     VUZP.16         D30, D31
 | |
| 
 | |
|     VUZP.16         D2, D3
 | |
|     VMULL.U16       Q2, D30, D12
 | |
|     VMULL.U16       Q3, D2, D13
 | |
| 
 | |
|     VSHR.U32        Q4, Q4, #16
 | |
|     VSHR.U32        Q13, Q13, #16
 | |
| 
 | |
|     VMLAL.S16       Q4, D25, D18
 | |
|     VMLAL.S16       Q13, D23, D18
 | |
| 
 | |
|     VSHR.U32        Q2, Q2, #16
 | |
|     VSHR.U32        Q3, Q3, #16
 | |
| 
 | |
|     VMLAL.S16       Q2, D31, D12
 | |
|     VMLAL.S16       Q3, D3, D13
 | |
| 
 | |
|     VNEG.S32        Q4, Q4
 | |
|     VADD.I32        Q7, Q7, Q13
 | |
|     VADD.I32        Q0, Q0, Q4
 | |
| 
 | |
| 
 | |
| 
 | |
|     LDR             R11, [sp, #120]
 | |
|     VDUP.S32        Q4, R11
 | |
|     VQADD.S32       Q0, Q0, Q4
 | |
|     LDR             R11, [sp, #116]
 | |
|     VDUP.S32        Q13, R11
 | |
|     VQSHL.S32       Q0, Q0, Q13
 | |
|     VMOV            Q13, Q14
 | |
| 
 | |
|     VLD2.32         {Q14, Q15}, [R4]
 | |
| 
 | |
|     VZIP.32         Q13, Q0
 | |
|     VST1.32         {Q13}, [R4]!
 | |
|     VST1.32         {Q0}, [R4]!
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D13, D1
 | |
| 
 | |
| 
 | |
|     VMULL.S32       Q13, D28, D0
 | |
|     VQMOVN.S64      D8, Q13
 | |
|     VMULL.S32       Q13, D29, D1
 | |
|     VQMOVN.S64      D9, Q13
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D12, D1
 | |
| 
 | |
| 
 | |
|     VMULL.S32       Q12, D28, D0
 | |
|     VQMOVN.S64      D26, Q12
 | |
|     VMULL.S32       Q12, D29, D1
 | |
|     VQMOVN.S64      D27, Q12
 | |
| 
 | |
|     VQSHL.S32       Q2, Q2, Q8
 | |
|     VQSHL.S32       Q3, Q3, Q8
 | |
| 
 | |
| 
 | |
| 
 | |
|     VQSUB.S32       Q2, Q2, Q4
 | |
|     VQSUB.S32       Q3, Q3, Q13
 | |
| 
 | |
|     VNEG.S32        Q13, Q7
 | |
|     VUZP.16         D26, D27
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D10, D1
 | |
|     VMULL.S32       Q11, D30, D0
 | |
|     VQMOVN.S64      D24, Q11
 | |
|     VMULL.S32       Q11, D31, D1
 | |
|     VQMOVN.S64      D25, Q11
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D11, D1
 | |
| 
 | |
|     VMULL.S32       Q4, D30, D0
 | |
|     VQMOVN.S64      D22, Q4
 | |
|     VMULL.S32       Q4, D31, D1
 | |
|     VQMOVN.S64      D23, Q4
 | |
| 
 | |
| 
 | |
|     VUZP.16         D14, D15
 | |
|     VMULL.U16       Q4, D26, D11
 | |
|     VMULL.U16       Q15, D14, D10
 | |
| 
 | |
| 
 | |
|     VLD2.32         {Q0, Q1}, [R1], R12
 | |
| 
 | |
|     VUZP.16         D0, D1
 | |
| 
 | |
|     VUZP.16         D2, D3
 | |
|     VSHR.U32        Q4, Q4, #16
 | |
| 
 | |
|     VREV64.16       Q0, Q0
 | |
|     VSHR.U32        Q15, Q15, #16
 | |
| 
 | |
|     VREV64.16       Q1, Q1
 | |
|     VMLAL.S16       Q4, D27, D11
 | |
| 
 | |
|     VMLAL.S16       Q15, D15, D10
 | |
| 
 | |
|     VLD2.32         {Q5, Q6}, [R6], R12
 | |
|     VQSHL.S32       Q2, Q2, #2
 | |
| 
 | |
|     VUZP.16         D10, D11
 | |
|     VQSHL.S32       Q3, Q3, #2
 | |
| 
 | |
|     VUZP.16         D12, D13
 | |
|     VQADD.S32       Q7, Q2, Q10
 | |
| 
 | |
|     VREV64.16       Q5, Q5
 | |
|     VQADD.S32       Q3, Q3, Q10
 | |
| 
 | |
|     VREV64.16       Q6, Q6
 | |
|     VSHR.S32        Q7, Q7, #16
 | |
| 
 | |
|     VUZP.16         D14, D15
 | |
|     VSHR.S32        Q3, Q3, #16
 | |
| 
 | |
|     VUZP.16         D6, D7
 | |
| 
 | |
|     VMOV            D15, D6
 | |
|     VQSHL.S32       Q4, Q4, Q8
 | |
| 
 | |
|     VLD2.32         {Q2, Q3}, [R8]!
 | |
|     VQSHL.S32       Q15, Q15, Q8
 | |
| 
 | |
|     VUZP.16         D4, D5
 | |
|     VQSUB.S32       Q4, Q4, Q12
 | |
| 
 | |
|     VUZP.16         D6, D7
 | |
|     VQSUB.S32       Q11, Q15, Q11
 | |
| 
 | |
|     VQSHL.S32       Q15, Q4, #2
 | |
| 
 | |
|     VLD2.16         {D8, D9}, [R2]!
 | |
|     VQSHL.S32       Q11, Q11, #2
 | |
| 
 | |
|     VQADD.S32       Q15, Q15, Q10
 | |
|     VQADD.S32       Q11, Q11, Q10
 | |
| 
 | |
|     VSHR.S32        Q15, Q15, #16
 | |
| 
 | |
|     VUZP.16         D30, D31
 | |
|     VSHR.S32        Q11, Q11, #16
 | |
| 
 | |
| 
 | |
|     VUZP.16         D22, D23
 | |
|     VMOV            D23, D30
 | |
| 
 | |
|     SUBS            R3, R3, #1
 | |
|     BNE             CORE_LOOP_PTO
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| EPILOGUE:
 | |
| 
 | |
|     VST1.16         D14[0], [R0], R9
 | |
|     VMULL.U16       Q15, D0, D9
 | |
| 
 | |
|     VST1.16         D22[0], [R0], R9
 | |
|     VMULL.U16       Q14, D2, D8
 | |
| 
 | |
|     VST1.16         D14[1], [R0], R9
 | |
|     VMULL.U16       Q13, D0, D8
 | |
| 
 | |
|     VST1.16         D22[1], [R0], R9
 | |
|     VMULL.U16       Q12, D2, D9
 | |
| 
 | |
|     VST1.16         D14[2], [R0], R9
 | |
|     VSHR.U32        Q15, Q15, #16
 | |
| 
 | |
|     VST1.16         D22[2], [R0], R9
 | |
|     VSHR.U32        Q14, Q14, #16
 | |
| 
 | |
|     VST1.16         D14[3], [R0], R9
 | |
|     VMLAL.S16       Q15, D1, D9
 | |
| 
 | |
|     VST1.16         D22[3], [R0], R9
 | |
|     VMLAL.S16       Q14, D3, D8
 | |
| 
 | |
|     VST1.16         D15[0], [R5], R10
 | |
|     VSHR.U32        Q13, Q13, #16
 | |
| 
 | |
|     VST1.16         D23[0], [R5], R10
 | |
|     VSHR.U32        Q12, Q12, #16
 | |
| 
 | |
|     VST1.16         D15[1], [R5], R10
 | |
|     VMLAL.S16       Q13, D1, D8
 | |
| 
 | |
|     VST1.16         D23[1], [R5], R10
 | |
|     VMLAL.S16       Q12, D3, D9
 | |
| 
 | |
|     VST1.16         D15[2], [R5], R10
 | |
|     VADD.I32        Q15, Q15, Q14
 | |
| 
 | |
|     VST1.16         D23[2], [R5], R10
 | |
|     VNEG.S32        Q15, Q15
 | |
| 
 | |
|     VST1.16         D15[3], [R5], R10
 | |
| 
 | |
| 
 | |
|     VST1.16         D23[3], [R5], R10
 | |
|     VSUB.I32        Q14, Q12, Q13
 | |
| 
 | |
| 
 | |
|     VMULL.U16       Q11, D4, D8
 | |
|     VMOV            Q13, Q15
 | |
|     VMOV            Q12, Q14
 | |
| 
 | |
|     VMOV            Q13, Q15
 | |
|     VMOV            Q12, Q14
 | |
| 
 | |
|     VUZP.16         D26, D27
 | |
|     VUZP.16         D24, D25
 | |
| 
 | |
| 
 | |
|     VMULL.U16       Q1, D24, D18
 | |
|     VMULL.U16       Q0, D26, D18
 | |
| 
 | |
|     VSHR.U32        Q11, Q11, #16
 | |
|     VMLAL.S16       Q11, D5, D8
 | |
| 
 | |
|     VSHR.U32        Q1, Q1, #16
 | |
|     VSHR.U32        Q0, Q0, #16
 | |
|     VMLAL.S16       Q1, D25, D18
 | |
|     VMLAL.S16       Q0, D27, D18
 | |
| 
 | |
|     VMULL.U16       Q12, D4, D9
 | |
|     VMULL.U16       Q13, D6, D8
 | |
| 
 | |
|     VNEG.S32        Q1, Q1
 | |
|     VADD.I32        Q14, Q14, Q0
 | |
|     VADD.I32        Q15, Q15, Q1
 | |
| 
 | |
|     VMULL.U16       Q0, D6, D9
 | |
|     VSHR.S32        Q12, Q12, #16
 | |
|     VMLAL.S16       Q12, D5, D9
 | |
|     VSHR.S32        Q13, Q13, #16
 | |
|     VSHR.S32        Q0, Q0, #16
 | |
|     VMLAL.S16       Q13, D7, D8
 | |
|     VMLAL.S16       Q0, D7, D9
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     VADD.I32        Q11, Q11, Q0
 | |
|     VNEG.S32        Q11, Q11
 | |
|     VSUB.I32        Q12, Q13, Q12
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     LDR             R11, [sp, #120]
 | |
|     VDUP.S32        Q7, R11
 | |
|     VQADD.S32       Q14, Q14, Q7
 | |
|     LDR             R11, [sp, #116]
 | |
|     VDUP.S32        Q0, R11
 | |
|     VQSHL.S32       Q14, Q14, Q0
 | |
| 
 | |
| 
 | |
|     VMOV            Q0, Q11
 | |
|     VMOV            Q7, Q12
 | |
| 
 | |
| 
 | |
|     VUZP.16         D22, D23
 | |
|     VUZP.16         D24, D25
 | |
| 
 | |
|     VMULL.U16       Q4, D24, D18
 | |
|     VMULL.U16       Q13, D22, D18
 | |
| 
 | |
|     VNEG.S32        Q1, Q15
 | |
|     VUZP.16         D30, D31
 | |
|     VUZP.16         D2, D3
 | |
| 
 | |
|     VMULL.U16       Q2, D30, D12
 | |
|     VMULL.U16       Q3, D2, D13
 | |
| 
 | |
|     VSHR.U32        Q4, Q4, #16
 | |
|     VSHR.U32        Q13, Q13, #16
 | |
| 
 | |
|     VMLAL.S16       Q4, D25, D18
 | |
|     VMLAL.S16       Q13, D23, D18
 | |
| 
 | |
|     VSHR.U32        Q2, Q2, #16
 | |
|     VSHR.U32        Q3, Q3, #16
 | |
| 
 | |
|     VMLAL.S16       Q2, D31, D12
 | |
|     VMLAL.S16       Q3, D3, D13
 | |
| 
 | |
|     VNEG.S32        Q4, Q4
 | |
|     VADD.I32        Q7, Q7, Q13
 | |
|     VADD.I32        Q0, Q0, Q4
 | |
| 
 | |
|     LDR             R11, [sp, #120]
 | |
|     VDUP.S32        Q4, R11
 | |
|     VQADD.S32       Q0, Q0, Q4
 | |
|     LDR             R11, [sp, #116]
 | |
|     VDUP.S32        Q13, R11
 | |
|     VQSHL.S32       Q0, Q0, Q13
 | |
| 
 | |
| 
 | |
|     VMOV            Q13, Q14
 | |
| 
 | |
|     VLD2.32         {Q14, Q15}, [R4]
 | |
|     VZIP.32         Q13, Q0
 | |
|     VST1.32         {Q13}, [R4]!
 | |
|     VST1.32         {Q0}, [R4]!
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D13, D1
 | |
| 
 | |
|     VMULL.S32       Q13, D28, D0
 | |
|     VQMOVN.S64      D8, Q13
 | |
|     VMULL.S32       Q13, D29, D1
 | |
|     VQMOVN.S64      D9, Q13
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D12, D1
 | |
| 
 | |
|     VMULL.S32       Q12, D28, D0
 | |
|     VQMOVN.S64      D26, Q12
 | |
|     VMULL.S32       Q12, D29, D1
 | |
|     VQMOVN.S64      D27, Q12
 | |
| 
 | |
|     VQSHL.S32       Q2, Q2, Q8
 | |
|     VQSHL.S32       Q3, Q3, Q8
 | |
| 
 | |
|     VQSUB.S32       Q2, Q2, Q4
 | |
|     VQSUB.S32       Q3, Q3, Q13
 | |
| 
 | |
|     VNEG.S32        Q13, Q7
 | |
|     VUZP.16         D14, D15
 | |
|     VUZP.16         D26, D27
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D10, D1
 | |
| 
 | |
| 
 | |
|     VMULL.S32       Q11, D30, D0
 | |
|     VQMOVN.S64      D24, Q11
 | |
|     VMULL.S32       Q11, D31, D1
 | |
|     VQMOVN.S64      D25, Q11
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D11, D1
 | |
| 
 | |
|     VMULL.S32       Q4, D30, D0
 | |
|     VQMOVN.S64      D22, Q4
 | |
|     VMULL.S32       Q4, D31, D1
 | |
|     VQMOVN.S64      D23, Q4
 | |
| 
 | |
| 
 | |
|     VMULL.U16       Q4, D26, D11
 | |
|     VMULL.U16       Q15, D14, D10
 | |
| 
 | |
|     VSHR.U32        Q4, Q4, #16
 | |
| 
 | |
|     VSHR.U32        Q15, Q15, #16
 | |
| 
 | |
|     VMLAL.S16       Q4, D27, D11
 | |
| 
 | |
|     VMLAL.S16       Q15, D15, D10
 | |
| 
 | |
|     VQSHL.S32       Q2, Q2, #2
 | |
| 
 | |
|     VQSHL.S32       Q3, Q3, #2
 | |
| 
 | |
|     VQADD.S32       Q7, Q2, Q10
 | |
| 
 | |
|     VQADD.S32       Q3, Q3, Q10
 | |
| 
 | |
|     VSHR.S32        Q7, Q7, #16
 | |
| 
 | |
|     VUZP.16         D14, D15
 | |
|     VSHR.S32        Q3, Q3, #16
 | |
| 
 | |
|     VUZP.16         D6, D7
 | |
| 
 | |
|     VMOV            D15, D6
 | |
|     VQSHL.S32       Q4, Q4, Q8
 | |
| 
 | |
|     VQSHL.S32       Q15, Q15, Q8
 | |
| 
 | |
|     VQSUB.S32       Q4, Q4, Q12
 | |
| 
 | |
|     VQSUB.S32       Q11, Q15, Q11
 | |
| 
 | |
|     VQSHL.S32       Q15, Q4, #2
 | |
| 
 | |
|     VQSHL.S32       Q11, Q11, #2
 | |
| 
 | |
|     VQADD.S32       Q15, Q15, Q10
 | |
|     VQADD.S32       Q11, Q11, Q10
 | |
| 
 | |
|     VSHR.S32        Q15, Q15, #16
 | |
| 
 | |
|     VUZP.16         D30, D31
 | |
|     VSHR.S32        Q11, Q11, #16
 | |
| 
 | |
|     VUZP.16         D22, D23
 | |
|     VMOV            D23, D30
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     VST1.16         D14[0], [R0], R9
 | |
|     VST1.16         D22[0], [R0], R9
 | |
|     VST1.16         D14[1], [R0], R9
 | |
|     VST1.16         D22[1], [R0], R9
 | |
|     VST1.16         D14[2], [R0], R9
 | |
|     VST1.16         D22[2], [R0], R9
 | |
|     VST1.16         D14[3], [R0], R9
 | |
|     VST1.16         D22[3], [R0], R9
 | |
|     VST1.16         D15[0], [R5], R10
 | |
|     VST1.16         D23[0], [R5], R10
 | |
|     VST1.16         D15[1], [R5], R10
 | |
|     VST1.16         D23[1], [R5], R10
 | |
|     VST1.16         D15[2], [R5], R10
 | |
|     VST1.16         D23[2], [R5], R10
 | |
|     VST1.16         D15[3], [R5], R10
 | |
|     VST1.16         D23[3], [R5], R10
 | |
| 
 | |
| ARM_EPILOGUE:
 | |
| 
 | |
| ARM_LOOP:
 | |
| 
 | |
|     VLD2.32         {Q0, Q1}, [R1]
 | |
| 
 | |
|     VUZP.16         D0, D1
 | |
|     VUZP.16         D2, D3
 | |
| 
 | |
|     VREV64.16       Q0, Q0
 | |
|     VREV64.16       Q1, Q1
 | |
| 
 | |
|     VLD2.16         {D8, D9}, [R2]!
 | |
| 
 | |
|     VLD2.32         {D4, D6}, [R8]!
 | |
|     VMOV.S32        D5, #0x00000000
 | |
|     VMOV.S32        D7, #0x00000000
 | |
| 
 | |
|     VLD1.32         D5[0], [R8]!
 | |
|     VLD1.32         D7[0], [R8]
 | |
| 
 | |
|     MOV             R12, #16
 | |
| 
 | |
|     VUZP.16         D4, D5
 | |
|     VUZP.16         D6, D7
 | |
| 
 | |
|     ADD             R6, R6, #16
 | |
| 
 | |
|     MOV             R12, #-4
 | |
|     VLD2.32         {D11, D13}, [R6], R12
 | |
| 
 | |
| 
 | |
|     VMOV.S32        D10, #0x00000000
 | |
| 
 | |
|     VLD1.32         D12[1], [R6], R12
 | |
|     VLD1.32         D10[1], [R6], R12
 | |
|     VLD1.32         D12[0], [R6], R12
 | |
| 
 | |
|     VUZP.16         D10, D11
 | |
|     VUZP.16         D12, D13
 | |
| 
 | |
|     VREV64.16       Q5, Q5
 | |
|     VREV64.16       Q6, Q6
 | |
| 
 | |
|     VMULL.U16       Q15, D0, D9
 | |
|     VMULL.U16       Q14, D2, D8
 | |
|     VMULL.U16       Q13, D0, D8
 | |
|     VMULL.U16       Q12, D2, D9
 | |
| 
 | |
|     VSHR.U32        Q15, Q15, #16
 | |
|     VSHR.U32        Q14, Q14, #16
 | |
| 
 | |
|     VMLAL.S16       Q15, D1, D9
 | |
|     VMLAL.S16       Q14, D3, D8
 | |
| 
 | |
|     VSHR.U32        Q13, Q13, #16
 | |
|     VSHR.U32        Q12, Q12, #16
 | |
| 
 | |
|     VMLAL.S16       Q13, D1, D8
 | |
|     VMLAL.S16       Q12, D3, D9
 | |
| 
 | |
|     VADD.I32        Q15, Q15, Q14
 | |
|     VNEG.S32        Q15, Q15
 | |
| 
 | |
|     VMULL.U16       Q11, D4, D8
 | |
| 
 | |
|     VSUB.I32        Q14, Q12, Q13
 | |
| 
 | |
| 
 | |
|     VMOV            Q13, Q15
 | |
|     VMOV            Q12, Q14
 | |
| 
 | |
|     VUZP.16         D26, D27
 | |
|     VUZP.16         D24, D25
 | |
| 
 | |
| 
 | |
|     VMULL.U16       Q1, D24, D18
 | |
|     VMULL.U16       Q0, D26, D18
 | |
| 
 | |
|     VSHR.U32        Q11, Q11, #16
 | |
|     VMLAL.S16       Q11, D5, D8
 | |
| 
 | |
|     VSHR.U32        Q1, Q1, #16
 | |
|     VSHR.U32        Q0, Q0, #16
 | |
|     VMLAL.S16       Q1, D25, D18
 | |
|     VMLAL.S16       Q0, D27, D18
 | |
| 
 | |
|     VMULL.U16       Q12, D4, D9
 | |
|     VMULL.U16       Q13, D6, D8
 | |
| 
 | |
|     VNEG.S32        Q1, Q1
 | |
|     VADD.I32        Q14, Q14, Q0
 | |
|     VADD.I32        Q15, Q15, Q1
 | |
| 
 | |
|     VMULL.U16       Q0, D6, D9
 | |
|     VSHR.S32        Q12, Q12, #16
 | |
|     VMLAL.S16       Q12, D5, D9
 | |
|     VSHR.S32        Q13, Q13, #16
 | |
|     VSHR.S32        Q0, Q0, #16
 | |
|     VMLAL.S16       Q13, D7, D8
 | |
|     VMLAL.S16       Q0, D7, D9
 | |
| 
 | |
|     VADD.I32        Q11, Q11, Q0
 | |
|     VNEG.S32        Q11, Q11
 | |
|     VSUB.I32        Q12, Q13, Q12
 | |
| 
 | |
|     LDR             R11, [sp, #120]
 | |
|     VDUP.S32        Q7, R11
 | |
|     VQADD.S32       Q14, Q14, Q7
 | |
|     LDR             R11, [sp, #116]
 | |
|     VDUP.S32        Q0, R11
 | |
|     VQSHL.S32       Q14, Q14, Q0
 | |
| 
 | |
|     VMOV            Q0, Q11
 | |
|     VMOV            Q7, Q12
 | |
| 
 | |
|     VUZP.16         D22, D23
 | |
|     VUZP.16         D24, D25
 | |
| 
 | |
|     VMULL.U16       Q4, D24, D18
 | |
|     VMULL.U16       Q13, D22, D18
 | |
| 
 | |
|     VNEG.S32        Q1, Q15
 | |
|     VUZP.16         D30, D31
 | |
|     VUZP.16         D2, D3
 | |
| 
 | |
|     VMULL.U16       Q2, D30, D12
 | |
|     VMULL.U16       Q3, D2, D13
 | |
| 
 | |
|     VSHR.U32        Q4, Q4, #16
 | |
|     VSHR.U32        Q13, Q13, #16
 | |
| 
 | |
|     VMLAL.S16       Q4, D25, D18
 | |
|     VMLAL.S16       Q13, D23, D18
 | |
| 
 | |
|     VSHR.U32        Q2, Q2, #16
 | |
|     VSHR.U32        Q3, Q3, #16
 | |
| 
 | |
|     VMLAL.S16       Q2, D31, D12
 | |
|     VMLAL.S16       Q3, D3, D13
 | |
| 
 | |
|     VNEG.S32        Q4, Q4
 | |
|     VADD.I32        Q7, Q7, Q13
 | |
|     VADD.I32        Q0, Q0, Q4
 | |
| 
 | |
|     LDR             R11, [sp, #120]
 | |
|     VDUP.S32        Q4, R11
 | |
|     VQADD.S32       Q0, Q0, Q4
 | |
|     LDR             R11, [sp, #116]
 | |
|     VDUP.S32        Q13, R11
 | |
|     VQSHL.S32       Q0, Q0, Q13
 | |
| 
 | |
|     VMOV            Q13, Q14
 | |
| 
 | |
|     MOV             R6, R4
 | |
| 
 | |
|     VLD1.32         {D28, D29}, [R4]!
 | |
|     VMOV.S32        D31, #0x00000000
 | |
|     VLD1.32         D30[0], [R4]!
 | |
|     VLD1.32         D30[1], [R4]!
 | |
|     VLD1.32         D31[0], [R4]!
 | |
|     VUZP.32         Q14, Q15
 | |
| 
 | |
| 
 | |
|     VST1.32         D26[0], [R6]!
 | |
|     VST1.32         D0[0], [R6]!
 | |
|     VST1.32         D26[1], [R6]!
 | |
|     VST1.32         D0[1], [R6]!
 | |
|     VST1.32         D27[0], [R6]!
 | |
|     VST1.32         D1[0], [R6]!
 | |
|     VST1.32         D27[1], [R6]!
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D13, D1
 | |
| 
 | |
|     VMULL.S32       Q13, D28, D0
 | |
|     VQMOVN.S64      D8, Q13
 | |
|     VMULL.S32       Q13, D29, D1
 | |
|     VQMOVN.S64      D9, Q13
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D12, D1
 | |
| 
 | |
|     VMULL.S32       Q12, D28, D0
 | |
|     VQMOVN.S64      D26, Q12
 | |
|     VMULL.S32       Q12, D29, D1
 | |
|     VQMOVN.S64      D27, Q12
 | |
| 
 | |
|     VQSHL.S32       Q2, Q2, Q8
 | |
|     VQSHL.S32       Q3, Q3, Q8
 | |
| 
 | |
|     VQSUB.S32       Q2, Q2, Q4
 | |
|     VQSUB.S32       Q3, Q3, Q13
 | |
| 
 | |
|     VNEG.S32        Q13, Q7
 | |
|     VUZP.16         D14, D15
 | |
|     VUZP.16         D26, D27
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D10, D1
 | |
| 
 | |
| 
 | |
|     VMULL.S32       Q11, D30, D0
 | |
|     VQMOVN.S64      D24, Q11
 | |
|     VMULL.S32       Q11, D31, D1
 | |
|     VQMOVN.S64      D25, Q11
 | |
| 
 | |
| 
 | |
|     VMOV.S32        D1, #0
 | |
|     VADDL.S16       Q0, D11, D1
 | |
| 
 | |
|     VMULL.S32       Q4, D30, D0
 | |
|     VQMOVN.S64      D22, Q4
 | |
|     VMULL.S32       Q4, D31, D1
 | |
|     VQMOVN.S64      D23, Q4
 | |
| 
 | |
| 
 | |
|     VMULL.U16       Q4, D26, D11
 | |
|     VMULL.U16       Q15, D14, D10
 | |
| 
 | |
|     VSHR.U32        Q4, Q4, #16
 | |
| 
 | |
|     VSHR.U32        Q15, Q15, #16
 | |
| 
 | |
|     VMLAL.S16       Q4, D27, D11
 | |
| 
 | |
|     VMLAL.S16       Q15, D15, D10
 | |
| 
 | |
|     VQSHL.S32       Q2, Q2, #2
 | |
| 
 | |
|     VQSHL.S32       Q3, Q3, #2
 | |
| 
 | |
|     VQADD.S32       Q7, Q2, Q10
 | |
| 
 | |
|     VQADD.S32       Q3, Q3, Q10
 | |
| 
 | |
|     VSHR.S32        Q7, Q7, #16
 | |
| 
 | |
|     VUZP.16         D14, D15
 | |
|     VSHR.S32        Q3, Q3, #16
 | |
| 
 | |
|     VUZP.16         D6, D7
 | |
| 
 | |
|     VMOV            D15, D6
 | |
|     VQSHL.S32       Q4, Q4, Q8
 | |
| 
 | |
|     VQSHL.S32       Q15, Q15, Q8
 | |
| 
 | |
|     VQSUB.S32       Q4, Q4, Q12
 | |
| 
 | |
|     VQSUB.S32       Q11, Q15, Q11
 | |
| 
 | |
|     VQSHL.S32       Q15, Q4, #2
 | |
| 
 | |
|     VQSHL.S32       Q11, Q11, #2
 | |
| 
 | |
|     VQADD.S32       Q15, Q15, Q10
 | |
|     VQADD.S32       Q11, Q11, Q10
 | |
| 
 | |
|     VSHR.S32        Q15, Q15, #16
 | |
| 
 | |
|     VUZP.16         D30, D31
 | |
|     VSHR.S32        Q11, Q11, #16
 | |
| 
 | |
|     VUZP.16         D22, D23
 | |
|     VMOV            D23, D30
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     VST1.16         D14[0], [R0], R9
 | |
|     VST1.16         D22[0], [R0], R9
 | |
|     VST1.16         D14[1], [R0], R9
 | |
|     VST1.16         D22[1], [R0], R9
 | |
|     VST1.16         D14[2], [R0], R9
 | |
|     VST1.16         D22[2], [R0], R9
 | |
|     VST1.16         D14[3], [R0], R9
 | |
| 
 | |
|     VST1.16         D15[0], [R5], R10
 | |
|     VST1.16         D23[0], [R5], R10
 | |
|     VST1.16         D15[1], [R5], R10
 | |
|     VST1.16         D23[1], [R5], R10
 | |
|     VST1.16         D15[2], [R5], R10
 | |
|     VST1.16         D23[2], [R5], R10
 | |
|     VST1.16         D15[3], [R5], R10
 | |
| 
 | |
|     VPOP            {d8 - d15}
 | |
|     LDMFD           sp!, {R4-R12}
 | |
|     BX              LR
 | |
| 
 | |
| 
 |