--- old/src/cpu/x86/vm/macroAssembler_x86.cpp 2017-06-07 10:41:23.159291600 -0700 +++ new/src/cpu/x86/vm/macroAssembler_x86.cpp 2017-06-07 10:41:22.490917000 -0700 @@ -3163,8 +3163,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)) {