< prev index next >
src/cpu/x86/vm/templateInterpreterGenerator_x86_32.cpp
Print this page
*** 339,348 ****
--- 339,369 ----
//
// stack: [ ret adr ] <-- rsp
// [ lo(arg) ]
// [ hi(arg) ]
//
+ if (kind == Interpreter::java_lang_math_fmaD) {
+ __ movdbl(xmm2, Address(rsp, 5 * wordSize));
+ __ movdbl(xmm1, Address(rsp, 3 * wordSize));
+ __ movdbl(xmm0, Address(rsp, 1 * wordSize));
+ __ vfmadd231sd(xmm0, xmm1, xmm2);
+ __ pop(rdi); // get return address
+ __ mov(rsp, rsi); // set sp to sender sp
+ __ jmp(rdi);
+
+ return entry_point;
+ } else if (kind == Interpreter::java_lang_math_fmaF) {
+ __ movdbl(xmm2, Address(rsp, 3 * wordSize));
+ __ movdbl(xmm1, Address(rsp, 2 * wordSize));
+ __ movdbl(xmm0, Address(rsp, 1 * wordSize));
+ __ vfmadd231ss(xmm0, xmm1, xmm2);
+ __ pop(rdi); // get return address
+ __ mov(rsp, rsi); // set sp to sender sp
+ __ jmp(rdi);
+
+ return entry_point;
+ }
__ fld_d(Address(rsp, 1*wordSize));
switch (kind) {
case Interpreter::java_lang_math_sin :
__ subptr(rsp, 2 * wordSize);
< prev index next >