2 synth_arm: ARM optimized synth
4 copyright 1995-2009 by the mpg123 project - free software under the terms of the LGPL 2.1
5 see COPYING and AUTHORS files in distribution or http://mpg123.org
6 initially written by Taihei Monma
18 int synth_1to1_arm_asm(real *window, real *b0, short *samples, int bo1);
19 return value: number of clipped samples
24 .globl ASM_NAME(synth_1to1_arm_asm)
25 ASM_NAME(synth_1to1_arm_asm):
26 stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
28 add WINDOW, WINDOW, #64
29 sub WINDOW, WINDOW, r3, lsl #2
30 eor REG_CLIP, REG_CLIP, REG_CLIP
31 mov REG_MAX, #1073741824
32 sub REG_MAX, REG_MAX, #32768
92 addgt REG_CLIP, REG_CLIP, #1
94 movlt r7, #-1073741824
95 addlt REG_CLIP, REG_CLIP, #1
98 strh r7, [SAMPLES], #4
103 add WINDOW, WINDOW, #4
124 ldr r8, [WINDOW], #72
135 addgt REG_CLIP, REG_CLIP, #1
137 movlt r7, #-1073741824
138 addlt REG_CLIP, REG_CLIP, #1
141 strh r7, [SAMPLES], #4
188 ldr r8, [WINDOW], #68
199 addgt REG_CLIP, REG_CLIP, #1
201 movlt r7, #-1073741824
202 addlt REG_CLIP, REG_CLIP, #1
205 strh r7, [SAMPLES], #4
261 addgt REG_CLIP, REG_CLIP, #1
263 movlt r7, #-1073741824
264 addlt REG_CLIP, REG_CLIP, #1
271 ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, pc}