--- a/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp Wed Jun 07 08:56:35 2017 -0700
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp Wed Jun 07 13:09:46 2017 -0700
@@ -3165,8 +3165,37 @@
}
}
-
-
+// dst = c = a * b + c
+void MacroAssembler::vfmad(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c, int vector_len) {
+ Assembler::vfmadd231pd(c, a, b, vector_len);
+ if (dst != c) {
+ vmovdqu(dst, c);
+ }
+}
+
+// dst = c = a * b + c
+void MacroAssembler::vfmaf(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c, int vector_len) {
+ Assembler::vfmadd231ps(c, a, b, vector_len);
+ if (dst != c) {
+ vmovdqu(dst, c);
+ }
+}
+
+// dst = c = a * b + c
+void MacroAssembler::vfmad(XMMRegister dst, XMMRegister a, Address b, XMMRegister c, int vector_len) {
+ Assembler::vfmadd231pd(c, a, b, vector_len);
+ if (dst != c) {
+ vmovdqu(dst, c);
+ }
+}
+
+// dst = c = a * b + c
+void MacroAssembler::vfmaf(XMMRegister dst, XMMRegister a, Address b, XMMRegister c, int vector_len) {
+ Assembler::vfmadd231ps(c, a, b, vector_len);
+ if (dst != c) {
+ vmovdqu(dst, c);
+ }
+}
void MacroAssembler::incrementl(AddressLiteral dst) {
if (reachable(dst)) {