tile: support gcc 7 optimization to use __multi3
authorChris Metcalf <cmetcalf@mellanox.com>
Fri, 24 Jun 2016 19:27:53 +0000 (15:27 -0400)
committerChris Metcalf <cmetcalf@mellanox.com>
Fri, 24 Jun 2016 19:32:02 +0000 (15:32 -0400)
The tip gcc includes an optimization mode that converts
64-bit divides into 128-bit multiplies using __multi3.
Export the symbol so that modules can find it.  We just
export unconditionally without worrying about the gcc
version, since the symbol has been in libgcc forever and
the function is less than 300 bytes.

Signed-off-by: Chris Metcalf <cmetcalf@mellanox.com>
arch/tile/lib/exports.c

index 9d171ca4302c6761eab62b486aba39d86da2f873..c5369fe643c7dcc373654a05f3314ae70a7583ef 100644 (file)
@@ -77,7 +77,11 @@ uint64_t __umoddi3(uint64_t dividend, uint64_t divisor);
 EXPORT_SYMBOL(__umoddi3);
 int64_t __moddi3(int64_t dividend, int64_t divisor);
 EXPORT_SYMBOL(__moddi3);
 EXPORT_SYMBOL(__umoddi3);
 int64_t __moddi3(int64_t dividend, int64_t divisor);
 EXPORT_SYMBOL(__moddi3);
-#ifndef __tilegx__
+#ifdef __tilegx__
+typedef int TItype __attribute__((mode(TI)));
+TItype __multi3(TItype a, TItype b);
+EXPORT_SYMBOL(__multi3);  /* required for gcc 7 and later */
+#else
 int64_t __muldi3(int64_t, int64_t);
 EXPORT_SYMBOL(__muldi3);
 uint64_t __lshrdi3(uint64_t, unsigned int);
 int64_t __muldi3(int64_t, int64_t);
 EXPORT_SYMBOL(__muldi3);
 uint64_t __lshrdi3(uint64_t, unsigned int);