916 Register rax, Register rcx, Register rdx, Register tmp); |
916 Register rax, Register rcx, Register rdx, Register tmp); |
917 |
917 |
918 void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, |
918 void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, |
919 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, |
919 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, |
920 Register rax, Register rcx, Register rdx, Register tmp1 LP64_ONLY(COMMA Register tmp2)); |
920 Register rax, Register rcx, Register rdx, Register tmp1 LP64_ONLY(COMMA Register tmp2)); |
|
921 void fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, |
|
922 XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register rax, Register rcx, |
|
923 Register rdx NOT_LP64(COMMA Register tmp) LP64_ONLY(COMMA Register tmp1) |
|
924 LP64_ONLY(COMMA Register tmp2) LP64_ONLY(COMMA Register tmp3) LP64_ONLY(COMMA Register tmp4)); |
921 |
925 |
922 void increase_precision(); |
926 void increase_precision(); |
923 void restore_precision(); |
927 void restore_precision(); |
924 |
928 |
925 // computes pow(x,y). Fallback to runtime call included. |
|
926 void pow_with_fallback(int num_fpu_regs_in_use) { pow_or_exp(num_fpu_regs_in_use); } |
|
927 |
|
928 private: |
929 private: |
929 |
930 |
930 // call runtime as a fallback for trig functions and pow/exp. |
931 // call runtime as a fallback for trig functions and pow/exp. |
931 void fp_runtime_fallback(address runtime_entry, int nb_args, int num_fpu_regs_in_use); |
932 void fp_runtime_fallback(address runtime_entry, int nb_args, int num_fpu_regs_in_use); |
932 |
|
933 // computes 2^(Ylog2X); Ylog2X in ST(0) |
|
934 void pow_exp_core_encoding(); |
|
935 |
|
936 // computes pow(x,y) or exp(x). Fallback to runtime call included. |
|
937 void pow_or_exp(int num_fpu_regs_in_use); |
|
938 |
933 |
939 // these are private because users should be doing movflt/movdbl |
934 // these are private because users should be doing movflt/movdbl |
940 |
935 |
941 void movss(Address dst, XMMRegister src) { Assembler::movss(dst, src); } |
936 void movss(Address dst, XMMRegister src) { Assembler::movss(dst, src); } |
942 void movss(XMMRegister dst, XMMRegister src) { Assembler::movss(dst, src); } |
937 void movss(XMMRegister dst, XMMRegister src) { Assembler::movss(dst, src); } |