< prev index next >

src/cpu/x86/vm/macroAssembler_x86.hpp

Print this page




 893 
 894   void fld_d(Address src) { Assembler::fld_d(src); }
 895   void fld_d(AddressLiteral src);
 896 
 897   void fld_x(Address src) { Assembler::fld_x(src); }
 898   void fld_x(AddressLiteral src);
 899 
 900   void fmul_s(Address src)        { Assembler::fmul_s(src); }
 901   void fmul_s(AddressLiteral src) { Assembler::fmul_s(as_Address(src)); }
 902 
 903   void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
 904   void ldmxcsr(AddressLiteral src);
 905 
 906   // compute pow(x,y) and exp(x) with x86 instructions. Don't cover
 907   // all corner cases and may result in NaN and require fallback to a
 908   // runtime call.
 909   void fast_pow();
 910   void fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
 911                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
 912                 Register rax, Register rcx, Register rdx, Register tmp);











 913   void increase_precision();
 914   void restore_precision();
 915 
 916   // computes pow(x,y). Fallback to runtime call included.
 917   void pow_with_fallback(int num_fpu_regs_in_use) { pow_or_exp(num_fpu_regs_in_use); }
 918 
 919 private:
 920 
 921   // call runtime as a fallback for trig functions and pow/exp.
 922   void fp_runtime_fallback(address runtime_entry, int nb_args, int num_fpu_regs_in_use);
 923 
 924   // computes 2^(Ylog2X); Ylog2X in ST(0)
 925   void pow_exp_core_encoding();
 926 
 927   // computes pow(x,y) or exp(x). Fallback to runtime call included.
 928   void pow_or_exp(int num_fpu_regs_in_use);
 929 
 930   // these are private because users should be doing movflt/movdbl
 931 
 932   void movss(Address dst, XMMRegister src)     { Assembler::movss(dst, src); }




 893 
 894   void fld_d(Address src) { Assembler::fld_d(src); }
 895   void fld_d(AddressLiteral src);
 896 
 897   void fld_x(Address src) { Assembler::fld_x(src); }
 898   void fld_x(AddressLiteral src);
 899 
 900   void fmul_s(Address src)        { Assembler::fmul_s(src); }
 901   void fmul_s(AddressLiteral src) { Assembler::fmul_s(as_Address(src)); }
 902 
 903   void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
 904   void ldmxcsr(AddressLiteral src);
 905 
 906   // compute pow(x,y) and exp(x) with x86 instructions. Don't cover
 907   // all corner cases and may result in NaN and require fallback to a
 908   // runtime call.
 909   void fast_pow();
 910   void fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
 911                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
 912                 Register rax, Register rcx, Register rdx, Register tmp);
 913 #ifdef _LP64
 914   void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
 915                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
 916                 Register rax, Register rcx, Register rdx, Register tmp1, Register tmp2);
 917 #endif
 918 #ifndef _LP64
 919   void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
 920                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
 921                 Register rax, Register rcx, Register rdx, Register tmp);
 922 #endif
 923 
 924   void increase_precision();
 925   void restore_precision();
 926 
 927   // computes pow(x,y). Fallback to runtime call included.
 928   void pow_with_fallback(int num_fpu_regs_in_use) { pow_or_exp(num_fpu_regs_in_use); }
 929 
 930 private:
 931 
 932   // call runtime as a fallback for trig functions and pow/exp.
 933   void fp_runtime_fallback(address runtime_entry, int nb_args, int num_fpu_regs_in_use);
 934 
 935   // computes 2^(Ylog2X); Ylog2X in ST(0)
 936   void pow_exp_core_encoding();
 937 
 938   // computes pow(x,y) or exp(x). Fallback to runtime call included.
 939   void pow_or_exp(int num_fpu_regs_in_use);
 940 
 941   // these are private because users should be doing movflt/movdbl
 942 
 943   void movss(Address dst, XMMRegister src)     { Assembler::movss(dst, src); }


< prev index next >