[PATCH] D68265: [InstCombine] Simplify fma multiplication to nan for undef or nan operands.

Sanjay Patel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 1 14:33:34 PDT 2019


spatel added inline comments.


================
Comment at: llvm/lib/Analysis/InstructionSimplify.cpp:4612
   if (FMF.noNaNs() && FMF.noSignedZeros() && match(Op0, m_AnyZeroFP()))
     return ConstantFP::getNullValue(Op1->getType());
 
----------------
cameron.mcinally wrote:
> fhahn wrote:
> > cameron.mcinally wrote:
> > > Side note: these 2 transforms are not correct for X=Inf. I believe that they should return a QNaN in that case.
> > Yep thanks, I think we are missing `FMF.noInfs`, right?
> I think that's right.
> 
> I'm a little swamped on other projects right now, but I can add it to my TODO list if you'd like. Your call.
The reasoning here and in at least 1 other fold in instsimplify that I know of is relying on the definition provided in the LangRef:
"Allow optimizations to assume the arguments and result are not NaN"

0 * Inf produces NaN, but that's not an allowable result because of the 'nnan' on this fmul. Therefore, an infinity input can be implicitly disregarded.




Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D68265





More information about the llvm-commits mailing list