1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 * Copyright (C) 2007 by Tomasz Malesinski
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.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
25 .section ICODE_SECTION_MPA_ARM,"ax",%progbits
27 .global synth_full_odd_sbsample
28 .global synth_full_even_sbsample
35 synth_full_odd_sbsample:
36 stmdb sp!, {r4-r11, lr}
38 ldr r5, =synth_full_sp
45 ldmia r1!, {r10, r11, r12, lr}
52 smlal r6, r7, r11, r10
54 smlal r6, r7, r12, r10
59 smlal r8, r9, r11, r10
61 smlal r8, r9, r12, r10
65 ldmia r1!, {r11, r12, sp, lr}
67 smlal r6, r7, r11, r10
69 smlal r6, r7, r12, r10
76 smlal r8, r9, r11, r10
78 smlal r8, r9, r12, r10
87 ldmia r2!, {r11, r12, sp, lr}
90 smlal r6, r7, r11, r10
92 smlal r6, r7, r12, r10
99 smlal r8, r9, r11, r10
101 smlal r8, r9, r12, r10
103 smlal r8, r9, sp, r10
105 smlal r8, r9, lr, r10
107 ldmia r2!, {r11, r12, sp, lr}
109 smlal r6, r7, r11, r10
111 smlal r6, r7, r12, r10
113 smlal r6, r7, sp, r10
115 smlal r6, r7, lr, r10
118 smlal r8, r9, r11, r10
120 smlal r8, r9, r12, r10
122 smlal r8, r9, sp, r10
124 smlal r8, r9, lr, r10
127 adc r6, r6, r7, lsl #16
128 str r6, [r0, -r5, lsl #2]
131 adc r8, r8, r9, lsl #16
132 str r8, [r0, r5, lsl #2]
137 ldr r5, =synth_full_sp
141 synth_full_even_sbsample:
142 stmdb sp!, {r4-r11, lr}
144 ldr r5, =synth_full_sp
151 ldmia r1!, {r10, r11, r12, lr}
153 smull r6, r7, r10, r7
155 smull r8, r9, r10, r9
158 smlal r6, r7, r11, r10
160 smlal r6, r7, r12, r10
162 smlal r6, r7, lr, r10
165 smlal r8, r9, r11, r10
167 smlal r8, r9, r12, r10
169 smlal r8, r9, lr, r10
171 ldmia r1!, {r11, r12, sp, lr}
173 smlal r6, r7, r11, r10
175 smlal r6, r7, r12, r10
177 smlal r6, r7, sp, r10
179 smlal r6, r7, lr, r10
182 smlal r8, r9, r11, r10
184 smlal r8, r9, r12, r10
186 smlal r8, r9, sp, r10
188 smlal r8, r9, lr, r10
193 ldmia r2!, {r11, r12, sp, lr}
196 smlal r6, r7, r11, r10
198 smlal r6, r7, r12, r10
200 smlal r6, r7, sp, r10
202 smlal r6, r7, lr, r10
205 smlal r8, r9, r11, r10
207 smlal r8, r9, r12, r10
209 smlal r8, r9, sp, r10
211 smlal r8, r9, lr, r10
213 ldmia r2!, {r11, r12, sp, lr}
215 smlal r6, r7, r11, r10
217 smlal r6, r7, r12, r10
219 smlal r6, r7, sp, r10
221 smlal r6, r7, lr, r10
224 smlal r8, r9, r11, r10
226 smlal r8, r9, r12, r10
228 smlal r8, r9, sp, r10
230 smlal r8, r9, lr, r10
233 adc r6, r6, r7, lsl #16
234 str r6, [r0, -r5, lsl #2]
237 adc r8, r8, r9, lsl #16
238 str r8, [r0, r5, lsl #2]
243 ldr r5, =synth_full_sp
247 .global III_aliasreduce
250 stmdb sp!, {r4-r11, lr}
251 add r1, r0, r1, lsl #2
263 smull r10, r11, r7, r8
264 smlal r10, r11, r12, r9
265 movs r10, r10, lsr #28
266 adc r10, r10, r11, lsl #4
269 smull r11, r8, r12, r8
270 smlal r11, r8, r7, r9
271 movs r11, r11, lsr #28
272 adc r11, r11, r8, lsl #4
275 smull r12, r7, lr, r8
276 smlal r12, r7, r6, r9
277 movs r12, r12, lsr #28
278 adc r12, r12, r7, lsl #4
279 stmia r4!, {r10, r12}
282 smull r7, r10, r6, r8
283 smlal r7, r10, lr, r9
285 adc r7, r7, r10, lsl #4
315 stmdb sp!, {r4-r7, lr}
316 add r2, r2, r3, lsl #2
319 ldmia r0!, {r4, r5, r6}
320 ldmia r1!, {r7, r12, lr}
330 ldmia r0!, {r4, r5, r6, r7, r12, lr}
331 stmia r1!, {r4, r5, r6, r7, r12, lr}
332 ldmia r0!, {r4, r5, r6, r7, r12, lr}
333 stmia r1!, {r4, r5, r6, r7, r12, lr}
334 ldmia r0!, {r4, r5, r6, r7, r12, lr}
335 stmia r1!, {r4, r5, r6, r7, r12, lr}
338 .section IBSS_SECTION_MPA_ARM,"aw",%nobits