<div dir="ltr">The code issue for me seems to be here:<div><div>  // Is the node an FMUL and contractable either due to global flags or</div><div>  // SDNodeFlags.</div><div>  auto isContractableFMUL = [AllowFusionGlobally](SDValue N) {</div><div>    if (N.getOpcode() != ISD::FMUL)</div><div>      return false;</div><div>    return AllowFusionGlobally || isContractable(N.getNode());</div><div>  };</div></div><div><br></div><div>The problem is that I'd like to have fast math set but also no contract nodes that don't specifically have contract/reassoc.</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Aug 21, 2018 at 11:04 AM Matt Arsenault <<a href="mailto:arsenm2@gmail.com">arsenm2@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
> On Aug 21, 2018, at 17:57, Ryan Taylor <<a href="mailto:ryta1203@gmail.com" target="_blank">ryta1203@gmail.com</a>> wrote:<br>
> <br>
> Matt,<br>
> I'm sorry, actually it's fma not fmad.<br>
> <br>
> In the post-legalizer DAG combine for the given code it's producing fma not fmad. That doens't seem correct.<br>
> <br>
<br>
The contract is on the fadd. I’m not really sure what the rule is supposed to be for contract between the nodes. The LangRef doesn’t clarify on this. I would assume it would need to be present on both?<br>
<br>
-Matt</blockquote></div>