Fix some greedy sed changes in imported code. Also provide a sys/types.h for compatib...
[kugel-rb.git] / apps / codecs / libmad / synth_full_arm.S
blob419bf2b96ef656ed57a6800e9245cc12d966f632
1 /***************************************************************************
2  *             __________               __   ___.
3  *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
4  *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
5  *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
6  *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
7  *                     \/            \/     \/    \/            \/
8  * $Id$
9  *
10  * Copyright (C) 2007 by Tomasz Malesinski
11  *
12  * This program is free software; you can redistribute it and/or
13  * modify it under the terms of the GNU General Public License
14  * as published by the Free Software Foundation; either version 2
15  * of the License, or (at your option) any later version.
16  *
17  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18  * KIND, either express or implied.
19  *
20  ****************************************************************************/
22 #include "mad_iram.h"
24     .section    ICODE_SECTION_MPA_ARM,"ax",%progbits
26     .global synth_full1
27     .global synth_full2
29     ;; r0 = pcm
30     ;; r1 = fo
31     ;; r2 = fe
32     ;; r3 = D0ptr
33     ;; r4 = D1ptr
34 synth_full1:
35     stmdb   sp!, {r4-r11, lr}
36     ldr     r4, [sp, #36]
37     ldr     r5, =synth_full_sp
38     str     sp, [r5]
39     mov     r5, #15
40     add     r2, r2, #32
41 .l:
42     add     r3, r3, #128
43     add     r4, r4, #128
44     ldmia   r1!, {r10, r11, r12, lr}
45     ldr     r7, [r3, #4]
46     smull   r6, r7, r10, r7
47     ldr     r9, [r4, #120]
48     smull   r8, r9, r10, r9
50     ldr     r10, [r3, #60]
51     smlal   r6, r7, r11, r10
52     ldr     r10, [r3, #52]
53     smlal   r6, r7, r12, r10
54     ldr     r10, [r3, #44]
55     smlal   r6, r7, lr, r10
57     ldr     r10, [r4, #64]
58     smlal   r8, r9, r11, r10
59     ldr     r10, [r4, #72]
60     smlal   r8, r9, r12, r10
61     ldr     r10, [r4, #80]
62     smlal   r8, r9, lr, r10
64     ldmia   r1!, {r11, r12, sp, lr}
65     ldr     r10, [r3, #36]
66     smlal   r6, r7, r11, r10
67     ldr     r10, [r3, #28]
68     smlal   r6, r7, r12, r10
69     ldr     r10, [r3, #20]
70     smlal   r6, r7, sp, r10
71     ldr     r10, [r3, #12]
72     smlal   r6, r7, lr, r10
74     ldr     r10, [r4, #88]
75     smlal   r8, r9, r11, r10
76     ldr     r10, [r4, #96]
77     smlal   r8, r9, r12, r10
78     ldr     r10, [r4, #104]
79     smlal   r8, r9, sp, r10
80     ldr     r10, [r4, #112]
81     smlal   r8, r9, lr, r10
82     
83     rsbs    r6, r6, #0
84     rsc     r7, r7, #0
86     ldmia   r2!, {r11, r12, sp, lr}
88     ldr     r10, [r3, #0]
89     smlal   r6, r7, r11, r10
90     ldr     r10, [r3, #56]
91     smlal   r6, r7, r12, r10
92     ldr     r10, [r3, #48]
93     smlal   r6, r7, sp, r10
94     ldr     r10, [r3, #40]
95     smlal   r6, r7, lr, r10
97     ldr     r10, [r4, #60]
98     smlal   r8, r9, r11, r10
99     ldr     r10, [r4, #68]
100     smlal   r8, r9, r12, r10
101     ldr     r10, [r4, #76]
102     smlal   r8, r9, sp, r10
103     ldr     r10, [r4, #84]
104     smlal   r8, r9, lr, r10
106     ldmia   r2!, {r11, r12, sp, lr}
107     ldr     r10, [r3, #32]
108     smlal   r6, r7, r11, r10
109     ldr     r10, [r3, #24]
110     smlal   r6, r7, r12, r10
111     ldr     r10, [r3, #16]
112     smlal   r6, r7, sp, r10
113     ldr     r10, [r3, #8]
114     smlal   r6, r7, lr, r10
116     ldr     r10, [r4, #92]
117     smlal   r8, r9, r11, r10
118     ldr     r10, [r4, #100]
119     smlal   r8, r9, r12, r10
120     ldr     r10, [r4, #108]
121     smlal   r8, r9, sp, r10
122     ldr     r10, [r4, #116]
123     smlal   r8, r9, lr, r10
125     movs    r6, r6, lsr #16
126     adc     r6, r6, r7, lsl #16
127     str     r6, [r0, -r5, lsl #2]
129     movs    r8, r8, lsr #16
130     adc     r8, r8, r9, lsl #16
131     str     r8, [r0, r5, lsl #2]
132         
133     subs    r5, r5, #1
134     bne     .l
136     ldr     r5, =synth_full_sp
137     ldr     sp, [r5]
138     ldmia   sp!, {r4-r11, pc}
140 synth_full2:
141     stmdb   sp!, {r4-r11, lr}
142     ldr     r4, [sp, #36]
143     ldr     r5, =synth_full_sp
144     str     sp, [r5]
145     mov     r5, #15
146     add     r2, r2, #32
147 .l2:
148     add     r3, r3, #128
149     add     r4, r4, #128
150     ldmia   r1!, {r10, r11, r12, lr}
151     ldr     r7, [r3, #0]
152     smull   r6, r7, r10, r7
153     ldr     r9, [r4, #60]
154     smull   r8, r9, r10, r9
156     ldr     r10, [r3, #56]
157     smlal   r6, r7, r11, r10
158     ldr     r10, [r3, #48]
159     smlal   r6, r7, r12, r10
160     ldr     r10, [r3, #40]
161     smlal   r6, r7, lr, r10
163     ldr     r10, [r4, #68]
164     smlal   r8, r9, r11, r10
165     ldr     r10, [r4, #76]
166     smlal   r8, r9, r12, r10
167     ldr     r10, [r4, #84]
168     smlal   r8, r9, lr, r10
170     ldmia   r1!, {r11, r12, sp, lr}
171     ldr     r10, [r3, #32]
172     smlal   r6, r7, r11, r10
173     ldr     r10, [r3, #24]
174     smlal   r6, r7, r12, r10
175     ldr     r10, [r3, #16]
176     smlal   r6, r7, sp, r10
177     ldr     r10, [r3, #8]
178     smlal   r6, r7, lr, r10
180     ldr     r10, [r4, #92]
181     smlal   r8, r9, r11, r10
182     ldr     r10, [r4, #100]
183     smlal   r8, r9, r12, r10
184     ldr     r10, [r4, #108]
185     smlal   r8, r9, sp, r10
186     ldr     r10, [r4, #116]
187     smlal   r8, r9, lr, r10
188     
189     rsbs    r6, r6, #0
190     rsc     r7, r7, #0
192     ldmia   r2!, {r11, r12, sp, lr}
194     ldr     r10, [r3, #4]
195     smlal   r6, r7, r11, r10
196     ldr     r10, [r3, #60]
197     smlal   r6, r7, r12, r10
198     ldr     r10, [r3, #52]
199     smlal   r6, r7, sp, r10
200     ldr     r10, [r3, #44]
201     smlal   r6, r7, lr, r10
203     ldr     r10, [r4, #120]
204     smlal   r8, r9, r11, r10
205     ldr     r10, [r4, #64]
206     smlal   r8, r9, r12, r10
207     ldr     r10, [r4, #72]
208     smlal   r8, r9, sp, r10
209     ldr     r10, [r4, #80]
210     smlal   r8, r9, lr, r10
212     ldmia   r2!, {r11, r12, sp, lr}
213     ldr     r10, [r3, #36]
214     smlal   r6, r7, r11, r10
215     ldr     r10, [r3, #28]
216     smlal   r6, r7, r12, r10
217     ldr     r10, [r3, #20]
218     smlal   r6, r7, sp, r10
219     ldr     r10, [r3, #12]
220     smlal   r6, r7, lr, r10
222     ldr     r10, [r4, #88]
223     smlal   r8, r9, r11, r10
224     ldr     r10, [r4, #96]
225     smlal   r8, r9, r12, r10
226     ldr     r10, [r4, #104]
227     smlal   r8, r9, sp, r10
228     ldr     r10, [r4, #112]
229     smlal   r8, r9, lr, r10
231     movs    r6, r6, lsr #16
232     adc     r6, r6, r7, lsl #16
233     str     r6, [r0, -r5, lsl #2]
235     movs    r8, r8, lsr #16
236     adc     r8, r8, r9, lsl #16
237     str     r8, [r0, r5, lsl #2]
238         
239     subs    r5, r5, #1
240     bne     .l2
242     ldr     r5, =synth_full_sp
243     ldr     sp, [r5]
244     ldmia   sp!, {r4-r11, pc}
246     .global III_aliasreduce
248 III_aliasreduce:
249     stmdb   sp!, {r4-r11, lr}
250     add     r1, r0, r1, lsl #2
251     add     r0, r0, #72
252 .arl1:
253     mov     r2, #8
254     mov     r3, r0              @ a
255     mov     r4, r0              @ b
256     ldr     r5, =csa            @ cs/ca
257 .arl2:
258     ldmdb   r3, {r6, r12}
259     ldmia   r4, {r7, lr}
261     ldmia   r5!, {r8, r9}
262     smull   r10, r11, r7, r8
263     smlal   r10, r11, r12, r9
264     movs    r10, r10, lsr #28
265     adc     r10, r10, r11, lsl #4
267     rsb     r7, r7, #0
268     smull   r11, r8, r12, r8
269     smlal   r11, r8, r7, r9
270     movs    r11, r11, lsr #28
271     adc     r11, r11, r8, lsl #4
272     
273     ldmia   r5!, {r8, r9}
274     smull   r12, r7, lr, r8
275     smlal   r12, r7, r6, r9
276     movs    r12, r12, lsr #28
277     adc     r12, r12, r7, lsl #4
278     stmia   r4!, {r10, r12}
280     rsb     lr, lr, #0
281     smull   r7, r10, r6, r8
282     smlal   r7, r10, lr, r9
283     movs    r7, r7, lsr #28
284     adc     r7, r7, r10, lsl #4
285     stmdb   r3!, {r7, r11}
286     
287     subs    r2, r2, #2
288     bne     .arl2
289     add     r0, r0, #72
290     cmp     r0, r1
291     blo     .arl1
292     ldmia   sp!, {r4-r11, pc}
294 csa:
295     .word +0x0db84a81
296     .word -0x083b5fe7
297     .word +0x0e1b9d7f 
298     .word -0x078c36d2 
299     .word +0x0f31adcf
300     .word -0x05039814  
301     .word +0x0fbba815 
302     .word -0x02e91dd1 
303     .word +0x0feda417
304     .word -0x0183603a  
305     .word +0x0ffc8fc8 
306     .word -0x00a7cb87 
307     .word +0x0fff964c
308     .word -0x003a2847  
309     .word +0x0ffff8d3
310     .word -0x000f27b4
312     .global III_overlap
313 III_overlap:
314     stmdb   sp!, {r4-r7, lr}
315     add     r2, r2, r3, lsl #2
316     mov     r3, #6
317 .ol:
318     ldmia r0!, {r4, r5, r6}
319     ldmia r1!, {r7, r12, lr}
320     add   r4, r4, r7
321     add   r5, r5, r12
322     add   r6, r6, lr
323     str   r4, [r2], #128
324     str   r5, [r2], #128
325     str   r6, [r2], #128
326     subs  r3, r3, #1
327     bne   .ol
328     sub   r1, r1, #72
329     ldmia r0!, {r4, r5, r6, r7, r12, lr}
330     stmia r1!, {r4, r5, r6, r7, r12, lr}
331     ldmia r0!, {r4, r5, r6, r7, r12, lr}
332     stmia r1!, {r4, r5, r6, r7, r12, lr}
333     ldmia r0!, {r4, r5, r6, r7, r12, lr}
334     stmia r1!, {r4, r5, r6, r7, r12, lr}
335     ldmia   sp!, {r4-r7, pc}
337     .section    IBSS_SECTION_MPA_ARM,"aw",%nobits
338 synth_full_sp:
339     .space 4