diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2014-10-21 23:00:20 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2014-10-21 23:00:20 +0000 |
commit | d6511b49ace8e3d55ad43beb2cb142022a8032cc (patch) | |
tree | ec95b0252ce02c2c5f0445bdbdb53d0081bd9f4c /llvm/lib/Analysis/ValueTracking.cpp | |
parent | 44e5b4e533a92ff44ae57cf0129398b162e82bf6 (diff) | |
download | llvm-d6511b49ace8e3d55ad43beb2cb142022a8032cc.zip llvm-d6511b49ace8e3d55ad43beb2cb142022a8032cc.tar.gz llvm-d6511b49ace8e3d55ad43beb2cb142022a8032cc.tar.bz2 |
Add minnum / maxnum intrinsics
These are named following the IEEE-754 names for these
functions, rather than the libm fmin / fmax to avoid
possible ambiguities. Some languages may implement something
resembling fmin / fmax which return NaN if either operand is
to propagate errors. These implement the IEEE-754 semantics
of returning the other operand if either is a NaN representing
missing data.
llvm-svn: 220341
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 53f3be5..87a6b83 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -2578,6 +2578,8 @@ bool llvm::isSafeToSpeculativelyExecute(const Value *V, case Intrinsic::fma: case Intrinsic::fmuladd: case Intrinsic::fabs: + case Intrinsic::minnum: + case Intrinsic::maxnum: return true; // TODO: some fp intrinsics are marked as having the same error handling // as libm. They're safe to speculate when they won't error. |