* config/h8300/lib1funcs.asm (___fixunssfsi): Change the
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 Mar 2004 04:53:16 +0000 (04:53 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 Mar 2004 04:53:16 +0000 (04:53 +0000)
threshold to 0x4f.

Revert:
2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>
* config/h8300/fixunssfsi.c (__fixunssfsi): Enable on H8/300
as well.
* config/h8300/lib1funcs.asm (___fixunssfsi): Remove.
* config/h8300/t-h8300 (LIB1ASMFUNCS): Remove _fixunssfsi_asm.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78818 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/h8300/fixunssfsi.c
gcc/config/h8300/lib1funcs.asm
gcc/config/h8300/t-h8300

index 8dc0903..98c43fc 100644 (file)
@@ -1,5 +1,17 @@
 2004-03-02  Kazu Hirata  <kazu@cs.umass.edu>
 
+       * config/h8300/lib1funcs.asm (___fixunssfsi): Change the
+       threshold to 0x4f.
+
+       Revert:
+       2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>
+       * config/h8300/fixunssfsi.c (__fixunssfsi): Enable on H8/300
+       as well.
+       * config/h8300/lib1funcs.asm (___fixunssfsi): Remove.
+       * config/h8300/t-h8300 (LIB1ASMFUNCS): Remove _fixunssfsi_asm.
+
+2004-03-02  Kazu Hirata  <kazu@cs.umass.edu>
+
        * doc/md.texi (cbranchmode4): New.
 
 2004-03-02  Eric Christopher  <echristo@redhat.com>
index 0cd72de..06120ba 100644 (file)
@@ -29,8 +29,10 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
 
 /* The libgcc2.c implementation gets confused by our type setup and creates
-   a directly recursive call, so we do our own implementation.  */
+   a directly recursive call, so we do our own implementation.  For
+   the H8/300, that's in lib1funcs.asm, for H8/300H and H8S, it's here.  */
 
+#ifndef __H8300__
 long __fixunssfsi (float a);
 
 long
@@ -40,3 +42,4 @@ __fixunssfsi (float a)
     return (long) (a - 32768L) + 32768L;
   return (long) a;
 }
+#endif
index bf981e0..8a7e505 100644 (file)
@@ -806,3 +806,31 @@ L_skip2:
 
 #endif
 #endif /* L_mulsi3 */
+#ifdef L_fixunssfsi_asm
+/* For the h8300 we use asm to save some bytes, to
+   allow more programs to fit into the tiny address
+   space.  For the H8/300H and H8S, the C version is good enough.  */
+#ifdef __H8300__
+/* We still treat NANs different than libgcc2.c, but then, the
+   behavior is undefined anyways.  */
+       .global ___fixunssfsi
+___fixunssfsi:
+       cmp.b #0x4f,r0h
+       bge Large_num
+       jmp     @___fixsfsi
+Large_num:
+       bhi L_huge_num
+       xor.b #0x80,A0L
+       bmi L_shift8
+L_huge_num:
+       mov.w #65535,A0
+       mov.w A0,A1
+       rts
+L_shift8:
+       mov.b A0L,A0H
+       mov.b A1H,A0L
+       mov.b A1L,A1H
+       mov.b #0,A1L
+       rts
+#endif
+#endif /* L_fixunssfsi_asm */
index 476dc18..28ea2cf 100644 (file)
@@ -1,5 +1,6 @@
 LIB1ASMSRC = h8300/lib1funcs.asm
-LIB1ASMFUNCS = _cmpsi2 _ucmpsi2 _divhi3 _divsi3 _mulhi3 _mulsi3
+LIB1ASMFUNCS = _cmpsi2 _ucmpsi2 _divhi3 _divsi3 _mulhi3 _mulsi3 \
+  _fixunssfsi_asm
 
 LIB2FUNCS_EXTRA = \
        $(srcdir)/config/h8300/clzhi2.c \