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 922 void fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 923 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 924 Register rax, Register rcx, Register rdx, Register tmp); 925 926 #ifdef _LP64 927 void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 928 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 929 Register rax, Register rcx, Register rdx, Register tmp1, Register tmp2); 930 931 void fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, 932 XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register rax, Register rcx, 933 Register rdx, Register tmp1, Register tmp2, Register tmp3, Register tmp4); 934 935 void fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 936 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 937 Register rax, Register rbx, Register rcx, Register rdx, Register tmp1, Register tmp2, 938 Register tmp3, Register tmp4); 939 940 void fast_cos(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 941 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 942 Register rax, Register rcx, Register rdx, Register tmp1, 943 Register tmp2, Register tmp3, Register tmp4); 944 #else 945 void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 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 961 void libm_sincos_huge(XMMRegister xmm0, XMMRegister xmm1, Register eax, Register ecx, 962 Register edx, Register ebx, Register esi, Register edi, 963 Register ebp, Register esp); 964 965 void libm_reduce_pi04l(Register eax, Register ecx, Register edx, Register ebx, 966 Register esi, Register edi, Register ebp, Register esp); 967 #endif 968 969 void increase_precision(); 970 void restore_precision(); 971 972 private: 973 974 // call runtime as a fallback for trig functions and pow/exp. 975 void fp_runtime_fallback(address runtime_entry, int nb_args, int num_fpu_regs_in_use); 976 977 // these are private because users should be doing movflt/movdbl 978 979 void movss(Address dst, XMMRegister src) { Assembler::movss(dst, src); } 980 void movss(XMMRegister dst, XMMRegister src) { Assembler::movss(dst, src); } 981 void movss(XMMRegister dst, Address src) { Assembler::movss(dst, src); } 982 void movss(XMMRegister dst, AddressLiteral src); 983 984 void movlpd(XMMRegister dst, Address src) {Assembler::movlpd(dst, src); } 985 void movlpd(XMMRegister dst, AddressLiteral src); 986 | 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 922 void fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 923 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 924 Register rax, Register rcx, Register rdx, Register tmp); 925 926 #ifdef _LP64 927 void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 928 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 929 Register rax, Register rcx, Register rdx, Register tmp1, Register tmp2); 930 931 void fast_log10(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 932 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 933 Register rax, Register rcx, Register rdx, Register r11); 934 935 void fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, 936 XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register rax, Register rcx, 937 Register rdx, Register tmp1, Register tmp2, Register tmp3, Register tmp4); 938 939 void fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 940 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 941 Register rax, Register rbx, Register rcx, Register rdx, Register tmp1, Register tmp2, 942 Register tmp3, Register tmp4); 943 944 void fast_cos(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 945 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 946 Register rax, Register rcx, Register rdx, Register tmp1, 947 Register tmp2, Register tmp3, Register tmp4); 948 void fast_tan(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 949 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 950 Register rax, Register rcx, Register rdx, Register tmp1, 951 Register tmp2, Register tmp3, Register tmp4); 952 #else 953 void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 954 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 955 Register rax, Register rcx, Register rdx, Register tmp1); 956 957 void fast_log10(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 961 void fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, 962 XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register rax, Register rcx, 963 Register rdx, Register tmp); 964 965 void fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 966 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 967 Register rax, Register rbx, Register rdx); 968 969 void fast_cos(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 970 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 971 Register rax, Register rcx, Register rdx, Register tmp); 972 973 void libm_sincos_huge(XMMRegister xmm0, XMMRegister xmm1, Register eax, Register ecx, 974 Register edx, Register ebx, Register esi, Register edi, 975 Register ebp, Register esp); 976 977 void libm_reduce_pi04l(Register eax, Register ecx, Register edx, Register ebx, 978 Register esi, Register edi, Register ebp, Register esp); 979 980 void libm_tancot_huge(XMMRegister xmm0, XMMRegister xmm1, Register eax, Register ecx, 981 Register edx, Register ebx, Register esi, Register edi, 982 Register ebp, Register esp); 983 984 void fast_tan(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, 985 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, 986 Register rax, Register rcx, Register rdx, Register tmp); 987 #endif 988 989 void increase_precision(); 990 void restore_precision(); 991 992 private: 993 994 // call runtime as a fallback for trig functions and pow/exp. 995 void fp_runtime_fallback(address runtime_entry, int nb_args, int num_fpu_regs_in_use); 996 997 // these are private because users should be doing movflt/movdbl 998 999 void movss(Address dst, XMMRegister src) { Assembler::movss(dst, src); } 1000 void movss(XMMRegister dst, XMMRegister src) { Assembler::movss(dst, src); } 1001 void movss(XMMRegister dst, Address src) { Assembler::movss(dst, src); } 1002 void movss(XMMRegister dst, AddressLiteral src); 1003 1004 void movlpd(XMMRegister dst, Address src) {Assembler::movlpd(dst, src); } 1005 void movlpd(XMMRegister dst, AddressLiteral src); 1006 |