blob: 95200d5f2d28c0e2872594fa630f3913c26eae22 [file] [log] [blame]
@/******************************************************************************
@ *
@ * 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_conv_ergtoamplitudelp_armv7
ixheaacd_conv_ergtoamplitudelp_armv7:
STMFD sp!, {r4-r12, r14}
LDR R5, [SP, #44]
LDR R4, [SP, #40]
MOVW R11, #0x5A82
MOVW R10, #0x1FF
LOOP1:
LDRSH R6, [R2, #0]
MOV R12, #0
MOV R14, #-16
MOVS R6, R6
BLE ENDIF1_1
LDRSH R7, [R2, #2]
CLZ R8, R6
SUB R8, R8, #17
SUB R7, R7, R8
MOV R6, R6, LSL R8
MOV R6, R6, ASR #5
AND R6, R6, R10
TST R7, #1
BIC R6, R6, #1
LDRH R12, [R6, R5]
ADDNE R7, R7, #3
MOV R14, R7, ASR #1
SMULWBNE R12, R12, R11
ENDIF1_1:
STRH R14, [R2, #2]
LDRSH R6, [R3, #0]
MOV R8, #0
MOV R9, #-16
MOVS R6, R6
BLE ENDIF1_2
LDRSH R7, [R3, #2]
CLZ R8, R6
SUB R8, R8, #17
SUB R7, R7, R8
MOV R6, R6, LSL R8
MOV R6, R6, ASR #5
AND R6, R6, R10
TST R7, #1
BIC R6, R6, #1
LDRH R8, [R6, R5]
ADDNE R7, R7, #3
MOV R9, R7, ASR #1
SMULWBNE R8, R8, R11
ENDIF1_2:
STRH R9, [R3, #2]
STRH R8, [R3], #4
LDRSH R6, [R4, #0]
MOV R8, #0
MOV R9, #-16
MOVS R6, R6
BLE ENDIF1_3
LDRSH R7, [R4, #2]
CLZ R8, R6
SUB R8, R8, #17
SUB R7, R7, R8
MOV R6, R6, LSL R8
MOV R6, R6, ASR #5
ANDS R6, R6, R10
TST R7, #1
BIC R6, R6, #1
LDRH R8, [R6, R5]
ADDNE R7, R7, #3
MOV R9, R7, ASR #1
SMULWBNE R8, R8, R11
ENDIF1_3:
STRH R9, [R4, #2]
SUB R6, R1, R9
SUBS R6, R6, #4
RSBLE R6, R6, #0
MOVGT R8, R8, ASR R6
MOVLE R8, R8, LSL R6
STRH R8, [R4], #4
SUBS R6, R14, R1
BLE ELSE1
CMP R6, #15
MOVGT R6, #15
MOV R12, R12, LSL R6
CMP R12, #0x8000
MVNGE R12, #0x8000
CMNLT R12, #0x00008000
MOVLT R12, #0x00008000
STRH R12, [R2], #4
SUBS R0, R0, #1
BGT LOOP1
ELSE1:
RSB R6, R6, #0
MOV R12, R12, ASR R6
STRH R12, [R2], #4
SUBS R0, R0, #1
BGT LOOP1
LDMFD sp!, {r4-r12, r15}