summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/ValueTracking.cpp
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2019-05-07 22:58:31 +0000
committerSanjay Patel <spatel@rotateright.com>2019-05-07 22:58:31 +0000
commite088d03b9c8b25589bbf35545399ae28a34df182 (patch)
treeee6008603c4b897a1b38cd1d5990b3cf413f32b9 /llvm/lib/Analysis/ValueTracking.cpp
parent0d8ae1e3435accab5130d71dfc872507043ca4f1 (diff)
downloadbcm5719-llvm-e088d03b9c8b25589bbf35545399ae28a34df182.tar.gz
bcm5719-llvm-e088d03b9c8b25589bbf35545399ae28a34df182.zip
[ValueTracking] add logic for known-never-nan with minnum/maxnum
From the LangRef: "Returns NaN only if both operands are NaN." llvm-svn: 360206
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r--llvm/lib/Analysis/ValueTracking.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index 7c16b21c928..54575441b71 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -3136,6 +3136,11 @@ bool llvm::isKnownNeverNaN(const Value *V, const TargetLibraryInfo *TLI,
case Intrinsic::sqrt:
return isKnownNeverNaN(II->getArgOperand(0), TLI, Depth + 1) &&
CannotBeOrderedLessThanZero(II->getArgOperand(0), TLI);
+ case Intrinsic::minnum:
+ case Intrinsic::maxnum:
+ // If either operand is not NaN, the result is not NaN.
+ return isKnownNeverNaN(II->getArgOperand(0), TLI, Depth + 1) ||
+ isKnownNeverNaN(II->getArgOperand(1), TLI, Depth + 1);
default:
return false;
}
OpenPOWER on IntegriCloud