xref: /aosp_15_r20/external/libxaac/decoder/armv7/ixheaacd_conv_ergtoamplitude.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_ergtoamplitude_armv7
25*15dc779aSAndroid Build Coastguard Workerixheaacd_conv_ergtoamplitude_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            R14, #0x1FF
32*15dc779aSAndroid Build Coastguard Worker    MOVW            R10, #0x5A82
33*15dc779aSAndroid Build Coastguard Worker
34*15dc779aSAndroid Build Coastguard WorkerLOOP1:
35*15dc779aSAndroid Build Coastguard Worker
36*15dc779aSAndroid Build Coastguard Worker    LDRSH           R6, [R2], #2
37*15dc779aSAndroid Build Coastguard Worker    LDRSH           R7, [R2], #2
38*15dc779aSAndroid Build Coastguard Worker    MOV             R12, #0
39*15dc779aSAndroid Build Coastguard Worker    MOV             R9, #-16
40*15dc779aSAndroid Build Coastguard Worker    MOVS            R6, R6
41*15dc779aSAndroid Build Coastguard Worker    BLE             ENDIF1_1
42*15dc779aSAndroid Build Coastguard Worker    CLZ             R8, R6
43*15dc779aSAndroid Build Coastguard Worker    SUB             R8, R8, #17
44*15dc779aSAndroid Build Coastguard Worker    SUB             R7, R7, R8
45*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R6, LSL R8
46*15dc779aSAndroid Build Coastguard Worker
47*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R11, ASR #5
48*15dc779aSAndroid Build Coastguard Worker    ANDS            R11, R11, R14
49*15dc779aSAndroid Build Coastguard Worker
50*15dc779aSAndroid Build Coastguard Worker    BIC             R11, R11, #1
51*15dc779aSAndroid Build Coastguard Worker    LDRH            R12, [R11, R5]
52*15dc779aSAndroid Build Coastguard Worker
53*15dc779aSAndroid Build Coastguard Worker    TST             R7, #1
54*15dc779aSAndroid Build Coastguard Worker    ADDNE           R7, R7, #3
55*15dc779aSAndroid Build Coastguard Worker    SMULWBNE        R12, R12, R10
56*15dc779aSAndroid Build Coastguard Worker
57*15dc779aSAndroid Build Coastguard Worker
58*15dc779aSAndroid Build Coastguard Worker    MOV             R9, R7, ASR #1
59*15dc779aSAndroid Build Coastguard WorkerENDIF1_1:
60*15dc779aSAndroid Build Coastguard Worker    STRH            R12, [R2, #-4]
61*15dc779aSAndroid Build Coastguard Worker    STRH            R9, [R2, #-2]
62*15dc779aSAndroid Build Coastguard Worker
63*15dc779aSAndroid Build Coastguard Worker
64*15dc779aSAndroid Build Coastguard Worker    LDRSH           R6, [R3], #2
65*15dc779aSAndroid Build Coastguard Worker    LDRSH           R7, [R3], #2
66*15dc779aSAndroid Build Coastguard Worker    MOV             R8, #0
67*15dc779aSAndroid Build Coastguard Worker    MOV             R9, #-16
68*15dc779aSAndroid Build Coastguard Worker    MOVS            R6, R6
69*15dc779aSAndroid Build Coastguard Worker    BLE             ENDIF1_2
70*15dc779aSAndroid Build Coastguard Worker    CLZ             R8, R6
71*15dc779aSAndroid Build Coastguard Worker    SUB             R8, R8, #17
72*15dc779aSAndroid Build Coastguard Worker    SUB             R7, R7, R8
73*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R6, LSL R8
74*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R11, ASR #5
75*15dc779aSAndroid Build Coastguard Worker    ANDS            R11, R11, R14
76*15dc779aSAndroid Build Coastguard Worker
77*15dc779aSAndroid Build Coastguard Worker    BIC             R11, R11, #1
78*15dc779aSAndroid Build Coastguard Worker    LDRH            R8, [R11, R5]
79*15dc779aSAndroid Build Coastguard Worker    TST             R7, #1
80*15dc779aSAndroid Build Coastguard Worker    ADDNE           R7, R7, #3
81*15dc779aSAndroid Build Coastguard Worker
82*15dc779aSAndroid Build Coastguard Worker    SMULWBNE        R8, R8, R10
83*15dc779aSAndroid Build Coastguard Worker
84*15dc779aSAndroid Build Coastguard Worker
85*15dc779aSAndroid Build Coastguard Worker    MOV             R9, R7, ASR #1
86*15dc779aSAndroid Build Coastguard WorkerENDIF1_2:
87*15dc779aSAndroid Build Coastguard Worker    STRH            R8, [R3, #-4]
88*15dc779aSAndroid Build Coastguard Worker    STRH            R9, [R3, #-2]
89*15dc779aSAndroid Build Coastguard Worker
90*15dc779aSAndroid Build Coastguard Worker
91*15dc779aSAndroid Build Coastguard Worker
92*15dc779aSAndroid Build Coastguard Worker    LDRSH           R6, [R4], #2
93*15dc779aSAndroid Build Coastguard Worker    LDRSH           R7, [R4], #2
94*15dc779aSAndroid Build Coastguard Worker    MOV             R8, #0
95*15dc779aSAndroid Build Coastguard Worker    MOV             R9, #-16
96*15dc779aSAndroid Build Coastguard Worker    MOVS            R6, R6
97*15dc779aSAndroid Build Coastguard Worker    BLE             ENDIF1_3
98*15dc779aSAndroid Build Coastguard Worker    CLZ             R8, R6
99*15dc779aSAndroid Build Coastguard Worker    SUB             R8, R8, #17
100*15dc779aSAndroid Build Coastguard Worker    SUB             R7, R7, R8
101*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R6, LSL R8
102*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R11, ASR #5
103*15dc779aSAndroid Build Coastguard Worker    ANDS            R11, R11, R14
104*15dc779aSAndroid Build Coastguard Worker
105*15dc779aSAndroid Build Coastguard Worker    BIC             R11, R11, #1
106*15dc779aSAndroid Build Coastguard Worker    LDRH            R8, [R11, R5]
107*15dc779aSAndroid Build Coastguard Worker    TST             R7, #1
108*15dc779aSAndroid Build Coastguard Worker    ADDNE           R7, R7, #3
109*15dc779aSAndroid Build Coastguard Worker
110*15dc779aSAndroid Build Coastguard Worker    SMULWBNE        R8, R8, R10
111*15dc779aSAndroid Build Coastguard Worker
112*15dc779aSAndroid Build Coastguard Worker
113*15dc779aSAndroid Build Coastguard Worker    MOV             R9, R7, ASR #1
114*15dc779aSAndroid Build Coastguard WorkerENDIF1_3:
115*15dc779aSAndroid Build Coastguard Worker    STRH            R9, [R4, #-2]
116*15dc779aSAndroid Build Coastguard Worker
117*15dc779aSAndroid Build Coastguard Worker    SUB             R6, R1, R9
118*15dc779aSAndroid Build Coastguard Worker    SUBS            R6, R6, #4
119*15dc779aSAndroid Build Coastguard Worker
120*15dc779aSAndroid Build Coastguard Worker    RSBLE           R6, R6, #0
121*15dc779aSAndroid Build Coastguard Worker    MOVGT           R8, R8, ASR R6
122*15dc779aSAndroid Build Coastguard Worker    MOVLE           R8, R8, LSL R6
123*15dc779aSAndroid Build Coastguard Worker    STRH            R8, [R4, #-4]
124*15dc779aSAndroid Build Coastguard Worker
125*15dc779aSAndroid Build Coastguard Worker    SUBS            R0, R0, #1
126*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP1
127*15dc779aSAndroid Build Coastguard Worker    LDMFD           sp!, {r4-r12, r15}
128*15dc779aSAndroid Build Coastguard Worker
129*15dc779aSAndroid Build Coastguard Worker
130*15dc779aSAndroid Build Coastguard Worker
131*15dc779aSAndroid Build Coastguard Worker
132*15dc779aSAndroid Build Coastguard Worker
133