xref: /aosp_15_r20/external/libxaac/decoder/armv7/ixheaacd_apply_rot.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_apply_rot_armv7
25*15dc779aSAndroid Build Coastguard Worker
26*15dc779aSAndroid Build Coastguard Workerixheaacd_apply_rot_armv7:
27*15dc779aSAndroid Build Coastguard Worker    STMFD           SP!, {R4-R12, R14}
28*15dc779aSAndroid Build Coastguard Worker    MOVW            R5, #0x59e
29*15dc779aSAndroid Build Coastguard Worker    MOV             R4, #22
30*15dc779aSAndroid Build Coastguard Worker    ADD             R11, R0, R5
31*15dc779aSAndroid Build Coastguard WorkerLOOP1:
32*15dc779aSAndroid Build Coastguard Worker    LDRSH           R5, [R11, #-98]
33*15dc779aSAndroid Build Coastguard Worker    LDRSH           R6, [R11, #94]
34*15dc779aSAndroid Build Coastguard Worker    LDRSH           R7, [R11, #-96]
35*15dc779aSAndroid Build Coastguard Worker    LDRSH           R8, [R11, #96]
36*15dc779aSAndroid Build Coastguard Worker    ADD             R9, R5, R6
37*15dc779aSAndroid Build Coastguard Worker    STRH            R9, [R11, #-98]
38*15dc779aSAndroid Build Coastguard Worker    ADD             R10, R7, R8
39*15dc779aSAndroid Build Coastguard Worker    STRH            R10, [R11, #-96]
40*15dc779aSAndroid Build Coastguard Worker
41*15dc779aSAndroid Build Coastguard Worker
42*15dc779aSAndroid Build Coastguard Worker    LDRSH           R5, [R11, #-2]
43*15dc779aSAndroid Build Coastguard Worker    LDRSH           R6, [R11, #190]
44*15dc779aSAndroid Build Coastguard Worker    LDRSH           R7, [R11]
45*15dc779aSAndroid Build Coastguard Worker    LDRSH           R8, [R11, #192]
46*15dc779aSAndroid Build Coastguard Worker    ADD             R9, R5, R6
47*15dc779aSAndroid Build Coastguard Worker    STRH            R9, [R11, #-2]
48*15dc779aSAndroid Build Coastguard Worker    ADD             R10, R7, R8
49*15dc779aSAndroid Build Coastguard Worker    STRH            R10, [R11], #4
50*15dc779aSAndroid Build Coastguard Worker
51*15dc779aSAndroid Build Coastguard Worker    LDRSH           R5, [R11, #-98]
52*15dc779aSAndroid Build Coastguard Worker    LDRSH           R6, [R11, #94]
53*15dc779aSAndroid Build Coastguard Worker    LDRSH           R7, [R11, #-96]
54*15dc779aSAndroid Build Coastguard Worker    LDRSH           R8, [R11, #96]
55*15dc779aSAndroid Build Coastguard Worker    ADD             R9, R5, R6
56*15dc779aSAndroid Build Coastguard Worker    STRH            R9, [R11, #-98]
57*15dc779aSAndroid Build Coastguard Worker    ADD             R10, R7, R8
58*15dc779aSAndroid Build Coastguard Worker    STRH            R10, [R11, #-96]
59*15dc779aSAndroid Build Coastguard Worker
60*15dc779aSAndroid Build Coastguard Worker    SUBS            R4, R4, #2
61*15dc779aSAndroid Build Coastguard Worker
62*15dc779aSAndroid Build Coastguard Worker    LDRSH           R5, [R11, #-2]
63*15dc779aSAndroid Build Coastguard Worker    LDRSH           R6, [R11, #190]
64*15dc779aSAndroid Build Coastguard Worker    LDRSH           R7, [R11]
65*15dc779aSAndroid Build Coastguard Worker    LDRSH           R8, [R11, #192]
66*15dc779aSAndroid Build Coastguard Worker    ADD             R9, R5, R6
67*15dc779aSAndroid Build Coastguard Worker    STRH            R9, [R11, #-2]
68*15dc779aSAndroid Build Coastguard Worker    ADD             R10, R7, R8
69*15dc779aSAndroid Build Coastguard Worker    STRH            R10, [R11], #4
70*15dc779aSAndroid Build Coastguard Worker
71*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP1
72*15dc779aSAndroid Build Coastguard Worker
73*15dc779aSAndroid Build Coastguard Worker    MOVW            R4, #0x53C
74*15dc779aSAndroid Build Coastguard Worker    LDR             R12, [R0, #44]
75*15dc779aSAndroid Build Coastguard Worker    ADD             R11, R0, R4
76*15dc779aSAndroid Build Coastguard Worker    MOV             R4, #10
77*15dc779aSAndroid Build Coastguard Worker
78*15dc779aSAndroid Build Coastguard WorkerLOOP2:
79*15dc779aSAndroid Build Coastguard Worker
80*15dc779aSAndroid Build Coastguard Worker    LDR             R5, [R12]
81*15dc779aSAndroid Build Coastguard Worker    LDR             R7, [R11], #4
82*15dc779aSAndroid Build Coastguard Worker    LDR             R6, [R12, #0x80]
83*15dc779aSAndroid Build Coastguard Worker    LDR             R8, [R11, #92]
84*15dc779aSAndroid Build Coastguard Worker
85*15dc779aSAndroid Build Coastguard Worker    SMULWB          R9, R5, R7
86*15dc779aSAndroid Build Coastguard Worker    SMULWB          R10, R6, R8
87*15dc779aSAndroid Build Coastguard Worker    SMULWT          R14, R5, R7
88*15dc779aSAndroid Build Coastguard Worker
89*15dc779aSAndroid Build Coastguard Worker    QADD            R5, R9, R10
90*15dc779aSAndroid Build Coastguard Worker    SMULWT          R6, R6, R8
91*15dc779aSAndroid Build Coastguard Worker
92*15dc779aSAndroid Build Coastguard Worker    MOV             R5, R5, LSL #2
93*15dc779aSAndroid Build Coastguard Worker    QADD            R14, R14, R6
94*15dc779aSAndroid Build Coastguard Worker    STR             R5, [R12], #4
95*15dc779aSAndroid Build Coastguard Worker    MOV             R14, R14, LSL #2
96*15dc779aSAndroid Build Coastguard Worker    STR             R14, [R12, #0x7c]
97*15dc779aSAndroid Build Coastguard Worker
98*15dc779aSAndroid Build Coastguard Worker    LDR             R5, [R12, #0x3c]
99*15dc779aSAndroid Build Coastguard Worker    LDR             R6, [R12, #0xbc]
100*15dc779aSAndroid Build Coastguard Worker
101*15dc779aSAndroid Build Coastguard Worker    SMULWB          R9, R5, R7
102*15dc779aSAndroid Build Coastguard Worker    SMULWB          R10, R6, R8
103*15dc779aSAndroid Build Coastguard Worker    SMULWT          R14, R5, R7
104*15dc779aSAndroid Build Coastguard Worker
105*15dc779aSAndroid Build Coastguard Worker    QADD            R5, R9, R10
106*15dc779aSAndroid Build Coastguard Worker
107*15dc779aSAndroid Build Coastguard Worker    SMULWT          R6, R6, R8
108*15dc779aSAndroid Build Coastguard Worker
109*15dc779aSAndroid Build Coastguard Worker    MOV             R5, R5, LSL #2
110*15dc779aSAndroid Build Coastguard Worker    QADD            R14, R14, R6
111*15dc779aSAndroid Build Coastguard Worker    STR             R5, [R12, #0x3c]
112*15dc779aSAndroid Build Coastguard Worker    MOV             R14, R14, LSL #2
113*15dc779aSAndroid Build Coastguard Worker    STR             R14, [R12, #0xbc]
114*15dc779aSAndroid Build Coastguard Worker
115*15dc779aSAndroid Build Coastguard Worker    SUBS            R4, R4, #1
116*15dc779aSAndroid Build Coastguard Worker
117*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP2
118*15dc779aSAndroid Build Coastguard Worker
119*15dc779aSAndroid Build Coastguard Worker    MOVW            R11, #0x6c2
120*15dc779aSAndroid Build Coastguard Worker    MOVW            R5, #0x564
121*15dc779aSAndroid Build Coastguard Worker    LDRSH           R14, [R0, R11]
122*15dc779aSAndroid Build Coastguard Worker    ADD             R11, R0, R5
123*15dc779aSAndroid Build Coastguard Worker    LDR             R5, [SP, #44]
124*15dc779aSAndroid Build Coastguard Worker    SUB             SP, SP, #512
125*15dc779aSAndroid Build Coastguard Worker    MOV             R12, SP
126*15dc779aSAndroid Build Coastguard Worker    LDR             R6, [R5, #12]
127*15dc779aSAndroid Build Coastguard Worker    MOV             R4, #12
128*15dc779aSAndroid Build Coastguard Worker    ADD             R6, R6, #0xb8
129*15dc779aSAndroid Build Coastguard Worker
130*15dc779aSAndroid Build Coastguard WorkerLOOP3:
131*15dc779aSAndroid Build Coastguard Worker    LDRSH           R5, [R6], #2
132*15dc779aSAndroid Build Coastguard Worker    LDRSH           R7, [R6, #-4]
133*15dc779aSAndroid Build Coastguard Worker    LDR             R10, [R11, #96]
134*15dc779aSAndroid Build Coastguard Worker    LDR             R9, [R11], #4
135*15dc779aSAndroid Build Coastguard Worker    CMP             R14, R5
136*15dc779aSAndroid Build Coastguard Worker    SUB             R8, R14, R7
137*15dc779aSAndroid Build Coastguard Worker    SUBGT           R8, R5, R7
138*15dc779aSAndroid Build Coastguard Worker    ADD             R5, R12, R7, LSL #3
139*15dc779aSAndroid Build Coastguard Worker
140*15dc779aSAndroid Build Coastguard WorkerLOOP3INN1:
141*15dc779aSAndroid Build Coastguard Worker    STR             R10, [R5, #4]
142*15dc779aSAndroid Build Coastguard Worker    STR             R9, [R5], #8
143*15dc779aSAndroid Build Coastguard Worker    SUBS            R8, R8, #1
144*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP3INN1
145*15dc779aSAndroid Build Coastguard Worker
146*15dc779aSAndroid Build Coastguard Worker    SUBS            R4, R4, #1
147*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP3
148*15dc779aSAndroid Build Coastguard Worker
149*15dc779aSAndroid Build Coastguard Worker    MOV             R4, #3
150*15dc779aSAndroid Build Coastguard Worker    LDR             R12, [R0, #44]
151*15dc779aSAndroid Build Coastguard Worker    LDR             R9, [SP, #48+512]
152*15dc779aSAndroid Build Coastguard Worker    LDR             R0, [SP, #40+512]
153*15dc779aSAndroid Build Coastguard Worker    STR             R14, [SP, #-4]!
154*15dc779aSAndroid Build Coastguard Worker
155*15dc779aSAndroid Build Coastguard WorkerLOOP4:
156*15dc779aSAndroid Build Coastguard Worker    LDR             R5, [R12], #4
157*15dc779aSAndroid Build Coastguard Worker    LDR             R6, [R12, #0x3c]
158*15dc779aSAndroid Build Coastguard Worker    LDR             R7, [R12, #0x7c]
159*15dc779aSAndroid Build Coastguard Worker    LDRSH           R10, [R9], #2
160*15dc779aSAndroid Build Coastguard Worker    LDR             R8, [R12, #0xbc]
161*15dc779aSAndroid Build Coastguard Worker    MOV             R11, #5
162*15dc779aSAndroid Build Coastguard Worker    CMP             R10, #6
163*15dc779aSAndroid Build Coastguard Worker    SUBLT           R11, R10, #1
164*15dc779aSAndroid Build Coastguard Worker
165*15dc779aSAndroid Build Coastguard WorkerLOOP4INN1:
166*15dc779aSAndroid Build Coastguard Worker    LDR             R10, [R12], #4
167*15dc779aSAndroid Build Coastguard Worker    LDR             R14, [R12, #0x3C]
168*15dc779aSAndroid Build Coastguard Worker    QADD            R5, R5, R10
169*15dc779aSAndroid Build Coastguard Worker    QADD            R6, R6, R14
170*15dc779aSAndroid Build Coastguard Worker    LDR             R10, [R12, #0x7C]
171*15dc779aSAndroid Build Coastguard Worker    LDR             R14, [R12, #0xBC]
172*15dc779aSAndroid Build Coastguard Worker    QADD            R7, R7, R10
173*15dc779aSAndroid Build Coastguard Worker    QADD            R8, R8, R14
174*15dc779aSAndroid Build Coastguard Worker    SUBS            R11, R11, #1
175*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP4INN1
176*15dc779aSAndroid Build Coastguard Worker
177*15dc779aSAndroid Build Coastguard Worker    STR             R5, [R1], #4
178*15dc779aSAndroid Build Coastguard Worker    STR             R6, [R2], #4
179*15dc779aSAndroid Build Coastguard Worker    STR             R7, [R3], #4
180*15dc779aSAndroid Build Coastguard Worker    STR             R8, [R0], #4
181*15dc779aSAndroid Build Coastguard Worker    SUBS            R4, R4, #1
182*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP4
183*15dc779aSAndroid Build Coastguard Worker
184*15dc779aSAndroid Build Coastguard Worker    LDR             R14, [SP]
185*15dc779aSAndroid Build Coastguard Worker    ADD             R11, SP, #28
186*15dc779aSAndroid Build Coastguard Worker    SUB             R4, R14, #3
187*15dc779aSAndroid Build Coastguard Worker
188*15dc779aSAndroid Build Coastguard WorkerLOOP5:
189*15dc779aSAndroid Build Coastguard Worker    LDR             R5, [R1]
190*15dc779aSAndroid Build Coastguard Worker    LDR             R7, [R11], #4
191*15dc779aSAndroid Build Coastguard Worker    LDR             R6, [R3]
192*15dc779aSAndroid Build Coastguard Worker    LDR             R8, [R11], #4
193*15dc779aSAndroid Build Coastguard Worker
194*15dc779aSAndroid Build Coastguard Worker    SMULWB          R9, R5, R7
195*15dc779aSAndroid Build Coastguard Worker    SMULWB          R10, R6, R8
196*15dc779aSAndroid Build Coastguard Worker    SMULWT          R14, R5, R7
197*15dc779aSAndroid Build Coastguard Worker
198*15dc779aSAndroid Build Coastguard Worker    QADD            R5, R9, R10
199*15dc779aSAndroid Build Coastguard Worker    SMULWT          R6, R6, R8
200*15dc779aSAndroid Build Coastguard Worker
201*15dc779aSAndroid Build Coastguard Worker    MOV             R5, R5, LSL #2
202*15dc779aSAndroid Build Coastguard Worker    QADD            R14, R14, R6
203*15dc779aSAndroid Build Coastguard Worker    STR             R5, [R1], #4
204*15dc779aSAndroid Build Coastguard Worker    MOV             R14, R14, LSL #2
205*15dc779aSAndroid Build Coastguard Worker    STR             R14, [R3], #4
206*15dc779aSAndroid Build Coastguard Worker
207*15dc779aSAndroid Build Coastguard Worker    SUBS            R4, R4, #1
208*15dc779aSAndroid Build Coastguard Worker
209*15dc779aSAndroid Build Coastguard Worker    LDR             R5, [R2]
210*15dc779aSAndroid Build Coastguard Worker    LDR             R6, [R0]
211*15dc779aSAndroid Build Coastguard Worker
212*15dc779aSAndroid Build Coastguard Worker    SMULWB          R9, R5, R7
213*15dc779aSAndroid Build Coastguard Worker    SMULWB          R10, R6, R8
214*15dc779aSAndroid Build Coastguard Worker    SMULWT          R14, R5, R7
215*15dc779aSAndroid Build Coastguard Worker
216*15dc779aSAndroid Build Coastguard Worker    QADD            R5, R9, R10
217*15dc779aSAndroid Build Coastguard Worker
218*15dc779aSAndroid Build Coastguard Worker    SMULWT          R6, R6, R8
219*15dc779aSAndroid Build Coastguard Worker
220*15dc779aSAndroid Build Coastguard Worker    MOV             R5, R5, LSL #2
221*15dc779aSAndroid Build Coastguard Worker    QADD            R14, R14, R6
222*15dc779aSAndroid Build Coastguard Worker    STR             R5, [R2], #4
223*15dc779aSAndroid Build Coastguard Worker    MOV             R14, R14, LSL #2
224*15dc779aSAndroid Build Coastguard Worker    STR             R14, [R0], #4
225*15dc779aSAndroid Build Coastguard Worker
226*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP5
227*15dc779aSAndroid Build Coastguard Worker    ADD             SP, SP, #516
228*15dc779aSAndroid Build Coastguard Worker    LDMFD           sp!, {r4-r12, r15}
229*15dc779aSAndroid Build Coastguard Worker
230