--- old/src/cpu/x86/vm/templateInterpreterGenerator_x86_64.cpp 2016-07-13 16:45:01.628461500 -0700 +++ new/src/cpu/x86/vm/templateInterpreterGenerator_x86_64.cpp 2016-07-13 16:45:01.299461500 -0700 @@ -369,8 +369,17 @@ // [ hi(arg) ] // - - if (kind == Interpreter::java_lang_math_sqrt) { + if (kind == Interpreter::java_lang_math_fmaD) { + __ movdbl(xmm0, Address(rsp, wordSize)); + __ movdbl(xmm1, Address(rsp, 3 * wordSize)); + __ movdbl(xmm2, Address(rsp, 5 * wordSize)); + __ vfmadd231sd(xmm0, xmm1, xmm2); + } else if (kind == Interpreter::java_lang_math_fmaF) { + __ movdbl(xmm0, Address(rsp, wordSize)); + __ movdbl(xmm1, Address(rsp, 2 * wordSize)); + __ movdbl(xmm2, Address(rsp, 3 * wordSize)); + __ vfmadd231ss(xmm0, xmm1, xmm2); + } else if (kind == Interpreter::java_lang_math_sqrt) { __ sqrtsd(xmm0, Address(rsp, wordSize)); } else if (kind == Interpreter::java_lang_math_exp) { __ movdbl(xmm0, Address(rsp, wordSize));