diff options
author | Tim Gymnich <tim@gymni.ch> | 2025-03-28 18:10:02 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-28 18:10:02 +0100 |
commit | 049f179606a4af3ea650d7049626d267e01b79e2 (patch) | |
tree | 389c3b5704e26b180eb7ec76c71dc4750bab439d /llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp | |
parent | 133c1afa8e54d4e9599cb0d8aad843c03f0e63b9 (diff) | |
download | llvm-049f179606a4af3ea650d7049626d267e01b79e2.zip llvm-049f179606a4af3ea650d7049626d267e01b79e2.tar.gz llvm-049f179606a4af3ea650d7049626d267e01b79e2.tar.bz2 |
[Analysis][NFC] Extract KnownFPClass (#133457)
- extract KnownFPClass for future use inside of GISelKnownBits
---------
Co-authored-by: Matt Arsenault <arsenm2@gmail.com>
Diffstat (limited to 'llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp b/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp index ecb1076..2d0027d 100644 --- a/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Transforms/Utils/SimplifyLibCalls.h" +#include "llvm/ADT/APFloat.h" #include "llvm/ADT/APSInt.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringExtras.h" @@ -31,6 +32,7 @@ #include "llvm/Support/Casting.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/KnownBits.h" +#include "llvm/Support/KnownFPClass.h" #include "llvm/Support/MathExtras.h" #include "llvm/TargetParser/Triple.h" #include "llvm/Transforms/Utils/BuildLibCalls.h" @@ -2575,8 +2577,10 @@ Value *LibCallSimplifier::optimizeLog(CallInst *Log, IRBuilderBase &B) { KnownFPClass::OrderedLessThanZeroMask | fcSubnormal, /*Depth=*/0, SQ); Function *F = Log->getParent()->getParent(); - IsKnownNoErrno = Known.cannotBeOrderedLessThanZero() && - Known.isKnownNeverLogicalZero(*F, Ty); + const fltSemantics &FltSem = Ty->getScalarType()->getFltSemantics(); + IsKnownNoErrno = + Known.cannotBeOrderedLessThanZero() && + Known.isKnownNeverLogicalZero(F->getDenormalMode(FltSem)); } if (IsKnownNoErrno) { auto *NewLog = B.CreateUnaryIntrinsic(LogID, Log->getArgOperand(0), Log); @@ -2806,7 +2810,9 @@ Value *LibCallSimplifier::optimizeFMod(CallInst *CI, IRBuilderBase &B) { computeKnownFPClass(CI->getOperand(1), fcZero | fcSubnormal, /*Depth=*/0, SQ); Function *F = CI->getParent()->getParent(); - IsNoNan = Known1.isKnownNeverLogicalZero(*F, CI->getType()); + const fltSemantics &FltSem = + CI->getType()->getScalarType()->getFltSemantics(); + IsNoNan = Known1.isKnownNeverLogicalZero(F->getDenormalMode(FltSem)); } } |