[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