[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
Sun Jan 11 02:39:26 PST 2026
================
@@ -106,3 +106,64 @@ 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 Intersect = LHS & RHS;
+ 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(Intersect == fcNone);
----------------
dtcxzyw wrote:
Rewrite as `(`LHS & RHS`) == fcNone` to avoid compiler warning on unused variable.
https://github.com/llvm/llvm-project/pull/175380
More information about the llvm-branch-commits
mailing list