[PATCH] D23313: X86: FMA intrinsic + FNEG - sequence optimization

Elena Demikhovsky via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 31 00:36:08 PDT 2016


delena marked 2 inline comments as done.

================
Comment at: ../lib/Target/X86/X86ISelLowering.cpp:30361-30373
@@ -30360,3 +30360,15 @@
                          Arg.getOperand(1), Arg.getOperand(2));
+    case X86ISD::FMADD_RND:
+      return DAG.getNode(X86ISD::FNMSUB_RND, DL, VT, Arg.getOperand(0),
+                         Arg.getOperand(1), Arg.getOperand(2), Arg.getOperand(3));
+    case X86ISD::FMSUB_RND:
+      return DAG.getNode(X86ISD::FNMADD_RND, DL, VT, Arg.getOperand(0),
+                         Arg.getOperand(1), Arg.getOperand(2), Arg.getOperand(3));
+    case X86ISD::FNMADD_RND:
+      return DAG.getNode(X86ISD::FMSUB_RND, DL, VT, Arg.getOperand(0),
+                         Arg.getOperand(1), Arg.getOperand(2), Arg.getOperand(3));
+    case X86ISD::FNMSUB_RND:
+      return DAG.getNode(X86ISD::FMADD_RND, DL, VT, Arg.getOperand(0),
+                         Arg.getOperand(1), Arg.getOperand(2), Arg.getOperand(3));
     }
   }
----------------
spatel wrote:
> Are the *RND changes independent of the fneg bug fix? If yes, can you separate them from this patch?
The goal of this patch is to combine FNEG with FMA intrinsics.
*_RND nodes are generated from intrinsics only. 
Here we are combining the following patterns:
FNEG ( avx512.mask.fm* a, b ,c) and
FNEG ( avx512.mask.fm* a, b ,c, Rounding)


Repository:
  rL LLVM

https://reviews.llvm.org/D23313





More information about the llvm-commits mailing list