diff options
author | Stefan Maksimovic <stefan.maksimovic@mips.com> | 2018-10-12 08:18:38 +0000 |
---|---|---|
committer | Stefan Maksimovic <stefan.maksimovic@mips.com> | 2018-10-12 08:18:38 +0000 |
commit | 285c0f4fdc14a266f0765816c42c2c8a57601cbb (patch) | |
tree | e1def88c732ab499cf30c1c76cc116d81d0397d7 /llvm/lib/Target/Mips/MipsCCState.cpp | |
parent | eddf6b5df563a6d10ba88272faaeae90c37dcc00 (diff) | |
download | bcm5719-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.cpp | 8 |
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; }; |