aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
diff options
context:
space:
mode:
authorTim Gymnich <tim@gymni.ch>2025-03-28 18:10:02 +0100
committerGitHub <noreply@github.com>2025-03-28 18:10:02 +0100
commit049f179606a4af3ea650d7049626d267e01b79e2 (patch)
tree389c3b5704e26b180eb7ec76c71dc4750bab439d /llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
parent133c1afa8e54d4e9599cb0d8aad843c03f0e63b9 (diff)
downloadllvm-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.cpp12
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));
}
}