@/****************************************************************************** @ * @ * 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_tns_parcor_lpc_convert_armv7 ixheaacd_tns_parcor_lpc_convert_armv7: STMFD SP!, {R2, R4-R12, R14} SUB SP, SP, #128 MOV R4, SP MOV R8, #0 MOV R5, #0x8000 OUTLOOP: MOV R6, #0 MOV R7, #16 LOOP1: STR R6, [R4], #4 STR R6, [R4, #60] SUBS R7, R7, #1 BGT LOOP1 SUB R4, R4, #64 MOV R9, #0x7FFFFFFF MOV R10, R9, ASR R8 MOV R7, R3 LOOP2: MOV R11, R10 LDRSH R2, [R4], #2 LDRSH R14, [R0], #2 MOV R12, R3 LOOP2_1: SMULBB R2, R2, R14 QADD R14, R10, R5 CMP R2, #0x40000000 MOV R14, R14, ASR #16 MOVNE R2, R2, LSL #1 MOVEQ R2, #0x7FFFFFFF QADD R10, R10, R2 STRH R14, [R4, #62] MOVS R2, R10 RSBSMI R2, R2, #0 MOVMI R2, #0x7FFFFFFF CMP R2, #0x7FFFFFFF MOVEQ R6, #1 SUBS R12, R12, #1 @ LDRGTSH R2, [R4], #2 @ LDRGTSH R14, [R0], #2 LDRSHGT R2, [R4], #2 LDRSHGT R14, [R0], #2 BGT LOOP2_1 LDRSH R2, [R4, #62] MOV R12, R3 LOOP2_2: LDRSH R14, [R0, #-2]! LDRSH R9, [R4, #-2]! SMULBB R2, R2, R14 MOV R9, R9, LSL #16 CMP R2, #0x40000000 MOVNE R2, R2, LSL #1 MOVEQ R2, #0x7FFFFFFF QADD R9, R9, R2 LDRSH R2, [R4, #62] QADD R14, R9, R5 MOVS R9, R9 MOV R14, R14, ASR #16 STRH R14, [R4, #2] @ RSBMIS R9, R9, #0 RSBSMI R9, R9, #0 MOVMI R9, #0x7FFFFFFF CMP R9, #0x7FFFFFFF MOVEQ R6, #1 SUBS R12, R12, #1 BGT LOOP2_2 QADD R11, R11, R5 QADD R2, R10, R5 MOV R11, R11, ASR #16 MOV R2, R2, ASR #16 STRH R11, [R4] STRH R2, [R1], #2 MOV R10, #0 SUBS R7, R7, #1 BGE LOOP2 SUB R1, R1, R3, LSL #1 SUB R1, R1, #2 SUBS R10, R6, #1 ADDEQ R8, R8, #1 BEQ OUTLOOP LDR R2, [SP, #128] ADD SP, SP, #132 STRH R8, [R2] LDMFD sp!, {r4-r12, r15}