[llvm] [SelectionDAG] Support sign tracking trough `{S|U}INT_TO_FP` (PR #82808)

via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 25 09:57:08 PST 2024


================
@@ -4004,6 +4004,19 @@ KnownBits SelectionDAG::computeKnownBits(SDValue Op, const APInt &DemandedElts,
 
     break;
   }
+  case ISD::UINT_TO_FP: {
+    Known.makeNonNegative();
+    break;
+  }
+  case ISD::SINT_TO_FP: {
+    Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
+    if (Known2.isNonNegative())
+      Known.makeNonNegative();
+    // For fp -> sint, need to guard -0 case.
+    else if (Known2.isNegative())
----------------
goldsteinn wrote:

Sorry, outdated comment (was originally doing `fptosi` as well).

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


More information about the llvm-commits mailing list