<div class="gmail_extra">Why not just form them via a fast IR level pass and just have patterns match in fast isel instead of trying to form code? Or are we saying the same thing? (Your words of "fast isel spot"ting and "form better code" caused me to think you mean to do optimizations within the fast isel pass).</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">-eric<br><br><div class="gmail_quote">On Wed, Dec 12, 2012 at 5:14 PM, Michael Ilseman <span dir="ltr"><<a href="mailto:milseman@apple.com" target="_blank">milseman@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Right now we're shying towards having a re-association helper in codegen-prepare that will re-associate expressions (if allowed). This would allow fast-isel to more easily spot FMA opportunities, and form better code.<div>
<div class="h5"><div><br><div><div>On Dec 12, 2012, at 5:11 PM, Eric Christopher <<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a>> wrote:</div><br><blockquote type="cite"><br><div class="gmail_extra">
<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>You hit send right when I did!</div>
<div>For your example, do you mean that it's grouped like:</div><div>(fadd (fadd (fmul a b) (fmul c d)) e)</div><div><br></div><div>How would your pass go about handling these patterns and is that something that would be too complicated for fast-isel to do on the fly?</div>

</div><br></blockquote></div><br></div><div class="gmail_extra">Depends on how they're grouped, but if the formation happens prior to codegen then fast-isel will just handle whatever new instruction you've got. An example of IR would be useful though :)</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">-eric</div>
</blockquote></div><br></div></div></div></div>
</blockquote></div><br></div>