Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions llvm/lib/Analysis/ConstantFolding.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1651,6 +1651,8 @@ bool llvm::canConstantFoldCallTo(const CallBase *Call, const Function *F) {
case Intrinsic::sin:
case Intrinsic::cos:
case Intrinsic::sincos:
case Intrinsic::sinh:
case Intrinsic::cosh:
case Intrinsic::pow:
case Intrinsic::powi:
case Intrinsic::ldexp:
Expand Down Expand Up @@ -2513,6 +2515,10 @@ static Constant *ConstantFoldScalarCall1(StringRef Name,
return ConstantFoldFP(sin, APF, Ty);
case Intrinsic::cos:
return ConstantFoldFP(cos, APF, Ty);
case Intrinsic::sinh:
return ConstantFoldFP(sinh, APF, Ty);
case Intrinsic::cosh:
return ConstantFoldFP(cosh, APF, Ty);
case Intrinsic::sqrt:
return ConstantFoldFP(sqrt, APF, Ty);
case Intrinsic::amdgcn_cos:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt -S -passes=early-cse < %s | FileCheck %s

define double @test_sinh() {
; CHECK-LABEL: define double @test_sinh() {
; CHECK-NEXT: ret double 0.000000e+00
;
%result = call double @llvm.sinh.f64(double 0.0)
ret double %result
}

define <2 x double> @test_sinh_v2() {
; CHECK-LABEL: define <2 x double> @test_sinh_v2() {
; CHECK-NEXT: ret <2 x double> zeroinitializer
;
%result = call <2 x double> @llvm.sinh.v2f64(<2 x double> zeroinitializer)
ret <2 x double> %result
}

define double @test_cosh() {
; CHECK-LABEL: define double @test_cosh() {
; CHECK-NEXT: ret double 1.000000e+00
;
%result = call double @llvm.cosh.f64(double 0.0)
ret double %result
}

define <2 x double> @test_cosh_v2() {
; CHECK-LABEL: define <2 x double> @test_cosh_v2() {
; CHECK-NEXT: ret <2 x double> splat (double 1.000000e+00)
;
%result = call <2 x double> @llvm.cosh.v2f64(<2 x double> zeroinitializer)
ret <2 x double> %result
}


Loading