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 .global ixheaacd_neg_shift_spec_armv7 25 26ixheaacd_neg_shift_spec_armv7: 27 STMFD sp!, {R4-R12, R14} 28 VPUSH {D8 - D15} 29 MOV R5, #448 30 SUB R6, R5, #1 31 MOV R6, R6, LSL #2 32 ADD R6, R6, R0 33 MOV R8, #-16 34 SUB R6, R6, #12 35 MOV R7, R3, LSL #2 36 VDUP.32 Q1, R2 37 VLD1.32 {D0, D1}, [R6], R8 38 VQNEG.S32 Q0, Q0 39 40 41 VLD1.32 {D6, D7}, [R6], R8 42 VQSHL.S32 Q15, Q0, Q1 43 VMOV Q13, Q15 44 SUB R5, R5, #8 45 46 VQNEG.S32 Q3, Q3 47 VREV64.32 Q13,Q13 48 49LOOP_1: 50 51 VST1.32 {D27[0]},[R1], R7 52 VQSHL.S32 Q12, Q3, Q1 53 VLD1.32 {D0, D1}, [R6], R8 54 VST1.32 {D27[1]}, [R1], R7 55 VST1.32 {D26[0]}, [R1], R7 56 VQNEG.S32 Q0, Q0 57 VST1.32 {D26[1]}, [R1], R7 58 VMOV Q10 , Q12 59 SUBS R5, R5, #8 60 61 62 VREV64.32 Q10,Q10 63 VQSHL.S32 Q15, Q0, Q1 64 VST1.32 {D21[0]},[R1], R7 65 VLD1.32 {D6, D7}, [R6],R8 66 VST1.32 {D21[1]}, [R1],R7 67 VMOV Q13,Q15 68 VST1.32 {D20[0]}, [R1],R7 69 VST1.32 {D20[1]}, [R1],R7 70 71 VREV64.32 Q13,Q13 72 VQNEG.S32 Q3, Q3 73 74 BGT LOOP_1 75 76 VST1.32 {D27[0]},[R1],R7 77 VQSHL.S32 Q12, Q3, Q1 78 VST1.32 {D27[1]}, [R1],R7 79 VST1.32 {D26[0]}, [R1],R7 80 VST1.32 {D26[1]}, [R1],R7 81 VMOV Q10, Q12 82 83 VREV64.32 Q10,Q10 84 VST1.32 {D21[0]}, [R1], R7 85 VST1.32 {D21[1]}, [R1], R7 86 VST1.32 {D20[0]}, [R1], R7 87 VST1.32 {D20[1]}, [R1], R7 88 VPOP {D8 - D15} 89 LDMFD sp!, {R4-R12, R15} 90.end 91 92