[PATCH] D28110: [InstCombiner] Simplify lib calls to `round{,f}`
bryant via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 26 06:40:12 PST 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL290542: [InstCombiner] Simplify lib calls to `round{,f}` (authored by bryant).
Changed prior to commit:
https://reviews.llvm.org/D28110?vs=82480&id=82499#toc
Repository:
rL LLVM
https://reviews.llvm.org/D28110
Files:
llvm/trunk/lib/Analysis/ConstantFolding.cpp
llvm/trunk/test/Transforms/ConstProp/calls.ll
Index: llvm/trunk/test/Transforms/ConstProp/calls.ll
===================================================================
--- llvm/trunk/test/Transforms/ConstProp/calls.ll
+++ llvm/trunk/test/Transforms/ConstProp/calls.ll
@@ -16,6 +16,7 @@
declare double @log(double) readnone nounwind
declare double @log10(double) readnone nounwind
declare double @pow(double, double) readnone nounwind
+declare double @round(double) readnone nounwind
declare double @sin(double) readnone nounwind
declare double @sinh(double) readnone nounwind
declare double @sqrt(double) readnone nounwind
@@ -37,6 +38,7 @@
declare float @logf(float) readnone nounwind
declare float @log10f(float) readnone nounwind
declare float @powf(float, float) readnone nounwind
+declare float @roundf(float) readnone nounwind
declare float @sinf(float) readnone nounwind
declare float @sinhf(float) readnone nounwind
declare float @sqrtf(float) readnone nounwind
@@ -102,6 +104,9 @@
%14 = call double @pow(double 3.000000e+00, double 4.000000e+00)
store double %14, double* %slot
; FNOBUILTIN: call
+ %round_val = call double @round(double 3.000000e+00)
+ store double %round_val, double* %slot
+; FNOBUILTIN: call
%15 = call double @sinh(double 3.000000e+00)
store double %15, double* %slot
; FNOBUILTIN: call
@@ -153,6 +158,9 @@
%31 = call float @powf(float 3.000000e+00, float 4.000000e+00)
store float %31, float* %slotf
; FNOBUILTIN: call
+ %roundf_val = call float @roundf(float 3.000000e+00)
+ store float %roundf_val, float* %slotf
+; FNOBUILTIN: call
%32 = call float @sinf(float 3.000000e+00)
store float %32, float* %slotf
; FNOBUILTIN: call
Index: llvm/trunk/lib/Analysis/ConstantFolding.cpp
===================================================================
--- llvm/trunk/lib/Analysis/ConstantFolding.cpp
+++ llvm/trunk/lib/Analysis/ConstantFolding.cpp
@@ -1431,6 +1431,8 @@
Name == "log10f";
case 'p':
return Name == "pow" || Name == "powf";
+ case 'r':
+ return Name == "round" || Name == "roundf";
case 's':
return Name == "sin" || Name == "sinh" || Name == "sqrt" ||
Name == "sinf" || Name == "sinhf" || Name == "sqrtf";
@@ -1695,6 +1697,10 @@
}
}
break;
+ case 'r':
+ if ((Name == "round" && TLI->has(LibFunc::round)) ||
+ (Name == "roundf" && TLI->has(LibFunc::roundf)))
+ return ConstantFoldFP(round, V, Ty);
case 's':
if ((Name == "sin" && TLI->has(LibFunc::sin)) ||
(Name == "sinf" && TLI->has(LibFunc::sinf)))
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D28110.82499.patch
Type: text/x-patch
Size: 2573 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161226/235385d1/attachment.bin>
More information about the llvm-commits
mailing list