[PATCH] D10836: [ConstFolding] Allow constfolding of llvm.sin.* and llvm.cos.* intrinsics
Phabricator
reviews at reviews.llvm.org
Tue Jul 7 20:56:10 PDT 2015
This revision was automatically updated to reflect the committed changes.
Closed by commit rL241665: Allow constfolding of llvm.sin.* and llvm.cos.* intrinsics (authored by karthik).
Changed prior to commit:
http://reviews.llvm.org/D10836?vs=28767&id=29235#toc
Repository:
rL LLVM
http://reviews.llvm.org/D10836
Files:
llvm/trunk/lib/Analysis/ConstantFolding.cpp
llvm/trunk/test/Transforms/InstCombine/intrinsics.ll
Index: llvm/trunk/test/Transforms/InstCombine/intrinsics.ll
===================================================================
--- llvm/trunk/test/Transforms/InstCombine/intrinsics.ll
+++ llvm/trunk/test/Transforms/InstCombine/intrinsics.ll
@@ -17,6 +17,8 @@
declare i32 @llvm.ctlz.i32(i32, i1) nounwind readnone
declare i32 @llvm.ctpop.i32(i32) nounwind readnone
declare i8 @llvm.ctlz.i8(i8, i1) nounwind readnone
+declare double @llvm.cos.f64(double %Val) nounwind readonly
+declare double @llvm.sin.f64(double %Val) nounwind readonly
define i8 @uaddtest1(i8 %A, i8 %B) {
%x = call %overflow.result @llvm.uadd.with.overflow.i8(i8 %A, i8 %B)
@@ -425,3 +427,23 @@
; CHECK-NEXT: %[[x:.*]] = insertvalue %ov.result.32 { i32 undef, i1 false }, i32 %a, 0
; CHECK-NEXT: ret %ov.result.32 %[[x]]
}
+
+define void @cos(double *%P) {
+entry:
+ %B = tail call double @llvm.cos.f64(double 0.0) nounwind
+ store volatile double %B, double* %P
+
+ ret void
+; CHECK-LABEL: @cos(
+; CHECK: store volatile double 1.000000e+00, double* %P
+}
+
+define void @sin(double *%P) {
+entry:
+ %B = tail call double @llvm.sin.f64(double 0.0) nounwind
+ store volatile double %B, double* %P
+
+ ret void
+; CHECK-LABEL: @sin(
+; CHECK: store volatile double 0.000000e+00, double* %P
+}
Index: llvm/trunk/lib/Analysis/ConstantFolding.cpp
===================================================================
--- llvm/trunk/lib/Analysis/ConstantFolding.cpp
+++ llvm/trunk/lib/Analysis/ConstantFolding.cpp
@@ -1234,6 +1234,8 @@
case Intrinsic::floor:
case Intrinsic::ceil:
case Intrinsic::sqrt:
+ case Intrinsic::sin:
+ case Intrinsic::cos:
case Intrinsic::pow:
case Intrinsic::powi:
case Intrinsic::bswap:
@@ -1450,6 +1452,10 @@
return ConstantFoldFP(floor, V, Ty);
case Intrinsic::ceil:
return ConstantFoldFP(ceil, V, Ty);
+ case Intrinsic::sin:
+ return ConstantFoldFP(sin, V, Ty);
+ case Intrinsic::cos:
+ return ConstantFoldFP(cos, V, Ty);
}
if (!TLI)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10836.29235.patch
Type: text/x-patch
Size: 2047 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150708/02806d2e/attachment.bin>
More information about the llvm-commits
mailing list