[llvm] [llvm] add GenericFloatingPointPredicateUtils (PR #140254)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri May 16 07:51:23 PDT 2025


================
@@ -0,0 +1,42 @@
+//===- FloatingPointPredicateUtils.cpp - -----------*- C++
+//-*--------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Analysis/FloatingPointPredicateUtils.h"
+#include "llvm/IR/PatternMatch.h"
+#include <optional>
+
+namespace llvm {
+
+using namespace PatternMatch;
+
+template <>
+DenormalMode FloatingPointPredicateUtils::queryDenormalMode(const Function &F,
+                                                            Value *Val) {
+  Type *Ty = Val->getType()->getScalarType();
+  return F.getDenormalMode(Ty->getFltSemantics());
+}
+
+template <>
+bool FloatingPointPredicateUtils::lookThroughFAbs(const Function &F, Value *LHS,
+                                                  Value *&Src) {
+  return match(LHS, m_FAbs(m_Value(Src)));
+}
+
+template <>
+std::optional<APFloat>
+FloatingPointPredicateUtils::matchConstantFloat(const Function &F, Value *Val) {
+  const APFloat *ConstVal;
+
+  if (!match(Val, m_APFloatAllowPoison(ConstVal)))
+    return std::nullopt;
+
+  return *ConstVal;
+}
----------------
arsenm wrote:

Leave these in the header and just put the declare definition here? 

https://github.com/llvm/llvm-project/pull/140254


More information about the llvm-commits mailing list