[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
- Previous message: [llvm-dev] question on instruction bundles
- Next message: [llvm-dev] DAG Combines that drop flags
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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>
- Previous message: [llvm-dev] question on instruction bundles
- Next message: [llvm-dev] DAG Combines that drop flags
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]