hotspot/src/cpu/x86/vm/x86_64.ad
changeset 12739 09f26b73ae66
parent 12268 f7897aacb9ce
child 12952 a1f3ff3a89e1
equal deleted inserted replaced
12623:09fcb0dc71ad 12739:09f26b73ae66
  9821               Opcode(0xD9), Opcode(0xF1),   // fyl2x
  9821               Opcode(0xD9), Opcode(0xF1),   // fyl2x
  9822               Push_ResultXD(dst));
  9822               Push_ResultXD(dst));
  9823   ins_pipe( pipe_slow );
  9823   ins_pipe( pipe_slow );
  9824 %}
  9824 %}
  9825 
  9825 
  9826 
  9826 instruct powD_reg(regD dst, regD src0, regD src1, rax_RegI rax, rdx_RegI rdx, rcx_RegI rcx, rFlagsReg cr) %{
       
  9827   match(Set dst (PowD src0 src1));  // Raise src0 to the src1'th power
       
  9828   effect(KILL rax, KILL rdx, KILL rcx, KILL cr);
       
  9829   format %{ "fast_pow $src0 $src1 -> $dst  // KILL $rax, $rcx, $rdx" %}
       
  9830   ins_encode %{
       
  9831     __ subptr(rsp, 8);
       
  9832     __ movdbl(Address(rsp, 0), $src1$$XMMRegister);
       
  9833     __ fld_d(Address(rsp, 0));
       
  9834     __ movdbl(Address(rsp, 0), $src0$$XMMRegister);
       
  9835     __ fld_d(Address(rsp, 0));
       
  9836     __ fast_pow();
       
  9837     __ fstp_d(Address(rsp, 0));
       
  9838     __ movdbl($dst$$XMMRegister, Address(rsp, 0));
       
  9839     __ addptr(rsp, 8);
       
  9840   %}
       
  9841   ins_pipe( pipe_slow );
       
  9842 %}
       
  9843 
       
  9844 instruct expD_reg(regD dst, regD src, rax_RegI rax, rdx_RegI rdx, rcx_RegI rcx, rFlagsReg cr) %{
       
  9845   match(Set dst (ExpD src));
       
  9846   effect(KILL rax, KILL rcx, KILL rdx, KILL cr);
       
  9847   format %{ "fast_exp $dst -> $src  // KILL $rax, $rcx, $rdx" %}
       
  9848   ins_encode %{
       
  9849     __ subptr(rsp, 8);
       
  9850     __ movdbl(Address(rsp, 0), $src$$XMMRegister);
       
  9851     __ fld_d(Address(rsp, 0));
       
  9852     __ fast_exp();
       
  9853     __ fstp_d(Address(rsp, 0));
       
  9854     __ movdbl($dst$$XMMRegister, Address(rsp, 0));
       
  9855     __ addptr(rsp, 8);
       
  9856   %}
       
  9857   ins_pipe( pipe_slow );
       
  9858 %}
  9827 
  9859 
  9828 //----------Arithmetic Conversion Instructions---------------------------------
  9860 //----------Arithmetic Conversion Instructions---------------------------------
  9829 
  9861 
  9830 instruct roundFloat_nop(regF dst)
  9862 instruct roundFloat_nop(regF dst)
  9831 %{
  9863 %{