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