1@/****************************************************************************** 2@ * 3@ * Copyright (C) 2018 The Android Open Source Project 4@ * 5@ * Licensed under the Apache License, Version 2.0 (the "License"); 6@ * you may not use this file except in compliance with the License. 7@ * You may obtain a copy of the License at: 8@ * 9@ * http:@www.apache.org/licenses/LICENSE-2.0 10@ * 11@ * Unless required by applicable law or agreed to in writing, software 12@ * distributed under the License is distributed on an "AS IS" BASIS, 13@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14@ * See the License for the specific language governing permissions and 15@ * limitations under the License. 16@ * 17@ ***************************************************************************** 18@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19@*/ 20 21 22.text 23.p2align 2 24 25 .global ixheaacd_calc_post_twid_armv7 26ixheaacd_calc_post_twid_armv7: 27 28 STMFD sp!, {r4-r12, r14} 29 VPUSH {D8-D15} 30 LDR R4, [SP, #104] 31 LDR R5, [SP, #108] 32 ADD R6, R0, R3, LSL #3 33 SUB R6, R6, #4 34 MOV R7, #-8 35 MOV R8, #8 36 37LOOP1: 38 VLD1.32 {D0, D1}, [R4]! 39 VLD1.32 {D2, D3}, [R5]! 40 VLD1.32 {D4, D5}, [R1]! 41 VLD1.32 {D6, D7}, [R2]! 42 43 VMULL.S32 Q4, D4, D0 44 VMULL.S32 Q5, D6, D2 45 VMULL.S32 Q6, D6, D0 46 VMULL.S32 Q7, D4, D2 47 VMULL.S32 Q8, D5, D1 48 VMULL.S32 Q9, D7, D3 49 VMULL.S32 Q10, D7, D1 50 VMULL.S32 Q11, D5, D3 51 52 VSHRN.S64 D6, Q4, #32 53 VSHRN.S64 D8, Q5, #32 54 VSHRN.S64 D10, Q6, #32 55 VSHRN.S64 D12, Q7, #32 56 VSHRN.S64 D7, Q8, #32 57 VSHRN.S64 D9, Q9, #32 58 VSHRN.S64 D11, Q10, #32 59 VSHRN.S64 D13, Q11, #32 60 61 VSUB.I32 D0, D6, D8 62 VADD.I32 D1, D10, D12 63 VSUB.I32 D2, D7, D9 64 VADD.I32 D3, D11, D13 65 66 VNEG.S32 Q0, Q0 67 VNEG.S32 Q1, Q1 68 SUBS R3, R3, #4 69 70 VST1.32 {D0[0]}, [R0], R8 71 VST1.32 {D1[0]}, [R6], R7 72 VST1.32 {D0[1]}, [R0], R8 73 VST1.32 {D1[1]}, [R6], R7 74 75 VST1.32 {D2[0]}, [R0], R8 76 VST1.32 {D3[0]}, [R6], R7 77 VST1.32 {D2[1]}, [R0], R8 78 VST1.32 {D3[1]}, [R6], R7 79 BGT LOOP1 80 VPOP {D8-D15} 81 LDMFD sp!, {r4-r12, r15} 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110