* 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
+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:
.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
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;
}
.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
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;
}
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: