[PATCH] D147864: ValueTracking: Address todo for nan fmul handling in computeKnownFPClass

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 11 04:31:05 PDT 2023


nikic added inline comments.


================
Comment at: llvm/lib/Analysis/ValueTracking.cpp:4472
       // Zero multiplied with infinity produces NaN.
-      // FIXME: If neither side can be zero fmul never produces NaN.
-      if (KnownLHS.isKnownNeverNaN() && KnownLHS.isKnownNeverInfinity())
+      // If neither side can be zero (or nan) fmul never produces NaN.
+      if ((KnownLHS.isKnownNeverInfinity() || KnownLHS.isKnownNeverZero()) &&
----------------
Add TODO to check correct pairs? E.g. `nofpclass(inf nan zero) fmul nofpclass(nan)` should be fine, right? We need inf on one side and zero on the other.

Also, can you please remind me what happens if we multiply a denormal with flush to zero semantics with inf? Does that become inf or nan?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D147864/new/

https://reviews.llvm.org/D147864



More information about the llvm-commits mailing list