[llvm] ValueTracking: Use m_CheckedFp in isKnownIntegral (PR #178019)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 26 10:56:31 PST 2026


https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/178019

None

>From ab310f3101141851c2bbee5e98b834dedcbfd8db Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Mon, 26 Jan 2026 19:28:04 +0100
Subject: [PATCH] ValueTracking: Use m_CheckedFp in isKnownIntegral

---
 llvm/lib/Analysis/ValueTracking.cpp | 21 +--------------------
 1 file changed, 1 insertion(+), 20 deletions(-)

diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index 9c4027dfced17..1d2a9464b7d5a 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -6236,27 +6236,8 @@ bool llvm::isKnownIntegral(const Value *V, const SimplifyQuery &SQ,
   if (isa<UndefValue>(V))
     return false;
 
-  if (const ConstantFP *CF = dyn_cast<ConstantFP>(V))
-    return CF->getValueAPF().isInteger();
-
-  auto *VFVTy = dyn_cast<FixedVectorType>(V->getType());
-  const Constant *CV = dyn_cast<Constant>(V);
-  if (VFVTy && CV) {
-    unsigned NumElts = VFVTy->getNumElements();
-    for (unsigned i = 0; i != NumElts; ++i) {
-      Constant *Elt = CV->getAggregateElement(i);
-      if (!Elt)
-        return false;
-      if (isa<PoisonValue>(Elt))
-        continue;
-
-      const ConstantFP *CFP = dyn_cast<ConstantFP>(Elt);
-      if (!CFP || !CFP->getValue().isInteger())
-        return false;
-    }
-
+  if (match(V, m_CheckedFp([](const APFloat &Val) { return Val.isInteger(); })))
     return true;
-  }
 
   const Instruction *I = dyn_cast<Instruction>(V);
   if (!I)



More information about the llvm-commits mailing list