diff options
author | Lewis Crawford <lcrawford@nvidia.com> | 2025-10-07 14:23:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-10-07 14:23:32 +0100 |
commit | 17efa572c3827fe12e37d0f1f28d20a8e44890c7 (patch) | |
tree | 35d2249dc1789dcb8e3c53725bad8c15424e2c79 /llvm/lib/Analysis/ValueTracking.cpp | |
parent | a798a104344deb8d30d6569564079fe06203d31d (diff) | |
download | llvm-17efa572c3827fe12e37d0f1f28d20a8e44890c7.zip llvm-17efa572c3827fe12e37d0f1f28d20a8e44890c7.tar.gz llvm-17efa572c3827fe12e37d0f1f28d20a8e44890c7.tar.bz2 |
[InstSimplify] Optimize maximumnum and minimumnum (#139581)
Add support for the new maximumnum and minimumnum intrinsics in various
optimizations in InstSimplify.
Also, change the behavior of optimizing maxnum(sNaN, x) to simplify to
qNaN instead of x to better match the LLVM IR spec, and add more tests
for sNaN behavior for all 3 max/min intrinsic types.
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index a42c061..9655c88 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -9095,6 +9095,10 @@ Intrinsic::ID llvm::getInverseMinMaxIntrinsic(Intrinsic::ID MinMaxID) { case Intrinsic::minimum: return Intrinsic::maximum; case Intrinsic::maxnum: return Intrinsic::minnum; case Intrinsic::minnum: return Intrinsic::maxnum; + case Intrinsic::maximumnum: + return Intrinsic::minimumnum; + case Intrinsic::minimumnum: + return Intrinsic::maximumnum; default: llvm_unreachable("Unexpected intrinsic"); } } |