summaryrefslogtreecommitdiffstats
path: root/arch/tile
diff options
context:
space:
mode:
authorChris Metcalf <cmetcalf@mellanox.com>2016-06-24 15:27:53 -0400
committerChris Metcalf <cmetcalf@mellanox.com>2016-06-24 15:32:02 -0400
commit893d66192c4682835322fb55d47c9410da6cbfef (patch)
treefa1e0b680ab4cc0f0396c1ec58833c23aeb23734 /arch/tile
parentca768667d87331d2e2fc84e1546fbf96f22ed5fe (diff)
downloadlinux-893d66192c4682835322fb55d47c9410da6cbfef.tar.gz
linux-893d66192c4682835322fb55d47c9410da6cbfef.tar.bz2
linux-893d66192c4682835322fb55d47c9410da6cbfef.zip
tile: support gcc 7 optimization to use __multi3
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>
Diffstat (limited to 'arch/tile')
-rw-r--r--arch/tile/lib/exports.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/tile/lib/exports.c b/arch/tile/lib/exports.c
index 9d171ca4302c..c5369fe643c7 100644
--- a/arch/tile/lib/exports.c
+++ b/arch/tile/lib/exports.c
@@ -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);
-#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);