Index: apps/dsp.c =================================================================== RCS file: /cvsroot/rockbox/apps/dsp.c,v retrieving revision 1.44 diff -u -r1.44 dsp.c --- apps/dsp.c 4 Mar 2006 21:26:47 -0000 1.44 +++ apps/dsp.c 10 Apr 2006 18:11:52 -0000 @@ -797,6 +797,38 @@ long min = dsp->clip_min; long max = dsp->clip_max; + while (count >= 2) + { + asm volatile ("ldmia %0!, {r0, r1}\n\t" + "ldmia %1!, {r2, r3}\n\t" + "cmp r0, %3\n\t" + "movlt r0, %3\n\t" + "cmp r0, %4\n\t" + "movgt r0, %4\n\t" + "cmp r1, %3\n\t" + "movlt r1, %3\n\t" + "cmp r1, %4\n\t" + "movgt r1, %4\n\t" + "cmp r2, %3\n\t" + "movlt r2, %3\n\t" + "cmp r2, %4\n\t" + "movgt r2, %4\n\t" + "cmp r3, %3\n\t" + "movlt r3, %3\n\t" + "cmp r3, %4\n\t" + "movgt r3, %4\n\t" + "and r0, %6, r0, asr %5\n\t" + "mov r2, r2, asr %5\n\t" + "orr r0, r0, r2, lsl #16\n\t" + "and r1, %6, r1, asr %5\n\t" + "mov r3, r3, asr %5\n\t" + "orr r1, r1, r3, lsl #16\n\t" + "stmia %2!, {r0, r1}\n\t" + : "+r" (s0), "+r" (s1), "+r" (dst) + : "r" (min), "r" (max), "r" (scale), "r" (0xffff) + : "r0", "r1", "r2", "r3"); + count -= 2; + } while (count-- > 0) { *dst++ = (short) (clip_sample(*s0++, min, max) >> scale);