< prev index next >
src/cpu/x86/vm/templateInterpreterGenerator_x86_64.cpp
Print this page
@@ -367,12 +367,21 @@
// stack: [ ret adr ] <-- rsp
// [ lo(arg) ]
// [ 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));
if (StubRoutines::dexp() != NULL) {
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dexp())));
< prev index next >