xref: /aosp_15_r20/external/libxaac/decoder/armv7/ixheaacd_conv_ergtoamplitudelp.s (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
1*15dc779aSAndroid Build Coastguard Worker@/******************************************************************************
2*15dc779aSAndroid Build Coastguard Worker@ *
3*15dc779aSAndroid Build Coastguard Worker@ * Copyright (C) 2018 The Android Open Source Project
4*15dc779aSAndroid Build Coastguard Worker@ *
5*15dc779aSAndroid Build Coastguard Worker@ * Licensed under the Apache License, Version 2.0 (the "License");
6*15dc779aSAndroid Build Coastguard Worker@ * you may not use this file except in compliance with the License.
7*15dc779aSAndroid Build Coastguard Worker@ * You may obtain a copy of the License at:
8*15dc779aSAndroid Build Coastguard Worker@ *
9*15dc779aSAndroid Build Coastguard Worker@ * http://www.apache.org/licenses/LICENSE-2.0
10*15dc779aSAndroid Build Coastguard Worker@ *
11*15dc779aSAndroid Build Coastguard Worker@ * Unless required by applicable law or agreed to in writing, software
12*15dc779aSAndroid Build Coastguard Worker@ * distributed under the License is distributed on an "AS IS" BASIS,
13*15dc779aSAndroid Build Coastguard Worker@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*15dc779aSAndroid Build Coastguard Worker@ * See the License for the specific language governing permissions and
15*15dc779aSAndroid Build Coastguard Worker@ * limitations under the License.
16*15dc779aSAndroid Build Coastguard Worker@ *
17*15dc779aSAndroid Build Coastguard Worker@ *****************************************************************************
18*15dc779aSAndroid Build Coastguard Worker@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*15dc779aSAndroid Build Coastguard Worker@*/
20*15dc779aSAndroid Build Coastguard Worker
21*15dc779aSAndroid Build Coastguard Worker
22*15dc779aSAndroid Build Coastguard Worker.text
23*15dc779aSAndroid Build Coastguard Worker.p2align 2
24*15dc779aSAndroid Build Coastguard Worker.global ixheaacd_conv_ergtoamplitudelp_armv7
25*15dc779aSAndroid Build Coastguard Workerixheaacd_conv_ergtoamplitudelp_armv7:
26*15dc779aSAndroid Build Coastguard Worker
27*15dc779aSAndroid Build Coastguard Worker    STMFD           sp!, {r4-r12, r14}
28*15dc779aSAndroid Build Coastguard Worker
29*15dc779aSAndroid Build Coastguard Worker    LDR             R5, [SP, #44]
30*15dc779aSAndroid Build Coastguard Worker    LDR             R4, [SP, #40]
31*15dc779aSAndroid Build Coastguard Worker    MOVW            R11, #0x5A82
32*15dc779aSAndroid Build Coastguard Worker    MOVW            R10, #0x1FF
33*15dc779aSAndroid Build Coastguard Worker
34*15dc779aSAndroid Build Coastguard WorkerLOOP1:
35*15dc779aSAndroid Build Coastguard Worker
36*15dc779aSAndroid Build Coastguard Worker    LDRSH           R6, [R2, #0]
37*15dc779aSAndroid Build Coastguard Worker    MOV             R12, #0
38*15dc779aSAndroid Build Coastguard Worker    MOV             R14, #-16
39*15dc779aSAndroid Build Coastguard Worker    MOVS            R6, R6
40*15dc779aSAndroid Build Coastguard Worker    BLE             ENDIF1_1
41*15dc779aSAndroid Build Coastguard Worker
42*15dc779aSAndroid Build Coastguard Worker    LDRSH           R7, [R2, #2]
43*15dc779aSAndroid Build Coastguard Worker    CLZ             R8, R6
44*15dc779aSAndroid Build Coastguard Worker    SUB             R8, R8, #17
45*15dc779aSAndroid Build Coastguard Worker    SUB             R7, R7, R8
46*15dc779aSAndroid Build Coastguard Worker    MOV             R6, R6, LSL R8
47*15dc779aSAndroid Build Coastguard Worker    MOV             R6, R6, ASR #5
48*15dc779aSAndroid Build Coastguard Worker    AND             R6, R6, R10
49*15dc779aSAndroid Build Coastguard Worker
50*15dc779aSAndroid Build Coastguard Worker    TST             R7, #1
51*15dc779aSAndroid Build Coastguard Worker    BIC             R6, R6, #1
52*15dc779aSAndroid Build Coastguard Worker    LDRH            R12, [R6, R5]
53*15dc779aSAndroid Build Coastguard Worker    ADDNE           R7, R7, #3
54*15dc779aSAndroid Build Coastguard Worker    MOV             R14, R7, ASR #1
55*15dc779aSAndroid Build Coastguard Worker    SMULWBNE        R12, R12, R11
56*15dc779aSAndroid Build Coastguard Worker
57*15dc779aSAndroid Build Coastguard WorkerENDIF1_1:
58*15dc779aSAndroid Build Coastguard Worker    STRH            R14, [R2, #2]
59*15dc779aSAndroid Build Coastguard Worker
60*15dc779aSAndroid Build Coastguard Worker
61*15dc779aSAndroid Build Coastguard Worker    LDRSH           R6, [R3, #0]
62*15dc779aSAndroid Build Coastguard Worker    MOV             R8, #0
63*15dc779aSAndroid Build Coastguard Worker    MOV             R9, #-16
64*15dc779aSAndroid Build Coastguard Worker
65*15dc779aSAndroid Build Coastguard Worker    MOVS            R6, R6
66*15dc779aSAndroid Build Coastguard Worker    BLE             ENDIF1_2
67*15dc779aSAndroid Build Coastguard Worker
68*15dc779aSAndroid Build Coastguard Worker    LDRSH           R7, [R3, #2]
69*15dc779aSAndroid Build Coastguard Worker    CLZ             R8, R6
70*15dc779aSAndroid Build Coastguard Worker    SUB             R8, R8, #17
71*15dc779aSAndroid Build Coastguard Worker    SUB             R7, R7, R8
72*15dc779aSAndroid Build Coastguard Worker    MOV             R6, R6, LSL R8
73*15dc779aSAndroid Build Coastguard Worker    MOV             R6, R6, ASR #5
74*15dc779aSAndroid Build Coastguard Worker    AND             R6, R6, R10
75*15dc779aSAndroid Build Coastguard Worker
76*15dc779aSAndroid Build Coastguard Worker    TST             R7, #1
77*15dc779aSAndroid Build Coastguard Worker    BIC             R6, R6, #1
78*15dc779aSAndroid Build Coastguard Worker    LDRH            R8, [R6, R5]
79*15dc779aSAndroid Build Coastguard Worker    ADDNE           R7, R7, #3
80*15dc779aSAndroid Build Coastguard Worker    MOV             R9, R7, ASR #1
81*15dc779aSAndroid Build Coastguard Worker    SMULWBNE        R8, R8, R11
82*15dc779aSAndroid Build Coastguard Worker
83*15dc779aSAndroid Build Coastguard WorkerENDIF1_2:
84*15dc779aSAndroid Build Coastguard Worker    STRH            R9, [R3, #2]
85*15dc779aSAndroid Build Coastguard Worker    STRH            R8, [R3], #4
86*15dc779aSAndroid Build Coastguard Worker
87*15dc779aSAndroid Build Coastguard Worker
88*15dc779aSAndroid Build Coastguard Worker
89*15dc779aSAndroid Build Coastguard Worker
90*15dc779aSAndroid Build Coastguard Worker    LDRSH           R6, [R4, #0]
91*15dc779aSAndroid Build Coastguard Worker    MOV             R8, #0
92*15dc779aSAndroid Build Coastguard Worker    MOV             R9, #-16
93*15dc779aSAndroid Build Coastguard Worker    MOVS            R6, R6
94*15dc779aSAndroid Build Coastguard Worker    BLE             ENDIF1_3
95*15dc779aSAndroid Build Coastguard Worker
96*15dc779aSAndroid Build Coastguard Worker    LDRSH           R7, [R4, #2]
97*15dc779aSAndroid Build Coastguard Worker    CLZ             R8, R6
98*15dc779aSAndroid Build Coastguard Worker    SUB             R8, R8, #17
99*15dc779aSAndroid Build Coastguard Worker    SUB             R7, R7, R8
100*15dc779aSAndroid Build Coastguard Worker    MOV             R6, R6, LSL R8
101*15dc779aSAndroid Build Coastguard Worker    MOV             R6, R6, ASR #5
102*15dc779aSAndroid Build Coastguard Worker    ANDS            R6, R6, R10
103*15dc779aSAndroid Build Coastguard Worker
104*15dc779aSAndroid Build Coastguard Worker    TST             R7, #1
105*15dc779aSAndroid Build Coastguard Worker    BIC             R6, R6, #1
106*15dc779aSAndroid Build Coastguard Worker    LDRH            R8, [R6, R5]
107*15dc779aSAndroid Build Coastguard Worker    ADDNE           R7, R7, #3
108*15dc779aSAndroid Build Coastguard Worker    MOV             R9, R7, ASR #1
109*15dc779aSAndroid Build Coastguard Worker    SMULWBNE        R8, R8, R11
110*15dc779aSAndroid Build Coastguard Worker
111*15dc779aSAndroid Build Coastguard WorkerENDIF1_3:
112*15dc779aSAndroid Build Coastguard Worker    STRH            R9, [R4, #2]
113*15dc779aSAndroid Build Coastguard Worker
114*15dc779aSAndroid Build Coastguard Worker    SUB             R6, R1, R9
115*15dc779aSAndroid Build Coastguard Worker    SUBS            R6, R6, #4
116*15dc779aSAndroid Build Coastguard Worker
117*15dc779aSAndroid Build Coastguard Worker    RSBLE           R6, R6, #0
118*15dc779aSAndroid Build Coastguard Worker    MOVGT           R8, R8, ASR R6
119*15dc779aSAndroid Build Coastguard Worker    MOVLE           R8, R8, LSL R6
120*15dc779aSAndroid Build Coastguard Worker    STRH            R8, [R4], #4
121*15dc779aSAndroid Build Coastguard Worker
122*15dc779aSAndroid Build Coastguard Worker
123*15dc779aSAndroid Build Coastguard Worker    SUBS            R6, R14, R1
124*15dc779aSAndroid Build Coastguard Worker    BLE             ELSE1
125*15dc779aSAndroid Build Coastguard Worker
126*15dc779aSAndroid Build Coastguard Worker    CMP             R6, #15
127*15dc779aSAndroid Build Coastguard Worker    MOVGT           R6, #15
128*15dc779aSAndroid Build Coastguard Worker    MOV             R12, R12, LSL R6
129*15dc779aSAndroid Build Coastguard Worker    CMP             R12, #0x8000
130*15dc779aSAndroid Build Coastguard Worker    MVNGE           R12, #0x8000
131*15dc779aSAndroid Build Coastguard Worker    CMNLT           R12, #0x00008000
132*15dc779aSAndroid Build Coastguard Worker    MOVLT           R12, #0x00008000
133*15dc779aSAndroid Build Coastguard Worker    STRH            R12, [R2], #4
134*15dc779aSAndroid Build Coastguard Worker    SUBS            R0, R0, #1
135*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP1
136*15dc779aSAndroid Build Coastguard Worker
137*15dc779aSAndroid Build Coastguard WorkerELSE1:
138*15dc779aSAndroid Build Coastguard Worker    RSB             R6, R6, #0
139*15dc779aSAndroid Build Coastguard Worker    MOV             R12, R12, ASR R6
140*15dc779aSAndroid Build Coastguard Worker    STRH            R12, [R2], #4
141*15dc779aSAndroid Build Coastguard Worker    SUBS            R0, R0, #1
142*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP1
143*15dc779aSAndroid Build Coastguard Worker    LDMFD           sp!, {r4-r12, r15}
144*15dc779aSAndroid Build Coastguard Worker
145*15dc779aSAndroid Build Coastguard Worker
146*15dc779aSAndroid Build Coastguard Worker
147*15dc779aSAndroid Build Coastguard Worker
148*15dc779aSAndroid Build Coastguard Worker
149