* device/lib/_fs2schar.c,
authormaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 22 Nov 2005 10:45:46 +0000 (10:45 +0000)
committermaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 22 Nov 2005 10:45:46 +0000 (10:45 +0000)
* device/lib/_fs2sint.c,
* device/lib/_fs2slong.c: optimized inline asm

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3970 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
device/lib/_fs2schar.c
device/lib/_fs2sint.c
device/lib/_fs2slong.c

index c0fb233efa9f81a2d8e92d10f2ad0ec3132bdb46..6f2846e266a42354998ca12d82b0d88b5e915c24 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-11-22 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * device/lib/_fs2schar.c,
+       * device/lib/_fs2sint.c,
+       * device/lib/_fs2slong.c: optimized inline asm
+
 2005-11-21 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
 
        * device/lib/_fs2slong.c, device/lib/_fs2sint.c, device/lib/_fs2char.c:
index e027d08d5046745a5da0acc5b829ed418c68cf0a..f63d342aae7b16ed49f4f43d3e59bf81a0db4435 100644 (file)
@@ -31,18 +31,15 @@ static void dummy(void) _naked
        .globl  ___fs2schar
 ___fs2schar:
        lcall   ___fs2slong
-       push acc
        jnz fs2schar_not_zero
        mov a, dpl
-       jnz fs2schar_not_zero
-       mov a, dph
-       jnz fs2schar_not_zero
-       mov a, b
-       jnz fs2schar_not_zero
-       pop acc
+       orl a, dph
+       orl a, b
+       jnz fs2schar_clr_a
        ret
+fs2schar_clr_a:
+       clr a
 fs2schar_not_zero:
-    pop acc
        jnb     sign_a, fs2schar_pos
 fs2schar_neg:
        cpl     a
@@ -83,7 +80,7 @@ signed char __fs2schar (float f) {
   signed long sl=__fs2slong(f);
   if (sl>=CHAR_MAX)
     return CHAR_MAX;
-  if (sl<=CHAR_MIN) 
+  if (sl<=CHAR_MIN)
     return -CHAR_MIN;
   return sl;
 }
index ca9754a7f5770dfe44a8535ad5f55c8d67f79402..9da46173bc38bc12e759c43c7f43b6153aaa5744 100644 (file)
@@ -30,18 +30,15 @@ static void dummy(void) _naked
        .globl  ___fs2sint
 ___fs2sint:
        lcall   ___fs2slong
-       push acc
        jnz fs2sint_not_zero
        mov a, dpl
-       jnz fs2sint_not_zero
-       mov a, dph
-       jnz fs2sint_not_zero
-       mov a, b
-       jnz fs2sint_not_zero
-       pop acc
+       orl a, dph
+       orl a, b
+       jnz fs2sint_clr_a
        ret
+fs2sint_clr_a:
+       clr a
 fs2sint_not_zero:
-    pop acc
        jnb     sign_a, fs2sint_pos
 fs2sint_neg:
        cpl     a
@@ -78,7 +75,7 @@ signed int __fs2sint (float f) {
   signed long sl=__fs2slong(f);
   if (sl>=INT_MAX)
     return INT_MAX;
-  if (sl<=INT_MIN) 
+  if (sl<=INT_MIN)
     return -INT_MIN;
   return sl;
 }
index 8be058e3db0d5100432e1c3f7187e8e6b2e1c883..87d662dfa6bd78a0ecacdcebaf3502fb3de2e20d 100644 (file)
@@ -55,18 +55,15 @@ fs2slong_neg:
        cpl     a
        addc    a, #0
        //Check for zero
-       push acc
        jnz fs2slong_not_zero
        mov a, dpl
-       jnz fs2slong_not_zero
-       mov a, dph
-       jnz fs2slong_not_zero
-       mov a, b
-       jnz fs2slong_not_zero
-    pop acc
-    ret
+       orl a, dph
+       orl a, b
+       jnz fs2slong_clr_a
+       ret
+fs2slong_clr_a:
+       clr a
 fs2slong_not_zero:
-       pop acc
        jnb acc.7, fs2slong_maxval_neg  // x < -0x80000000
        ret
 fs2slong_pos: