xref: /aosp_15_r20/external/libxaac/decoder/armv7/ixheaacd_rescale_subbandsamples.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_adjust_scale_armv7
25*15dc779aSAndroid Build Coastguard Workerixheaacd_adjust_scale_armv7:
26*15dc779aSAndroid Build Coastguard Worker    STMFD           SP!, {R4-R11, R14}
27*15dc779aSAndroid Build Coastguard Worker    LDR             R4, [SP, #44]
28*15dc779aSAndroid Build Coastguard Worker    LDR             R5, [SP, #36]
29*15dc779aSAndroid Build Coastguard Worker    LDR             R6, [SP, #40]
30*15dc779aSAndroid Build Coastguard Worker    MOVS            R4, R4
31*15dc779aSAndroid Build Coastguard Worker    BEQ             ENDRESSCALE
32*15dc779aSAndroid Build Coastguard Worker    SUBS            R3, R3, R2
33*15dc779aSAndroid Build Coastguard Worker    BLE             ENDRESSCALE
34*15dc779aSAndroid Build Coastguard Worker    SUBS            R6, R6, R5
35*15dc779aSAndroid Build Coastguard Worker    BLE             ENDRESSCALE
36*15dc779aSAndroid Build Coastguard Worker
37*15dc779aSAndroid Build Coastguard Worker    ADD             R9, R0, R5, LSL#2
38*15dc779aSAndroid Build Coastguard Worker    LDR             R10, [R9], #4
39*15dc779aSAndroid Build Coastguard Worker
40*15dc779aSAndroid Build Coastguard Worker    CMP             R4, #31
41*15dc779aSAndroid Build Coastguard Worker    MOVGT           R4, #31
42*15dc779aSAndroid Build Coastguard Worker    CMP             R4, #-31
43*15dc779aSAndroid Build Coastguard Worker    MOVLT           R4, #-31
44*15dc779aSAndroid Build Coastguard Worker
45*15dc779aSAndroid Build Coastguard Worker
46*15dc779aSAndroid Build Coastguard Worker    LDR             R8, [SP, #48]
47*15dc779aSAndroid Build Coastguard Worker    MOVS            R8, R8
48*15dc779aSAndroid Build Coastguard Worker    BEQ             ELIF1
49*15dc779aSAndroid Build Coastguard Worker
50*15dc779aSAndroid Build Coastguard Worker
51*15dc779aSAndroid Build Coastguard Worker    MOVS            R4, R4
52*15dc779aSAndroid Build Coastguard Worker    BLE             ELIF2_1
53*15dc779aSAndroid Build Coastguard Worker
54*15dc779aSAndroid Build Coastguard WorkerLOOP1:
55*15dc779aSAndroid Build Coastguard Worker    ADD             R10, R10, R2, LSL #2
56*15dc779aSAndroid Build Coastguard Worker    MOV             R7, R3
57*15dc779aSAndroid Build Coastguard Worker
58*15dc779aSAndroid Build Coastguard WorkerINNLOOP1:
59*15dc779aSAndroid Build Coastguard Worker    LDR             R11, [R10]
60*15dc779aSAndroid Build Coastguard Worker    SUBS            R7, R7  , #2
61*15dc779aSAndroid Build Coastguard Worker    LDRGE           R5, [R10, #4]
62*15dc779aSAndroid Build Coastguard Worker
63*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R11, LSL R4
64*15dc779aSAndroid Build Coastguard Worker    STR             R11, [R10], #4
65*15dc779aSAndroid Build Coastguard Worker
66*15dc779aSAndroid Build Coastguard Worker    MOVGE           R5, R5, LSL R4
67*15dc779aSAndroid Build Coastguard Worker    STRGE           R5, [R10], #4
68*15dc779aSAndroid Build Coastguard Worker
69*15dc779aSAndroid Build Coastguard Worker    BGT             INNLOOP1
70*15dc779aSAndroid Build Coastguard Worker
71*15dc779aSAndroid Build Coastguard Worker    LDR             R10, [R9], #4
72*15dc779aSAndroid Build Coastguard Worker    SUBS            R6, R6, #1
73*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP1
74*15dc779aSAndroid Build Coastguard Worker
75*15dc779aSAndroid Build Coastguard Worker    B               ENDRESSCALE
76*15dc779aSAndroid Build Coastguard Worker
77*15dc779aSAndroid Build Coastguard WorkerELIF2_1:
78*15dc779aSAndroid Build Coastguard Worker    RSB             R4, R4, #0
79*15dc779aSAndroid Build Coastguard Worker
80*15dc779aSAndroid Build Coastguard WorkerLOOP2:
81*15dc779aSAndroid Build Coastguard Worker    ADD             R10, R10, R2, LSL #2
82*15dc779aSAndroid Build Coastguard Worker    MOV             R7, R3
83*15dc779aSAndroid Build Coastguard WorkerINNLOOP2:
84*15dc779aSAndroid Build Coastguard Worker    LDR             R11, [R10]
85*15dc779aSAndroid Build Coastguard Worker    SUBS            R7, R7  , #2
86*15dc779aSAndroid Build Coastguard Worker    LDRGE           R5, [R10, #4]
87*15dc779aSAndroid Build Coastguard Worker
88*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R11, ASR R4
89*15dc779aSAndroid Build Coastguard Worker    STR             R11, [R10], #4
90*15dc779aSAndroid Build Coastguard Worker
91*15dc779aSAndroid Build Coastguard Worker    MOVGE           R5, R5, ASR R4
92*15dc779aSAndroid Build Coastguard Worker    STRGE           R5, [R10], #4
93*15dc779aSAndroid Build Coastguard Worker
94*15dc779aSAndroid Build Coastguard Worker    BGT             INNLOOP2
95*15dc779aSAndroid Build Coastguard Worker
96*15dc779aSAndroid Build Coastguard Worker    LDR             R10, [R9], #4
97*15dc779aSAndroid Build Coastguard Worker    SUBS            R6, R6, #1
98*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP2
99*15dc779aSAndroid Build Coastguard Worker
100*15dc779aSAndroid Build Coastguard Worker
101*15dc779aSAndroid Build Coastguard Worker
102*15dc779aSAndroid Build Coastguard Worker
103*15dc779aSAndroid Build Coastguard Worker    B               ENDRESSCALE
104*15dc779aSAndroid Build Coastguard Worker
105*15dc779aSAndroid Build Coastguard WorkerELIF1:
106*15dc779aSAndroid Build Coastguard Worker    ADD             R5, R1, R5, LSL#2
107*15dc779aSAndroid Build Coastguard Worker
108*15dc779aSAndroid Build Coastguard Worker    MOVS            R4, R4
109*15dc779aSAndroid Build Coastguard Worker    BLE             ELIF2_2
110*15dc779aSAndroid Build Coastguard WorkerLOOP3:
111*15dc779aSAndroid Build Coastguard Worker    LDR             R8, [R5], #4
112*15dc779aSAndroid Build Coastguard Worker    ADD             R10, R10, R2, LSL #2
113*15dc779aSAndroid Build Coastguard Worker    ADD             R8, R8, R2, LSL #2
114*15dc779aSAndroid Build Coastguard Worker    BICS            R7, R3, #1
115*15dc779aSAndroid Build Coastguard Worker    BEQ             COUNTODD1
116*15dc779aSAndroid Build Coastguard WorkerINNLOOP3:
117*15dc779aSAndroid Build Coastguard Worker    LDR             R11, [R10]
118*15dc779aSAndroid Build Coastguard Worker    LDR             R1, [R8]
119*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R11, LSL R4
120*15dc779aSAndroid Build Coastguard Worker    MOV             R1, R1, LSL R4
121*15dc779aSAndroid Build Coastguard Worker    STR             R11, [R10], #4
122*15dc779aSAndroid Build Coastguard Worker    STR             R1, [R8], #4
123*15dc779aSAndroid Build Coastguard Worker
124*15dc779aSAndroid Build Coastguard Worker    LDR             R11, [R10]
125*15dc779aSAndroid Build Coastguard Worker    LDR             R1, [R8]
126*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R11, LSL R4
127*15dc779aSAndroid Build Coastguard Worker    MOV             R1, R1, LSL R4
128*15dc779aSAndroid Build Coastguard Worker    STR             R11, [R10], #4
129*15dc779aSAndroid Build Coastguard Worker    STR             R1, [R8], #4
130*15dc779aSAndroid Build Coastguard Worker
131*15dc779aSAndroid Build Coastguard Worker    SUBS            R7, R7  , #2
132*15dc779aSAndroid Build Coastguard Worker    BGT             INNLOOP3
133*15dc779aSAndroid Build Coastguard WorkerCOUNTODD1:
134*15dc779aSAndroid Build Coastguard Worker    BIC             R7, R3, #1
135*15dc779aSAndroid Build Coastguard Worker    CMP             R7, R3
136*15dc779aSAndroid Build Coastguard Worker    BEQ             INNLOOP3END
137*15dc779aSAndroid Build Coastguard Worker
138*15dc779aSAndroid Build Coastguard Worker    LDR             R11, [R10]
139*15dc779aSAndroid Build Coastguard Worker    LDR             R1, [R8]
140*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R11, LSL R4
141*15dc779aSAndroid Build Coastguard Worker    MOV             R1, R1, LSL R4
142*15dc779aSAndroid Build Coastguard Worker    STR             R11, [R10], #4
143*15dc779aSAndroid Build Coastguard Worker    STR             R1, [R8], #4
144*15dc779aSAndroid Build Coastguard Worker
145*15dc779aSAndroid Build Coastguard Worker
146*15dc779aSAndroid Build Coastguard Worker
147*15dc779aSAndroid Build Coastguard WorkerINNLOOP3END:
148*15dc779aSAndroid Build Coastguard Worker
149*15dc779aSAndroid Build Coastguard Worker
150*15dc779aSAndroid Build Coastguard Worker    LDR             R10, [R9], #4
151*15dc779aSAndroid Build Coastguard Worker    SUBS            R6, R6, #1
152*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP3
153*15dc779aSAndroid Build Coastguard Worker    B               ENDRESSCALE
154*15dc779aSAndroid Build Coastguard Worker
155*15dc779aSAndroid Build Coastguard WorkerELIF2_2:
156*15dc779aSAndroid Build Coastguard Worker    RSB             R4, R4, #0
157*15dc779aSAndroid Build Coastguard Worker
158*15dc779aSAndroid Build Coastguard WorkerLOOP4:
159*15dc779aSAndroid Build Coastguard Worker    LDR             R8, [R5], #4
160*15dc779aSAndroid Build Coastguard Worker    ADD             R10, R10, R2, LSL #2
161*15dc779aSAndroid Build Coastguard Worker    ADD             R8, R8, R2, LSL #2
162*15dc779aSAndroid Build Coastguard Worker    BICS            R7, R3, #1
163*15dc779aSAndroid Build Coastguard Worker    BEQ             COUNTODD2
164*15dc779aSAndroid Build Coastguard WorkerINNLOOP4:
165*15dc779aSAndroid Build Coastguard Worker    LDR             R11, [R10]
166*15dc779aSAndroid Build Coastguard Worker    LDR             R1, [R8]
167*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R11, ASR R4
168*15dc779aSAndroid Build Coastguard Worker    MOV             R1, R1, ASR R4
169*15dc779aSAndroid Build Coastguard Worker    STR             R11, [R10], #4
170*15dc779aSAndroid Build Coastguard Worker    STR             R1, [R8], #4
171*15dc779aSAndroid Build Coastguard Worker
172*15dc779aSAndroid Build Coastguard Worker    LDR             R11, [R10]
173*15dc779aSAndroid Build Coastguard Worker    LDR             R1, [R8]
174*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R11, ASR R4
175*15dc779aSAndroid Build Coastguard Worker    MOV             R1, R1, ASR R4
176*15dc779aSAndroid Build Coastguard Worker    STR             R11, [R10], #4
177*15dc779aSAndroid Build Coastguard Worker    STR             R1, [R8], #4
178*15dc779aSAndroid Build Coastguard Worker
179*15dc779aSAndroid Build Coastguard Worker
180*15dc779aSAndroid Build Coastguard Worker    SUBS            R7, R7  , #2
181*15dc779aSAndroid Build Coastguard Worker    BGT             INNLOOP4
182*15dc779aSAndroid Build Coastguard WorkerCOUNTODD2:
183*15dc779aSAndroid Build Coastguard Worker    BIC             R7, R3, #1
184*15dc779aSAndroid Build Coastguard Worker    CMP             R7, R3
185*15dc779aSAndroid Build Coastguard Worker    BEQ             INNLOOP4END
186*15dc779aSAndroid Build Coastguard Worker
187*15dc779aSAndroid Build Coastguard Worker    LDR             R11, [R10]
188*15dc779aSAndroid Build Coastguard Worker    LDR             R1, [R8]
189*15dc779aSAndroid Build Coastguard Worker    MOV             R11, R11, ASR R4
190*15dc779aSAndroid Build Coastguard Worker    MOV             R1, R1, ASR R4
191*15dc779aSAndroid Build Coastguard Worker    STR             R11, [R10], #4
192*15dc779aSAndroid Build Coastguard Worker    STR             R1, [R8], #4
193*15dc779aSAndroid Build Coastguard Worker
194*15dc779aSAndroid Build Coastguard Worker
195*15dc779aSAndroid Build Coastguard WorkerINNLOOP4END:
196*15dc779aSAndroid Build Coastguard Worker    LDR             R10, [R9], #4
197*15dc779aSAndroid Build Coastguard Worker    SUBS            R6, R6, #1
198*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP4
199*15dc779aSAndroid Build Coastguard Worker
200*15dc779aSAndroid Build Coastguard Worker
201*15dc779aSAndroid Build Coastguard WorkerENDRESSCALE:
202*15dc779aSAndroid Build Coastguard Worker    LDMFD           sp!, {r4-r11, r15}
203*15dc779aSAndroid Build Coastguard Worker
204*15dc779aSAndroid Build Coastguard Worker
205*15dc779aSAndroid Build Coastguard Worker
206