Fixed logic to enable complex FMA formation.
authorOlivier Sallenave <ohsallen@us.ibm.com>
Wed, 22 Apr 2015 14:07:26 +0000 (14:07 +0000)
committerOlivier Sallenave <ohsallen@us.ibm.com>
Wed, 22 Apr 2015 14:07:26 +0000 (14:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235508 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp

index 4b98da707201e9f2020f025f226a69118d3dd738..f85582dc98bb2bf15bfac9fe4857ed2eaccfb44a 100644 (file)
@@ -7164,7 +7164,7 @@ SDValue DAGCombiner::visitFADDForFMACombine(SDNode *N) {
                                      N0));
     }
 
-    if (LookThroughFPExt) {
+    if (UnsafeFPMath && LookThroughFPExt) {
       // fold (fadd (fma x, y, (fpext (fmul u, v))), z)
       //   -> (fma x, y, (fma (fpext u), (fpext v), z))
       auto FoldFAddFMAFPExtFMul = [&] (
@@ -7415,7 +7415,7 @@ SDValue DAGCombiner::visitFSUBForFMACombine(SDNode *N) {
                                      N21, N0));
     }
 
-    if (LookThroughFPExt) {
+    if (UnsafeFPMath && LookThroughFPExt) {
       // fold (fsub (fma x, y, (fpext (fmul u, v))), z)
       //   -> (fma x, y (fma (fpext u), (fpext v), (fneg z)))
       if (N0.getOpcode() == PreferredFusedOpcode) {