aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorClaudiu Zissulescu <claziss@synopsys.com>2018-10-31 12:27:07 +0100
committerClaudiu Zissulescu <claziss@gcc.gnu.org>2018-10-31 12:27:07 +0100
commit8180cde0fb12e1aa10a74319d24cfa9619a60261 (patch)
treebe25f7c816bf625f23cb1080b1a3c5dd1996efe3 /libgcc
parentfad03406ebbeb8609491bf6a71377cc71431661f (diff)
downloadgcc-8180cde0fb12e1aa10a74319d24cfa9619a60261.zip
gcc-8180cde0fb12e1aa10a74319d24cfa9619a60261.tar.gz
gcc-8180cde0fb12e1aa10a74319d24cfa9619a60261.tar.bz2
[ARC] Remove non standard funcions calls.
Replace all custom "library" calls with compiler known patterns. gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.md (mulsi3): Remove call to mulsi_600_lib. (mulsi3_600_lib): Remove pattern. (umulsi3_highpart_600_lib_le): Likewise. (umulsi3_highpart): Remove call to umulsi3_highpart_600_lib_le. (umulsidi3): Remove call to umulsidi3_600_lib. (umulsidi3_600_lib): Remove pattern. (peephole2): Remove peephole using the above deprecated patterns. testsuite/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * gcc.target/arc/mulsi3_highpart-2.c: Update test. libgcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * config/arc/lib1funcs.S (_muldi3): New function. * config/arc/t-arc (LIB1ASMFUNCS): Add _muldi3. From-SVN: r265672
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog5
-rw-r--r--libgcc/config/arc/lib1funcs.S54
-rw-r--r--libgcc/config/arc/t-arc2
3 files changed, 60 insertions, 1 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 1be4f87..d3edd5c 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-10-31 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * config/arc/lib1funcs.S (_muldi3): New function.
+ * config/arc/t-arc (LIB1ASMFUNCS): Add _muldi3.
+
2018-10-30 Rasmus Villemoes <rv@rasmusvillemoes.dk>
* config/gthr-vxworks.h (__gthread_mutex_destroy): Call semDelete.
diff --git a/libgcc/config/arc/lib1funcs.S b/libgcc/config/arc/lib1funcs.S
index 9a62602..249dd7a 100644
--- a/libgcc/config/arc/lib1funcs.S
+++ b/libgcc/config/arc/lib1funcs.S
@@ -232,6 +232,60 @@ SYM(__umulsi3_highpart):
#endif
#endif /* L_umulsidi3 */
+#ifdef L_muldi3
+ .section .text
+ .align 4
+ .global SYM(__muldi3)
+SYM(__muldi3):
+#ifdef __LITTLE_ENDIAN__
+ push_s blink
+ mov_s r4,r3 ;4
+ mov_s r5,r2 ;4
+ mov_s r9,r0 ;4
+ mov_s r8,r1 ;4
+ bl.d @__umulsidi3
+ mov_s r1,r2 ;4
+ mov_s r6,r0 ;4
+ mov_s r7,r1 ;4
+ mov_s r0,r9 ;4
+ bl.d @__mulsi3
+ mov_s r1,r4 ;4
+ mov_s r4,r0 ;4
+ mov_s r1,r8 ;4
+ bl.d @__mulsi3
+ mov_s r0,r5 ;4
+ pop_s blink
+ add_s r0,r0,r4 ;2
+ add r1,r0,r7
+ j_s.d [blink]
+ mov_s r0,r6 ;4
+#else
+ push_s blink
+ mov_s r5,r3
+ mov_s r9,r2
+ mov_s r4,r1
+ mov_s r8,r0
+ mov_s r0,r1
+ bl.d @__umulsidi3
+ mov_s r1,r3
+ mov_s r7,r0
+ mov_s r6,r1
+ mov_s r0,r4
+ bl.d @__mulsi3
+ mov_s r1,r9
+ mov_s r4,r0
+ mov_s r1,r8
+ bl.d @__mulsi3
+ mov_s r0,r5
+ pop_s blink
+ add_s r0,r0,r4
+ add_s r0,r0,r7
+ j_s.d [blink]
+ mov_s r1,r6
+#endif /* __LITTLE_ENDIAN__ */
+ENDFUNC(__muldi3)
+#endif /* L_muldi3 */
+
#ifdef L_umulsi3_highpart
#include "ieee-754/arc-ieee-754.h"
/* For use without a barrel shifter, and for ARC700 / ARC_MUL64, the
diff --git a/libgcc/config/arc/t-arc b/libgcc/config/arc/t-arc
index ad30fdb..c79bc1c 100644
--- a/libgcc/config/arc/t-arc
+++ b/libgcc/config/arc/t-arc
@@ -21,7 +21,7 @@
CROSS_LIBGCC1 = libgcc1-asm.a
LIB1ASMSRC = arc/lib1funcs.S
-LIB1ASMFUNCS = _mulsi3 _umulsidi3 _umulsi3_highpart \
+LIB1ASMFUNCS = _mulsi3 _umulsidi3 _umulsi3_highpart _muldi3 \
_udivsi3 _divsi3 _umodsi3 _modsi3 \
_divmod_tools _clzsi2 \
_millicodethunk_st _millicodethunk_ld _millicodethunk_ret \