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