pvmp3_mdct_18_gcc.s revision 9a2c14b2c96625d5be73e1a7627f5d2a3091c4a2
1@ ------------------------------------------------------------------
2@ Copyright (C) 1998-2009 PacketVideo
3@
4@ Licensed under the Apache License, Version 2.0 (the "License");
5@ you may not use this file except in compliance with the License.
6@ You may obtain a copy of the License at
7@
8@      http://www.apache.org/licenses/LICENSE-2.0
9@
10@ Unless required by applicable law or agreed to in writing, software
11@ distributed under the License is distributed on an "AS IS" BASIS,
12@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13@ express or implied.
14@ See the License for the specific language governing permissions
15@ and limitations under the License.
16@ -------------------------------------------------------------------
17
18@
19@
20@   Filename: pvmp3_dct_18_gcc.s
21@
22@------------------------------------------------------------------------------
23@ REVISION HISTORY
24@
25@
26@ Who:                                   Date: MM/DD/YYYY
27@ Description:
28@
29@------------------------------------------------------------------------------
30
31.arm
32
33.align 4
34
35.text
36
37.extern  pvmp3_dct_9
38
39@------------------------------------------------------------------------------
40
41.global pvmp3_mdct_18
42
43pvmp3_mdct_18:
44        stmfd    sp!,{r4-r11,lr}
45        mov      r7,r2
46        adr      r2,constdata$1
47        mov      r6,r1
48        add      r3,r2,#0x24
49        add      r12,r3,#0x44
50        add      r1,r0,#0x44
51        mov      r5,r0
52
53@    for ( i=9@ i!=0@ i--)
54@    {
55
56        mov      r4,#9
57Loop_1:
58
59@       tmp  = *(pt_vec)
60@		tmp1 = *(pt_vec_o)
61
62        ldr      lr,[r0]		@@ tmp  == lr
63        ldr      r8,[r3],#4		@@ tmp1 == r8
64
65@        tmp  = fxp_mul32_Q32( tmp<<1,  *(pt_cos++  ))
66@        tmp1 = fxp_mul32_Q27( tmp1, *(pt_cos_x--))
67
68        mov      lr,lr,lsl #1
69        smull    r10,lr,r8,lr
70        ldr      r8,[r12],#-4
71        ldr      r9,[r1]
72        subs     r4,r4,#1
73        smull    r9,r10,r8,r9
74        mov      r8,r9,lsr #27
75        add      r8,r8,r10,lsl #5
76
77@        *(pt_vec++)   =   tmp + tmp1
78@        *(pt_vec_o--) = fxp_mul32_Q28( (tmp - tmp1), *(pt_cos_split++))
79
80        add      r9,lr,r8
81        sub      r8,lr,r8
82        ldr      lr,[r2],#4
83        str      r9,[r0],#4
84        smull    r8,r9,lr,r8
85        mov      lr,r8,lsr #28
86        add      lr,lr,r9,lsl #4
87        str      lr,[r1],#-4
88        bne      Loop_1
89
90@		}
91
92        mov      r0,r5			@@ r0 = vec
93        bl       pvmp3_dct_9
94        add      r0,r5,#0x24	@@ r0 = &vec[9]
95        bl       pvmp3_dct_9
96
97        ldr      r0,[r5,#0x20]
98        ldr      r2,[r5,#0x40]
99        str      r0,[r5,#0x40]
100        ldr      r0,[r5,#0x1c]
101        ldr      r3,[r5,#0x38]
102        str      r0,[r5,#0x38]
103        ldr      r1,[r5,#0x18]
104        ldr      r0,[r5,#0x30]
105        str      r1,[r5,#0x30]
106        ldr      r12,[r5,#0x14]
107        ldr      r1,[r5,#0x28]
108        str      r12,[r5,#0x28]
109        ldr      r12,[r5,#0x10]
110        str      r12,[r5,#0x20]
111        ldr      r12,[r5,#0xc]
112        str      r12,[r5,#0x18]
113        ldr      r12,[r5,#8]
114        str      r12,[r5,#0x10]
115        ldr      r12,[r5,#4]
116        str      r12,[r5,#8]
117        ldr      r12,[r5,#0x24]
118        sub      r12,r12,r1
119        str      r12,[r5,#4]
120        ldr      r12,[r5,#0x2c]
121        sub      r1,r12,r1
122        str      r1,[r5,#0xc]
123        sub      r1,r12,r0
124        str      r1,[r5,#0x14]
125        ldr      r1,[r5,#0x34]
126        sub      r0,r1,r0
127        str      r0,[r5,#0x1c]
128        sub      r0,r1,r3
129        str      r0,[r5,#0x24]
130        ldr      r1,[r5,#0x3c]
131        sub      r3,r1,r3
132        sub      r1,r1,r2
133        str      r1,[r5,#0x34]
134        str      r3,[r5,#0x2c]
135        ldr      r1,[r5,#0x44]
136        sub      r1,r1,r2
137        str      r1,[r5,#0x3c]
138        ldr      r12,[r5,#0]
139
140Loop_2:
141        add      r1,r5,r4,lsl #2
142        ldr      r2,[r1,#0x28]
143        ldr      r3,[r6,r4,lsl #2]
144        add      r0,r0,r2
145        str      r0,[r1,#0x28]
146        ldr      lr,[r7,r4,lsl #2]
147        ldr      r1,[r1,#4]
148        smlal    r0,r3,lr,r0
149        mov      r0,r2
150        add      r2,r12,r1
151        rsb      r2,r2,#0
152        str      r3,[r5,r4,lsl #2]
153        str      r2,[r6,r4,lsl #2]
154        add      r4,r4,#1
155        cmp      r4,#6
156        mov      r12,r1
157
158        blt      Loop_2
159
160        ldr      r1,[r5,#0x40]
161        ldr      r2,[r6,#0x18]
162        add      r3,r0,r1
163        str      r3,[r5,#0x40]
164        ldr      lr,[r7,r4,lsl #2]
165        mov      r3,r3,lsl #1
166        ldr      r0,[r5,#0x1c]
167        smlal    r3,r2,lr,r3
168        add      r3,r12,r0
169        str      r2,[r5,#0x18]
170        ldr      r2,[r6,#0x1c]
171        rsb      r3,r3,#0
172        str      r3,[r6,#0x18]
173        ldr      r3,[r5,#0x20]
174        add      r0,r3,r0
175        rsb      r0,r0,#0
176        str      r0,[r6,#0x1c]
177        ldr      r3,[r5,#0x44]
178        ldr      r0,[r6,#0x20]
179        add      r3,r3,r1
180        mov      r1,r2
181        ldr      r10,[r7,#0x1c]
182        mov      r2,r3,lsl #1
183        smlal    r12,r1,r10,r2
184        str      r1,[r5,#0x1c]
185        ldr      r1,[r5,#0x20]
186        ldr      r3,[r5,#0x24]
187        add      r1,r1,r3
188        rsb      r1,r1,#0
189        str      r1,[r6,#0x20]
190        ldr      r1,[r5,#0x44]
191        ldr      r3,[r7,#0x20]
192        mov      r1,r1,lsl #1
193        smlal    r12,r0,r3,r1
194        ldr      lr,[r7,#0x24]
195        ldr      r3,[r6,#0x24]
196        str      r0,[r5,#0x20]
197        smlal    r1,r3,lr,r1
198        ldr      r0,[r6,#0x40]
199        ldr      r12,[r6,#0x44]
200        str      r3,[r5,#0x24]
201        ldr      r1,[r5,#0x28]
202        ldr      r3,[r7,#0x44]
203        mov      r1,r1,lsl #1
204        smlal    r1,r12,r3,r1
205        ldr      r1,[r5,#0x40]
206        str      r12,[r5,#0x44]
207        rsb      r8,r1,#0
208        str      r8,[r5,#0x28]
209        ldr      r1,[r5,#0x2c]
210        ldr      r3,[r7,#0x40]
211        mov      r1,r1,lsl #1
212        smlal    r1,r0,r3,r1
213        str      r0,[r5,#0x40]
214        ldr      r0,[r5,#0x3c]
215        ldr      r1,[r6,#0x38]
216        ldr      r3,[r6,#0x3c]
217        rsb      r9,r0,#0
218        str      r9,[r5,#0x2c]
219        ldr      r0,[r5,#0x30]
220        ldr      r12,[r7,#0x3c]
221        mov      r0,r0,lsl #1
222        smlal    r0,r3,r12,r0
223        str      r3,[r5,#0x3c]
224        ldr      r0,[r5,#0x38]
225        rsb      r0,r0,#0
226        str      r0,[r5,#0x30]
227        ldr      r3,[r5,#0x34]
228        ldr      r12,[r7,#0x38]
229        mov      r3,r3,lsl #1
230        smlal    r3,r1,r12,r3
231        mov      r0,r0,lsl #1
232        str      r1,[r5,#0x38]
233        ldr      r4,[r7,#0x34]
234        ldr      r1,[r6,#0x34]
235        ldr      r3,[r6,#0x30]
236        smlal    r0,r1,r4,r0
237        ldr      r12,[r6,#0x2c]
238        ldr      lr,[r6,#0x28]
239        str      r1,[r5,#0x34]
240        ldr      r1,[r7,#0x30]
241        mov      r0,r9,lsl #1
242        smlal    r0,r3,r1,r0
243        mov      r0,r8,lsl #1
244        ldr      r1,[r7,#0x2c]
245        str      r3,[r5,#0x30]
246        smlal    r0,r12,r1,r0
247        ldr      r0,[r7,#0x28]
248        str      r12,[r5,#0x2c]
249        smlal    r2,lr,r0,r2
250        str      lr,[r5,#0x28]
251        ldr      r1,[r6,#4]
252        ldr      r12,[r7,#0x48]
253        mov      r2,r1,lsl #1
254        ldr      r1,[r6,#0x20]
255        ldr      r0,[r6,#0]
256        mov      r1,r1,lsl #1
257        smull    r4,lr,r12,r1
258        ldr      r3,[r6,#0x1c]
259        str      lr,[r6,#0]
260        ldr      r12,[r7,#0x4c]
261        mov      r3,r3,lsl #1
262        smull    r4,lr,r12,r3
263        mov      r0,r0,lsl #1
264        ldr      r12,[r7,#0x64]
265        str      lr,[r6,#4]
266        smull    r4,lr,r12,r2
267        ldr      r12,[r7,#0x68]
268        str      lr,[r6,#0x1c]
269        smull    r4,lr,r12,r0
270        ldr      r12,[r7,#0x6c]
271        str      lr,[r6,#0x20]
272        smull    lr,r0,r12,r0
273        ldr      r12,[r7,#0x70]
274        str      r0,[r6,#0x24]
275        smull    r0,r2,r12,r2
276        ldr      r0,[r7,#0x88]
277        str      r2,[r6,#0x28]
278        smull    r3,r2,r0,r3
279        ldr      r0,[r7,#0x8c]
280        str      r2,[r6,#0x40]
281        smull    r2,r1,r0,r1
282        str      r1,[r6,#0x44]
283        ldr      r0,[r6,#0x18]
284        ldr      lr,[r7,#0x50]
285        mov      r1,r0,lsl #1
286        ldr      r0,[r6,#0x14]
287        smull    r5,r4,lr,r1
288        mov      r3,r0,lsl #1
289        ldr      r0,[r6,#0x10]
290        mov      r12,r0,lsl #1
291        ldr      r0,[r6,#0xc]
292        mov      r2,r0,lsl #1
293        ldr      r0,[r6,#8]
294        str      r4,[r6,#8]
295        ldr      lr,[r7,#0x54]
296        mov      r0,r0,lsl #1
297        smull    r5,r4,lr,r3
298        ldr      lr,[r7,#0x58]
299        str      r4,[r6,#0xc]
300        smull    r5,r4,lr,r12
301        ldr      lr,[r7,#0x5c]
302        str      r4,[r6,#0x10]
303        smull    r5,r4,lr,r2
304        ldr      lr,[r7,#0x60]
305        str      r4,[r6,#0x14]
306        smull    r5,r4,lr,r0
307        ldr      lr,[r7,#0x74]
308        str      r4,[r6,#0x18]
309        smull    r4,r0,lr,r0
310        ldr      lr,[r7,#0x78]
311        str      r0,[r6,#0x2c]
312        smull    r0,r2,lr,r2
313        ldr      r0,[r7,#0x7c]
314        str      r2,[r6,#0x30]
315        smull    r12,r2,r0,r12
316        ldr      r0,[r7,#0x80]
317        str      r2,[r6,#0x34]
318        smull    r3,r2,r0,r3
319        ldr      r0,[r7,#0x84]
320        str      r2,[r6,#0x38]
321        smull    r2,r1,r0,r1
322        str      r1,[r6,#0x3c]
323        ldmfd    sp!,{r4-r11,pc}
324
325@------------------------------------------------------------------------------
326
327constdata$1:
328cosTerms_dct18:
329        .word      0x0807d2b0
330        .word      0x08483ee0
331        .word      0x08d3b7d0
332        .word      0x09c42570
333        .word      0x0b504f30
334        .word      0x0df29440
335        .word      0x12edfb20
336        .word      0x1ee8dd40
337        .word      0x5bca2a00
338cosTerms_1_ov_cos_phi:
339        .word      0x400f9c00
340        .word      0x408d6080
341        .word      0x418dcb80
342        .word      0x431b1a00
343        .word      0x4545ea00
344        .word      0x48270680
345        .word      0x4be25480
346        .word      0x50ab9480
347        .word      0x56ce4d80
348        .word      0x05ebb630
349        .word      0x06921a98
350        .word      0x0771d3a8
351        .word      0x08a9a830
352        .word      0x0a73d750
353        .word      0x0d4d5260
354        .word      0x127b1ca0
355        .word      0x1ea52b40
356        .word      0x5bb3cc80
357
358