diff options
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineAtomicRMW.cpp')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineAtomicRMW.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAtomicRMW.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAtomicRMW.cpp index 2540e545ae4d..0327efbf9614 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineAtomicRMW.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineAtomicRMW.cpp @@ -61,7 +61,13 @@ bool isIdempotentRMW(AtomicRMWInst& RMWI) { /// equivalent to its value operand. bool isSaturating(AtomicRMWInst& RMWI) { if (auto CF = dyn_cast<ConstantFP>(RMWI.getValOperand())) - switch(RMWI.getOperation()) { + switch (RMWI.getOperation()) { + case AtomicRMWInst::FMax: + // maxnum(x, +inf) -> +inf + return !CF->isNegative() && CF->isInfinity(); + case AtomicRMWInst::FMin: + // minnum(x, -inf) -> +inf + return CF->isNegative() && CF->isInfinity(); case AtomicRMWInst::FAdd: case AtomicRMWInst::FSub: return CF->isNaN(); |