| @/****************************************************************************** |
| @ * |
| @ * 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 |
| |
| |