mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-10 06:03:52 +00:00
[InstCombiner] Simplify lib calls to round{,f}
Differential Revision: https://reviews.llvm.org/D28110 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@290542 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
28c1ee71f3
commit
5825ccc67d
@ -1431,6 +1431,8 @@ bool llvm::canConstantFoldCallTo(const Function *F) {
|
||||
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 @@ Constant *ConstantFoldScalarCall(StringRef Name, unsigned IntrinsicID, Type *Ty,
|
||||
}
|
||||
}
|
||||
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)))
|
||||
|
@ -16,6 +16,7 @@ declare double @fmod(double, double) readnone nounwind
|
||||
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 @fmodf(float, float) readnone nounwind
|
||||
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
|
||||
@ -101,6 +103,9 @@ define double @T() {
|
||||
; FNOBUILTIN: call
|
||||
%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
|
||||
@ -152,6 +157,9 @@ define double @T() {
|
||||
; FNOBUILTIN: call
|
||||
%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
|
||||
|
Loading…
Reference in New Issue
Block a user