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

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 25 04:34:39 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())
----------------
arsenm wrote:

This can never produce -0 so I don't understand why it needs a check 

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


More information about the llvm-commits mailing list