<html><body>
<p><font size="2" face="sans-serif">Hi,</font><br>
<br>
<font size="2" face="sans-serif">Here's a more comprehensive patch also handling the fact that FP_EXTEND will later be removed for PPC. Accordingly, new patterns are implemented in the PPC-specific combiner:</font><br>
<br>
<tt><font size="2">> Finally, specifically for the PPC target, we could ignore FP_EXTEND<br>
> in the patterns above as it will be removed by the Machine Common<br>
> Subexpression Elimination pass. For instance:<br>
> <br>
> fold (fadd (fpext (fmul x, y)), z) -> (fma x, y, z)<br>
> fold (fadd (fpext (fma x, y, (fmul u, v))), z) -> (fma x, y (fma u,<br>
> v, z))</font></tt><br>
<br>
<font size="2" face="sans-serif">I also moved the tests in new files (fma-ext.ll, fma-assoc.ll) for more clarity.</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-v2.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 01/05/2015 10:44 AM</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">Olivier H Sallenave/Watson/IBM</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">To:        </font><font size="1" face="sans-serif">llvm-commits@cs.uiuc.edu</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Cc:        </font><font size="1" face="sans-serif">"Hal Finkel" <hfinkel@anl.gov></font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Date:      </font><font size="1" face="sans-serif">12/29/2014 05:09 PM</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Subject:   </font><font size="1" face="sans-serif">[PATCH] Fw: [LLVMdev] More FMA folding opportunities</font><br>
<hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br>
<br>
<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 on 12/29/2014 04:56 PM -----</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))<br>
> <br>
> This kind of reassociation generates two FMA for (x^2 + y^2 + z).<br>
<br>
Yes, this all sounds reasonable.<br>
<br>
Thanks again,<br>
Hal</font></tt></body></html>