From: Daniel Sanders Date: Sat, 28 May 2016 16:11:58 +0000 (+0000) Subject: Merging r263428: X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e2bd0a17aae53ef478d115a63b5d97e2efab83e1;p=llvm Merging r263428: ------------------------------------------------------------------------ r263428 | zbuljan | 2016-03-14 12:50:23 +0000 (Mon, 14 Mar 2016) | 3 lines [mips] Fix an issue with long double when function roundl is defined Differential Revision: http://reviews.llvm.org/D17760 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@271127 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Mips/MipsCCState.cpp b/lib/Target/Mips/MipsCCState.cpp index d82063e3d2a..7af988c1f64 100644 --- a/lib/Target/Mips/MipsCCState.cpp +++ b/lib/Target/Mips/MipsCCState.cpp @@ -26,8 +26,8 @@ static bool isF128SoftLibCall(const char *CallSym) { "ceill", "copysignl", "cosl", "exp2l", "expl", "floorl", "fmal", "fmodl", "log10l", "log2l", "logl", "nearbyintl", - "powl", "rintl", "sinl", "sqrtl", - "truncl"}; + "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; }; diff --git a/test/CodeGen/Mips/cconv/roundl-call.ll b/test/CodeGen/Mips/cconv/roundl-call.ll new file mode 100644 index 00000000000..2c77a607a20 --- /dev/null +++ b/test/CodeGen/Mips/cconv/roundl-call.ll @@ -0,0 +1,44 @@ +; RUN: llc -march=mips64 -mcpu=mips64 -target-abi=n32 < %s | FileCheck %s \ +; RUN: -check-prefix=ALL -check-prefix=N32 -check-prefix=HARD-FLOAT +; RUN: llc -march=mips64el -mcpu=mips64 -target-abi=n32 < %s | FileCheck %s \ +; RUN: -check-prefix=ALL -check-prefix=N32 -check-prefix=HARD-FLOAT + +; RUN: llc -march=mips64 -mcpu=mips64 -target-abi=n64 < %s | FileCheck %s \ +; RUN: -check-prefix=ALL -check-prefix=N64 -check-prefix=HARD-FLOAT +; RUN: llc -march=mips64el -mcpu=mips64 -target-abi=n64 < %s | FileCheck %s \ +; RUN: -check-prefix=ALL -check-prefix=N64 -check-prefix=HARD-FLOAT + +; RUN: llc -march=mips64 -mcpu=mips64 -mattr=+soft-float -target-abi=n32 < %s \ +; RUN: | FileCheck %s -check-prefix=ALL -check-prefix=N32 \ +; RUN: -check-prefix=SOFT-FLOAT +; RUN: llc -march=mips64el -mcpu=mips64 -mattr=+soft-float -target-abi=n32 < \ +; RUN: %s | FileCheck %s -check-prefix=ALL -check-prefix=N32 \ +; RUN: -check-prefix=SOFT-FLOAT + +; RUN: llc -march=mips64 -mcpu=mips64 -mattr=+soft-float -target-abi=n64 < %s \ +; RUN: | FileCheck %s -check-prefix=ALL -check-prefix=N64 \ +; RUN: -check-prefix=SOFT-FLOAT +; RUN: llc -march=mips64el -mcpu=mips64 -mattr=+soft-float -target-abi=n64 < \ +; RUN: %s | FileCheck %s -check-prefix=ALL -check-prefix=N64 \ +; RUN: -check-prefix=SOFT-FLOAT + +@fp128 = global fp128 zeroinitializer + +define void @roundl_call(fp128 %value) { +entry: +; ALL-LABEL: roundl_call: +; N32: lw $25, %call16(roundl)($gp) +; N64: ld $25, %call16(roundl)($gp) + +; SOFT-FLOAT: sd $4, 8(${{[0-9]+}}) +; SOFT-FLOAT: sd $2, 0(${{[0-9]+}}) + +; HARD-FLOAT: sdc1 $f2, 8(${{[0-9]+}}) +; HARD-FLOAT: sdc1 $f0, 0(${{[0-9]+}}) + + %call = call fp128 @roundl(fp128 %value) + store fp128 %call, fp128* @fp128 + ret void +} + +declare fp128 @roundl(fp128) nounwind readnone