aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ"orn Rennecke <joern.rennecke@superh.com>2002-07-17 16:09:43 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2002-07-17 17:09:43 +0100
commitac09192adbb3dc7b08846bd35bff94984caac912 (patch)
tree1be1c25cee2d6c01288ce3124ba345ebc1a07ada
parent68cef009977f9e12217108240e1b44b080da46e8 (diff)
downloadgcc-ac09192adbb3dc7b08846bd35bff94984caac912.zip
gcc-ac09192adbb3dc7b08846bd35bff94984caac912.tar.gz
gcc-ac09192adbb3dc7b08846bd35bff94984caac912.tar.bz2
lib1funcs.asm (udivsi3_i4): Implement SHcompact version in SHmedia code.
* lib1funcs.asm (udivsi3_i4): Implement SHcompact version in SHmedia code. From-SVN: r55533
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sh/lib1funcs.asm25
2 files changed, 23 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b8810a1..3efb6a1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,7 @@
-Wed Jul 17 17:05:27 2002 J"orn Rennecke <joern.rennecke@superh.com>
+Wed Jul 17 17:08:06 2002 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * lib1funcs.asm (udivsi3_i4): Implement SHcompact version in
+ SHmedia code.
* sh.md (cmpgtudi_media): Remove spurious @.
diff --git a/gcc/config/sh/lib1funcs.asm b/gcc/config/sh/lib1funcs.asm
index 9d39bcc..c98208f 100644
--- a/gcc/config/sh/lib1funcs.asm
+++ b/gcc/config/sh/lib1funcs.asm
@@ -1217,13 +1217,27 @@ trivial:
L1:
.double 2147483648
-#elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__)
+#elif defined (__SH5__) && ! defined (__SH4_NOFPU__)
+#if ! __SH5__ || __SH5__ == 32
+!! args in r4 and r5, result in fpul, clobber r20, r21, dr0, fr33
+ .mode SHmedia
+ .global GLOBAL(udivsi3_i4)
+GLOBAL(udivsi3_i4):
+ addz.l r4,r63,r20
+ addz.l r5,r63,r21
+ fmov.qd r20,dr0
+ fmov.qd r21,dr32
+ ptabs r18,tr0
+ float.qd dr0,dr0
+ float.qd dr32,dr32
+ fdiv.d dr0,dr32,dr0
+ ftrc.dq dr0,dr32
+ fmov.s fr33,fr32
+ blink tr0,r63
+#endif /* ! __SH5__ || __SH5__ == 32 */
+#elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__)
!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4
-#if ! __SH5__ || __SH5__ == 32
-#if __SH5__
- .mode SHcompact
-#endif
.global GLOBAL(udivsi3_i4)
GLOBAL(udivsi3_i4):
mov #1,r1
@@ -1273,7 +1287,6 @@ L1:
#endif
.double 2147483648
-#endif /* ! __SH5__ || __SH5__ == 32 */
#endif /* ! __SH4__ */
#endif