<div dir="ltr">Why is isContractableFMUL different from isContractable?</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Aug 21, 2018 at 3:16 PM Ryan Taylor <<a href="mailto:ryta1203@gmail.com">ryta1203@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">For this code:<div><br></div><div><div>  %20 = fmul reassoc nnan arcp contract float %15, %19</div><div>  %21 = fadd nnan arcp float %20, -1.000000e+00</div></div><div><br></div><div>This does not result in fused multiply-add. </div><div><br></div><div>it seems like the logic to contact the fmul from the fadd is different than whether to decide to contract the fadd. I would think the logic would be the same for each instruction in the pair.</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Aug 21, 2018 at 2:05 PM Ryan Taylor <<a href="mailto:ryta1203@gmail.com" target="_blank">ryta1203@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">As far as being present on both, I'm not sure why that would be the case. If one instruction doesn't have contract or reassoc, then it should be allowed to be contracted or reassociated despite any other instruction flags.<div> </div><div>That's my interpretation of what it should mean, otherwise, you'd have to pair each possible combination.</div><div><br></div><div><br></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" target="_blank">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>
</blockquote></div>
</blockquote></div>