885
886 void fldcw(Address src) { Assembler::fldcw(src); }
887 void fldcw(AddressLiteral src);
888
889 void fld_s(int index) { Assembler::fld_s(index); }
890 void fld_s(Address src) { Assembler::fld_s(src); }
891 void fld_s(AddressLiteral src);
892
893 void fld_d(Address src) { Assembler::fld_d(src); }
894 void fld_d(AddressLiteral src);
895
896 void fld_x(Address src) { Assembler::fld_x(src); }
897 void fld_x(AddressLiteral src);
898
899 void fmul_s(Address src) { Assembler::fmul_s(src); }
900 void fmul_s(AddressLiteral src) { Assembler::fmul_s(as_Address(src)); }
901
902 void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
903 void ldmxcsr(AddressLiteral src);
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
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);
|
885
886 void fldcw(Address src) { Assembler::fldcw(src); }
887 void fldcw(AddressLiteral src);
888
889 void fld_s(int index) { Assembler::fld_s(index); }
890 void fld_s(Address src) { Assembler::fld_s(src); }
891 void fld_s(AddressLiteral src);
892
893 void fld_d(Address src) { Assembler::fld_d(src); }
894 void fld_d(AddressLiteral src);
895
896 void fld_x(Address src) { Assembler::fld_x(src); }
897 void fld_x(AddressLiteral src);
898
899 void fmul_s(Address src) { Assembler::fmul_s(src); }
900 void fmul_s(AddressLiteral src) { Assembler::fmul_s(as_Address(src)); }
901
902 void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
903 void ldmxcsr(AddressLiteral src);
904
905 #ifdef _LP64
906 private:
907 void sha256_AVX2_one_round_compute(
908 Register reg_old_h,
909 Register reg_a,
910 Register reg_b,
911 Register reg_c,
912 Register reg_d,
913 Register reg_e,
914 Register reg_f,
915 Register reg_g,
916 Register reg_h,
917 int iter);
918 void sha256_AVX2_four_rounds_compute_first(int start);
919 void sha256_AVX2_four_rounds_compute_last(int start);
920 void sha256_AVX2_one_round_and_sched(
921 XMMRegister xmm_0, /* == ymm4 on 0, 1, 2, 3 iterations, then rotate 4 registers left on 4, 8, 12 iterations */
922 XMMRegister xmm_1, /* ymm5 */ /* full cycle is 16 iterations */
923 XMMRegister xmm_2, /* ymm6 */
924 XMMRegister xmm_3, /* ymm7 */
925 Register reg_a, /* == eax on 0 iteration, then rotate 8 register right on each next iteration */
926 Register reg_b, /* ebx */ /* full cycle is 8 iterations */
927 Register reg_c, /* edi */
928 Register reg_d, /* esi */
929 Register reg_e, /* r8d */
930 Register reg_f, /* r9d */
931 Register reg_g, /* r10d */
932 Register reg_h, /* r11d */
933 int iter);
934
935 void addm(int disp, Register r1, Register r2);
936
937 public:
938 void sha256_AVX2(XMMRegister msg, XMMRegister state0, XMMRegister state1, XMMRegister msgtmp0,
939 XMMRegister msgtmp1, XMMRegister msgtmp2, XMMRegister msgtmp3, XMMRegister msgtmp4,
940 Register buf, Register state, Register ofs, Register limit, Register rsp,
941 bool multi_block, XMMRegister shuf_mask);
942 #endif
943
944 void fast_sha1(XMMRegister abcd, XMMRegister e0, XMMRegister e1, XMMRegister msg0,
945 XMMRegister msg1, XMMRegister msg2, XMMRegister msg3, XMMRegister shuf_mask,
946 Register buf, Register state, Register ofs, Register limit, Register rsp,
947 bool multi_block);
948
949 #ifdef _LP64
950 void fast_sha256(XMMRegister msg, XMMRegister state0, XMMRegister state1, XMMRegister msgtmp0,
951 XMMRegister msgtmp1, XMMRegister msgtmp2, XMMRegister msgtmp3, XMMRegister msgtmp4,
952 Register buf, Register state, Register ofs, Register limit, Register rsp,
953 bool multi_block, XMMRegister shuf_mask);
954 #else
955 void fast_sha256(XMMRegister msg, XMMRegister state0, XMMRegister state1, XMMRegister msgtmp0,
956 XMMRegister msgtmp1, XMMRegister msgtmp2, XMMRegister msgtmp3, XMMRegister msgtmp4,
957 Register buf, Register state, Register ofs, Register limit, Register rsp,
958 bool multi_block);
959 #endif
960
961 void fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
962 XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
963 Register rax, Register rcx, Register rdx, Register tmp);
|