[llvm-branch-commits] [llvm] ADT: Add utility functions for comparing FPClassTest (PR #175380)

Yingwei Zheng via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Jan 12 08:31:00 PST 2026


================
@@ -106,3 +106,58 @@ raw_ostream &llvm::operator<<(raw_ostream &OS, FPClassTest Mask) {
   OS << ')';
   return OS;
 }
+
+static bool cannotOrderStrictlyGreaterImpl(FPClassTest LHS, FPClassTest RHS,
+                                           bool OrEqual, bool OrderedZero) {
+  LHS &= ~fcNan;
+  RHS &= ~fcNan;
+
+  if (LHS == fcNone || RHS == fcNone)
+    return true;
+
+  FPClassTest LowestBitRHS = static_cast<FPClassTest>(RHS & -RHS);
+  FPClassTest HighestBitLHS = static_cast<FPClassTest>(1 << Log2_32(LHS));
+
+  if (!OrderedZero) {
+    // Introduce conflict in zero bits if we're treating them as equal.
+    if (LowestBitRHS == fcNegZero)
+      LowestBitRHS = fcPosZero;
+    if (HighestBitLHS == fcNegZero)
+      HighestBitLHS = fcPosZero;
+  }
+
+  if (LowestBitRHS > HighestBitLHS) {
+    assert((LHS & RHS) == fcNone && "no bits should intersect");
+    return true;
+  }
+
+  if (LowestBitRHS < HighestBitLHS)
+    return false;
+
+  constexpr FPClassTest ExactValuesMask = fcZero | fcInf;
+
+  if ((LowestBitRHS & ExactValuesMask) == fcNone)
----------------
dtcxzyw wrote:

Redundant if.

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


More information about the llvm-branch-commits mailing list