hotspot/src/cpu/x86/vm/x86_64.ad
changeset 35146 9ebfec283f56
parent 35135 dd2ce9021031
child 35540 e001ad24dcdb
equal deleted inserted replaced
35145:a4ffa2fa7f4d 35146:9ebfec283f56
  9862               Push_ResultXD(dst));
  9862               Push_ResultXD(dst));
  9863 
  9863 
  9864   ins_pipe( pipe_slow );
  9864   ins_pipe( pipe_slow );
  9865 %}
  9865 %}
  9866 
  9866 
  9867 instruct powD_reg(regD dst, regD src0, regD src1, rax_RegI rax, rdx_RegI rdx, rcx_RegI rcx, rFlagsReg cr) %{
       
  9868   match(Set dst (PowD src0 src1));  // Raise src0 to the src1'th power
       
  9869   effect(KILL rax, KILL rdx, KILL rcx, KILL cr);
       
  9870   format %{ "fast_pow $src0 $src1 -> $dst  // KILL $rax, $rcx, $rdx" %}
       
  9871   ins_encode %{
       
  9872     __ subptr(rsp, 8);
       
  9873     __ movdbl(Address(rsp, 0), $src1$$XMMRegister);
       
  9874     __ fld_d(Address(rsp, 0));
       
  9875     __ movdbl(Address(rsp, 0), $src0$$XMMRegister);
       
  9876     __ fld_d(Address(rsp, 0));
       
  9877     __ fast_pow();
       
  9878     __ fstp_d(Address(rsp, 0));
       
  9879     __ movdbl($dst$$XMMRegister, Address(rsp, 0));
       
  9880     __ addptr(rsp, 8);
       
  9881   %}
       
  9882   ins_pipe( pipe_slow );
       
  9883 %}
       
  9884 
       
  9885 //----------Arithmetic Conversion Instructions---------------------------------
  9867 //----------Arithmetic Conversion Instructions---------------------------------
  9886 
  9868 
  9887 instruct roundFloat_nop(regF dst)
  9869 instruct roundFloat_nop(regF dst)
  9888 %{
  9870 %{
  9889   match(Set dst (RoundFloat dst));
  9871   match(Set dst (RoundFloat dst));