[PATCH] D139032: InstCombine: Handle folding some negated is_fpclass mask test cases

Jay Foad via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 30 23:40:17 PST 2022


foad added inline comments.


================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp:854
+  if (Mask == (~fcZero & fcAllFlags) && !IsStrict) {
+    // Equivalent of !(x == 0).
+    Value *FCmp =
----------------
jcranmer-intel wrote:
> foad wrote:
> > That's also equivalent to `!= 0` - at least for the usual mapping of C-like comparison operators onto fp predicates.
> They're not equivalent: `!(x == 0)` is true if x is NaN, and `x != 0` is false if x is NaN.
They are equivalent. The usual mapping is that `==` means `oeq` and `!=` means `une`. See for example F.9.3 in the C spec or https://github.com/llvm/llvm-project/blob/df43ec30ab66f5af7bbf87e121e0fe26aad478b4/clang/lib/CodeGen/CGExprScalar.cpp#L865


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

https://reviews.llvm.org/D139032



More information about the llvm-commits mailing list