[llvm-dev] DAG Combines that drop flags (original) (raw)

Nemanja Ivanovic via llvm-dev llvm-dev at lists.llvm.org
Wed May 13 10:17:14 PDT 2020


While fixing something, I discovered that the DAG combiner will drop the flags from ISD::FMAXNUM if it is swapping operands to canonicalize the constant operand on the RHS. That is presumably because of this code in the DAG combiner: // Canonicalize to constant on RHS. if (isConstantFPBuildVectorOrConstantFP(N0) && !isConstantFPBuildVectorOrConstantFP(N1)) return DAG.getNode(N->getOpcode(), SDLoc(N), VT, N1, N0);

As a result, the DAG transformations that are applied to something like call fast <4 x float> @llvm.maxnum.v4f32(<4 x float> %3, <4 x float> zeroinitializer) vs. call fast <4 x float> @llvm.maxnum.v4f32(<4 x float> zeroinitializer, <4 x float> %3) will be very different.

I wanted to get some opinions on how prevalent this is and whether there is any effort ongoing to fix it. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200513/0cb6873b/attachment.html>



More information about the llvm-dev mailing list