<html><body>
<p><font size="2" face="sans-serif">Hi,</font><br>
<br>
<font size="2" face="sans-serif">Attached is a patch to support more FMA folding opportunities (especially for PPC) as discussed below.</font><br>
<br>
<font size="2" face="sans-serif">Thanks,</font><br>
<font size="2" face="sans-serif">Olivier</font><br>
<br>
<i>(See attached file: patch.diff)</i><br>
<br>
<br>
<br>
<font size="1" color="#800080" face="sans-serif">----- Forwarded by Olivier H Sallenave/Watson/IBM</font><font size="1" color="#800080" face="sans-serif"> on 12/29/2014 04:56 PM</font><font size="1" color="#800080" face="sans-serif"> -----</font><br>
<br>
<font size="1" color="#5F5F5F" face="sans-serif">From:      </font><font size="1" face="sans-serif">Hal Finkel <hfinkel@anl.gov></font><br>
<font size="1" color="#5F5F5F" face="sans-serif">To:        </font><font size="1" face="sans-serif">Olivier H Sallenave/Watson/IBM@IBMUS</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Cc:        </font><font size="1" face="sans-serif"><llvmdev@cs.uiuc.edu></font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Date:      </font><font size="1" face="sans-serif">09/30/2014 08:08 PM</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Subject:   </font><font size="1" face="sans-serif">Re: [LLVMdev] More FMA folding opportunities</font><br>
<hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br>
<br>
<br>
<tt><font size="2">----- Original Message -----<br>
> From: "Olivier H Sallenave" <ohsallen@us.ibm.com><br>
> To: llvmdev@cs.uiuc.edu<br>
> Sent: Monday, September 29, 2014 3:34:51 PM<br>
> Subject: [LLVMdev] More FMA folding opportunities<br>
> <br>
> Hi,<br>
> <br>
> I think more opportunities might be added for FMA in the DAG<br>
> combiner, please tell me what you think. Right now, those cases are<br>
> implemented:<br>
> <br>
> fold (fadd (fmul x, y), z) -> (fma x, y, z)<br>
> fold (fadd x, (fmul y, z)) -> (fma y, z, x)<br>
> <br>
> When the TLI callback "enableAggressiveFMAFusion" returns true, we<br>
> might also support:<br>
> <br>
> fold (fadd (fma x, y, (fmul u, v)), z) -> (fma x, y (fma u, v, z))<br>
> fold (fadd x, (fma y, z, (fmul u, v)) -> (fma y, z (fma u, v, x))</font></tt><tt><font size="2"><br>
> <br>
> This kind of reassociation generates two FMA for (x^2 + y^2 + z).</font></tt><br>
<tt><font size="2"><br>
<br>
Yes, this all sounds reasonable.<br>
<br>
Thanks again,<br>
Hal</font></tt></body></html>