================
@@ -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
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to