< prev index next >

src/cpu/x86/vm/c1_LIRAssembler_x86.cpp

Print this page

        

@@ -1343,10 +1343,22 @@
                       op->in_opr2(),
                       op->in_opr3(),
                       op->result_opr(),
                       op->info());
       break;
+    case lir_fmad:
+      __ vfmadd231sd(op->in_opr3()->as_xmm_double_reg(),
+                     op->in_opr1()->as_xmm_double_reg(),
+                     op->in_opr2()->as_xmm_double_reg());
+      __ movdqu(op->result_opr()->as_xmm_double_reg(), op->in_opr3()->as_xmm_double_reg());
+      break;
+    case lir_fmaf:
+      __ vfmadd231ss(op->in_opr3()->as_xmm_float_reg(),
+                     op->in_opr1()->as_xmm_float_reg(),
+                     op->in_opr2()->as_xmm_float_reg());
+      __ movdqu(op->result_opr()->as_xmm_float_reg(), op->in_opr3()->as_xmm_float_reg());
+      break;
     default:      ShouldNotReachHere(); break;
   }
 }
 
 void LIR_Assembler::emit_opBranch(LIR_OpBranch* op) {
< prev index next >