hotspot/src/cpu/x86/vm/macroAssembler_x86.hpp
changeset 36555 4f37fd7a5a09
parent 36554 a7eb9ee4680c
child 36561 b18243f4d955
equal deleted inserted replaced
36554:a7eb9ee4680c 36555:4f37fd7a5a09
    46   // Support for VM calls
    46   // Support for VM calls
    47   //
    47   //
    48   // This is the base routine called by the different versions of call_VM_leaf. The interpreter
    48   // This is the base routine called by the different versions of call_VM_leaf. The interpreter
    49   // may customize this version by overriding it for its purposes (e.g., to save/restore
    49   // may customize this version by overriding it for its purposes (e.g., to save/restore
    50   // additional registers when doing a VM call).
    50   // additional registers when doing a VM call).
    51 #define COMMA ,
       
    52 
    51 
    53   virtual void call_VM_leaf_base(
    52   virtual void call_VM_leaf_base(
    54     address entry_point,               // the entry point
    53     address entry_point,               // the entry point
    55     int     number_of_arguments        // the number of arguments to pop after the call
    54     int     number_of_arguments        // the number of arguments to pop after the call
    56   );
    55   );
   901   void fmul_s(AddressLiteral src) { Assembler::fmul_s(as_Address(src)); }
   900   void fmul_s(AddressLiteral src) { Assembler::fmul_s(as_Address(src)); }
   902 
   901 
   903   void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
   902   void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
   904   void ldmxcsr(AddressLiteral src);
   903   void ldmxcsr(AddressLiteral src);
   905 
   904 
       
   905   void fast_sha1(XMMRegister abcd, XMMRegister e0, XMMRegister e1, XMMRegister msg0,
       
   906                  XMMRegister msg1, XMMRegister msg2, XMMRegister msg3, XMMRegister shuf_mask,
       
   907                  Register buf, Register state, Register ofs, Register limit, Register rsp,
       
   908                  bool multi_block);
       
   909 
       
   910 #ifdef _LP64
       
   911   void fast_sha256(XMMRegister msg, XMMRegister state0, XMMRegister state1, XMMRegister msgtmp0,
       
   912                    XMMRegister msgtmp1, XMMRegister msgtmp2, XMMRegister msgtmp3, XMMRegister msgtmp4,
       
   913                    Register buf, Register state, Register ofs, Register limit, Register rsp,
       
   914                    bool multi_block, XMMRegister shuf_mask);
       
   915 #else
       
   916   void fast_sha256(XMMRegister msg, XMMRegister state0, XMMRegister state1, XMMRegister msgtmp0,
       
   917                    XMMRegister msgtmp1, XMMRegister msgtmp2, XMMRegister msgtmp3, XMMRegister msgtmp4,
       
   918                    Register buf, Register state, Register ofs, Register limit, Register rsp,
       
   919                    bool multi_block);
       
   920 #endif
       
   921 
   906   void fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
   922   void fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
   907                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
   923                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
   908                 Register rax, Register rcx, Register rdx, Register tmp);
   924                 Register rax, Register rcx, Register rdx, Register tmp);
   909 
   925 
       
   926 #ifdef _LP64
   910   void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
   927   void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
   911                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
   928                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
   912                 Register rax, Register rcx, Register rdx, Register tmp1 LP64_ONLY(COMMA Register tmp2));
   929                 Register rax, Register rcx, Register rdx, Register tmp1, Register tmp2);
   913 
   930 
   914   void fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4,
   931   void fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4,
   915                 XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register rax, Register rcx,
   932                 XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register rax, Register rcx,
   916                 Register rdx NOT_LP64(COMMA  Register tmp) LP64_ONLY(COMMA  Register tmp1)
   933                 Register rdx, Register tmp1, Register tmp2, Register tmp3, Register tmp4);
   917                 LP64_ONLY(COMMA  Register tmp2) LP64_ONLY(COMMA  Register tmp3) LP64_ONLY(COMMA  Register tmp4));
       
   918 
   934 
   919   void fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
   935   void fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
   920                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
   936                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
   921                 Register rax, Register rbx LP64_ONLY(COMMA  Register rcx), Register rdx
   937                 Register rax, Register rbx, Register rcx, Register rdx, Register tmp1, Register tmp2,
   922                 LP64_ONLY(COMMA Register tmp1) LP64_ONLY(COMMA Register tmp2)
   938                 Register tmp3, Register tmp4);
   923                 LP64_ONLY(COMMA Register tmp3) LP64_ONLY(COMMA Register tmp4));
       
   924 
   939 
   925   void fast_cos(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
   940   void fast_cos(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
   926                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
   941                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
   927                 Register rax, Register rcx, Register rdx NOT_LP64(COMMA Register tmp)
   942                 Register rax, Register rcx, Register rdx, Register tmp1,
   928                 LP64_ONLY(COMMA Register r8) LP64_ONLY(COMMA Register r9)
   943                 Register tmp2, Register tmp3, Register tmp4);
   929                 LP64_ONLY(COMMA Register r10) LP64_ONLY(COMMA Register r11));
   944 #else
   930 
   945   void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
   931 #ifndef _LP64
   946                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
       
   947                 Register rax, Register rcx, Register rdx, Register tmp1);
       
   948 
       
   949   void fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4,
       
   950                 XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register rax, Register rcx,
       
   951                 Register rdx, Register tmp);
       
   952 
       
   953   void fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
       
   954                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
       
   955                 Register rax, Register rbx, Register rdx);
       
   956 
       
   957   void fast_cos(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
       
   958                 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
       
   959                 Register rax, Register rcx, Register rdx, Register tmp);
       
   960 
   932   void libm_sincos_huge(XMMRegister xmm0, XMMRegister xmm1, Register eax, Register ecx,
   961   void libm_sincos_huge(XMMRegister xmm0, XMMRegister xmm1, Register eax, Register ecx,
   933                         Register edx, Register ebx, Register esi, Register edi,
   962                         Register edx, Register ebx, Register esi, Register edi,
   934                         Register ebp, Register esp);
   963                         Register ebp, Register esp);
       
   964 
   935   void libm_reduce_pi04l(Register eax, Register ecx, Register edx, Register ebx,
   965   void libm_reduce_pi04l(Register eax, Register ecx, Register edx, Register ebx,
   936                          Register esi, Register edi, Register ebp, Register esp);
   966                          Register esi, Register edi, Register ebp, Register esp);
   937 #endif
   967 #endif
   938 
   968 
   939   void increase_precision();
   969   void increase_precision();