summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips/MipsCCState.cpp
diff options
context:
space:
mode:
authorStefan Maksimovic <stefan.maksimovic@mips.com>2018-10-12 08:18:38 +0000
committerStefan Maksimovic <stefan.maksimovic@mips.com>2018-10-12 08:18:38 +0000
commit285c0f4fdc14a266f0765816c42c2c8a57601cbb (patch)
treee1def88c732ab499cf30c1c76cc116d81d0397d7 /llvm/lib/Target/Mips/MipsCCState.cpp
parenteddf6b5df563a6d10ba88272faaeae90c37dcc00 (diff)
downloadbcm5719-llvm-285c0f4fdc14a266f0765816c42c2c8a57601cbb.tar.gz
bcm5719-llvm-285c0f4fdc14a266f0765816c42c2c8a57601cbb.zip
[mips] Mark fmaxl as a long double emulation routine
Failure was discovered upon running projects/compiler-rt/test/builtins/Unit/divtc3_test.c in a stage2 compiler build. When compiling projects/compiler-rt/lib/builtins/divtc3.c, a call to fmaxl within the divtc3 implementation had its return values read from registers $2 and $3 instead of $f0 and $f2. Include fmaxl in the list of long double emulation routines to have its return value correctly interpreted as f128. Almost exact issue here: https://reviews.llvm.org/D17760 Differential Revision: https://reviews.llvm.org/D52649 llvm-svn: 344326
Diffstat (limited to 'llvm/lib/Target/Mips/MipsCCState.cpp')
-rw-r--r--llvm/lib/Target/Mips/MipsCCState.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/Mips/MipsCCState.cpp b/llvm/lib/Target/Mips/MipsCCState.cpp
index 81a1cced93b..90cb3f437bd 100644
--- a/llvm/lib/Target/Mips/MipsCCState.cpp
+++ b/llvm/lib/Target/Mips/MipsCCState.cpp
@@ -24,10 +24,10 @@ static bool isF128SoftLibCall(const char *CallSym) {
"__lttf2", "__multf3", "__netf2", "__powitf2",
"__subtf3", "__trunctfdf2", "__trunctfsf2", "__unordtf2",
"ceill", "copysignl", "cosl", "exp2l",
- "expl", "floorl", "fmal", "fmodl",
- "log10l", "log2l", "logl", "nearbyintl",
- "powl", "rintl", "roundl", "sinl",
- "sqrtl", "truncl"};
+ "expl", "floorl", "fmal", "fmaxl",
+ "fmodl", "log10l", "log2l", "logl",
+ "nearbyintl", "powl", "rintl", "roundl",
+ "sinl", "sqrtl", "truncl"};
// Check that LibCalls is sorted alphabetically.
auto Comp = [](const char *S1, const char *S2) { return strcmp(S1, S2) < 0; };
OpenPOWER on IntegriCloud