< prev index next >

src/cpu/x86/vm/templateInterpreterGenerator_x86_64.cpp

Print this page

        

*** 367,378 **** // stack: [ ret adr ] <-- rsp // [ lo(arg) ] // [ hi(arg) ] // ! ! 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)); if (StubRoutines::dexp() != NULL) { __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dexp()))); --- 367,387 ---- // stack: [ ret adr ] <-- rsp // [ lo(arg) ] // [ hi(arg) ] // ! 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)); if (StubRoutines::dexp() != NULL) { __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dexp())));
< prev index next >