< 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 >