git: 79639686401b - main - Merge commit c97a7675eea4 from llvm git (by Qiu Chaofan):

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Fri, 29 Dec 2023 19:32:10 UTC
The branch main has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=79639686401bedbcbbf04eb71e0acb1cc7dcbbcb

commit 79639686401bedbcbbf04eb71e0acb1cc7dcbbcb
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-12-29 19:30:45 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-12-29 19:30:45 +0000

    Merge commit c97a7675eea4 from llvm git (by Qiu Chaofan):
    
      [PowerPC] Expand FSINCOS of fp128 (#76494)
    
    This fixes "fatal error: error in backend: Cannot select: 0x6d420285c0:
    f128,f128 = fsincos 0x6d4202b6f0" when compiling s_cpowl.c for
    powerpc64le.
    
    Upstream ticket: https://github.com/llvm/llvm-project/issues/76442
    
    Reported by:    pkubaj
    MFC after:      3 days
---
 contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
index d4d2da55160e..547b71a6101a 100644
--- a/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -1166,6 +1166,7 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
       setTruncStoreAction(MVT::f128, MVT::f32, Expand);
 
       // No implementation for these ops for PowerPC.
+      setOperationAction(ISD::FSINCOS, MVT::f128, Expand);
       setOperationAction(ISD::FSIN, MVT::f128, Expand);
       setOperationAction(ISD::FCOS, MVT::f128, Expand);
       setOperationAction(ISD::FPOW, MVT::f128, Expand);
@@ -1401,6 +1402,7 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
   setLibcallName(RTLIB::EXP2_F128, "exp2f128");
   setLibcallName(RTLIB::SIN_F128, "sinf128");
   setLibcallName(RTLIB::COS_F128, "cosf128");
+  setLibcallName(RTLIB::SINCOS_F128, "sincosf128");
   setLibcallName(RTLIB::POW_F128, "powf128");
   setLibcallName(RTLIB::FMIN_F128, "fminf128");
   setLibcallName(RTLIB::FMAX_F128, "fmaxf128");