@@ -1632,7 +1632,6 @@ bool llvm::canConstantFoldCallTo(const CallBase *Call, const Function *F) {
16321632 case Intrinsic::sqrt:
16331633 case Intrinsic::sin:
16341634 case Intrinsic::cos:
1635- case Intrinsic::sincos:
16361635 case Intrinsic::pow:
16371636 case Intrinsic::powi:
16381637 case Intrinsic::ldexp:
@@ -3535,40 +3534,6 @@ ConstantFoldStructCall(StringRef Name, Intrinsic::ID IntrinsicID,
35353534 return nullptr ;
35363535 return ConstantStruct::get (StTy, Result0, Result1);
35373536 }
3538- case Intrinsic::sincos: {
3539- Type *Ty = StTy->getContainedType (0 );
3540- Type *TyScalar = Ty->getScalarType ();
3541-
3542- auto ConstantFoldScalarSincosCall =
3543- [&](Constant *Op) -> std::pair<Constant *, Constant *> {
3544- Constant *SinResult =
3545- ConstantFoldScalarCall (Name, Intrinsic::sin, TyScalar, Op, TLI, Call);
3546- Constant *CosResult =
3547- ConstantFoldScalarCall (Name, Intrinsic::cos, TyScalar, Op, TLI, Call);
3548- return std::make_pair (SinResult, CosResult);
3549- };
3550-
3551- if (auto *FVTy = dyn_cast<FixedVectorType>(Ty)) {
3552- SmallVector<Constant *> SinResults (FVTy->getNumElements ());
3553- SmallVector<Constant *> CosResults (FVTy->getNumElements ());
3554-
3555- for (unsigned I = 0 , E = FVTy->getNumElements (); I != E; ++I) {
3556- Constant *Lane = Operands[0 ]->getAggregateElement (I);
3557- std::tie (SinResults[I], CosResults[I]) =
3558- ConstantFoldScalarSincosCall (Lane);
3559- if (!SinResults[I] || !CosResults[I])
3560- return nullptr ;
3561- }
3562-
3563- return ConstantStruct::get (StTy, ConstantVector::get (SinResults),
3564- ConstantVector::get (CosResults));
3565- }
3566-
3567- auto [SinResult, CosResult] = ConstantFoldScalarSincosCall (Operands[0 ]);
3568- if (!SinResult || !CosResult)
3569- return nullptr ;
3570- return ConstantStruct::get (StTy, SinResult, CosResult);
3571- }
35723537 default :
35733538 // TODO: Constant folding of vector intrinsics that fall through here does
35743539 // not work (e.g. overflow intrinsics)
0 commit comments