diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2022-12-04 08:29:17 -0500 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2022-12-20 12:45:07 -0500 |
commit | 4e37d00b9dcd88dbe76ad1d3c6d7cb84b8dd28aa (patch) | |
tree | a242715c423fdc18833d537aaaf66cb931da56e7 /llvm/lib/Analysis/ValueTracking.cpp | |
parent | 2bfe62ed6a52e2ac92ead8203afe585e5da3c83a (diff) | |
download | llvm-4e37d00b9dcd88dbe76ad1d3c6d7cb84b8dd28aa.zip llvm-4e37d00b9dcd88dbe76ad1d3c6d7cb84b8dd28aa.tar.gz llvm-4e37d00b9dcd88dbe76ad1d3c6d7cb84b8dd28aa.tar.bz2 |
ValueTracking: Teach isKnownNeverInfinity about rounding intrinsics
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 36fcec9..c25506e 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -3807,7 +3807,21 @@ bool llvm::isKnownNeverInfinity(const Value *V, const TargetLibraryInfo *TLI, case Intrinsic::canonicalize: case Intrinsic::copysign: case Intrinsic::arithmetic_fence: + case Intrinsic::trunc: return isKnownNeverInfinity(Inst->getOperand(0), TLI, Depth + 1); + case Intrinsic::floor: + case Intrinsic::ceil: + case Intrinsic::rint: + case Intrinsic::nearbyint: + case Intrinsic::round: + case Intrinsic::roundeven: + // PPC_FP128 is a special case. + if (V->getType()->isMultiUnitFPType()) + return false; + return isKnownNeverInfinity(Inst->getOperand(0), TLI, Depth + 1); + case Intrinsic::fptrunc_round: + // Requires knowing the value range. + return false; default: break; } |