summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2007-06-14 22:50:21 +0000
committerJens Arnold <amiconn@rockbox.org>2007-06-14 22:50:21 +0000
commitbb12e55989e360662d606c016db3471484d5a694 (patch)
treee41370618700f6a4bf4fcb749ab7e34077aa5810
parentcee61b57c8459f4e9eb787dd8a5f9507770deb02 (diff)
downloadrockbox-bb12e55989e360662d606c016db3471484d5a694.tar.gz
rockbox-bb12e55989e360662d606c016db3471484d5a694.zip
Mandelbrot: slight speedup on coldfire targets. Only noticeable at high iteration depths with full precision.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13631 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/mandelbrot.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/apps/plugins/mandelbrot.c b/apps/plugins/mandelbrot.c
index fe920cebd4..b1e8587764 100644
--- a/apps/plugins/mandelbrot.c
+++ b/apps/plugins/mandelbrot.c
@@ -298,19 +298,19 @@ static inline long muls32_asr26(long a, long b)
298{ 298{
299 long r, t1; 299 long r, t1;
300 asm ( 300 asm (
301 "mac.l %[a],%[b],%%acc0\n" /* multiply */ 301 "mac.l %[a], %[b], %%acc0 \n" /* multiply */
302 "mulu.l %[a],%[b] \n" /* get lower half */ 302 "move.l %%accext01, %[t1] \n" /* get low part */
303 "movclr.l %%acc0,%[r] \n" /* get higher half */ 303 "movclr.l %%acc0, %[r] \n" /* get high part */
304 "asl.l #5,%[r] \n" /* hi <<= 5, plus one free */ 304 "asl.l #5, %[r] \n" /* hi <<= 5, plus one free */
305 "moveq.l #26,%[t1] \n" 305 "lsr.l #3, %[t1] \n" /* lo >>= 3 */
306 "lsr.l %[t1],%[b] \n" /* (unsigned)lo >>= 26 */ 306 "and.l #0x1f, %[t1] \n" /* mask out unrelated bits */
307 "or.l %[b],%[r] \n" /* combine result */ 307 "or.l %[t1], %[r] \n" /* combine result */
308 : /* outputs */ 308 : /* outputs */
309 [r]"=&d"(r), 309 [r] "=d"(r),
310 [t1]"=&d"(t1), 310 [t1]"=d"(t1)
311 [b] "+d" (b)
312 : /* inputs */ 311 : /* inputs */
313 [a] "d" (a) 312 [a] "d" (a),
313 [b] "d" (b)
314 ); 314 );
315 return r; 315 return r;
316} 316}