< prev index next >
src/cpu/ppc/vm/macroAssembler_ppc.hpp
Print this page
rev 13437 : Implement SHA256 and SHA512 intrinsics for PPC64
Sample run reduced 6.5s run to 2.8s for SHA256.
*** 859,868 ****
--- 859,905 ----
void kernel_crc32_singleByte(Register crc, Register buf, Register len, Register table, Register tmp,
bool invertCRC);
void kernel_crc32_singleByteReg(Register crc, Register val, Register table,
bool invertCRC);
+ // SHA-2 auxiliary functions and public interfaces
+ private:
+ void sha256_deque(const VectorRegister& src,
+ const VectorRegister& dst1, const VectorRegister& dst2, const VectorRegister& dst3);
+ void sha256_load_h_vec(const VectorRegister& a, const VectorRegister& b,
+ const VectorRegister& c, const VectorRegister& d, const VectorRegister& e,
+ const VectorRegister& f, const VectorRegister& g, const VectorRegister& h,
+ const Register& hptr);
+ void sha256_round(const VectorRegister* hs, const int total_hs, int& h_cnt, const VectorRegister& kpw);
+ void sha256_load_w_plus_k_vec(const Register& buf_in, const VectorRegister* ws,
+ const int total_ws, const Register& k, const VectorRegister* kpws,
+ const int total_kpws);
+ void sha256_calc_4w(const VectorRegister& w0, const VectorRegister& w1,
+ const VectorRegister& w2, const VectorRegister& w3, const VectorRegister& kpw0,
+ const VectorRegister& kpw1, const VectorRegister& kpw2, const VectorRegister& kpw3,
+ const Register& j, const Register& k);
+ void sha256_update_sha_state(const VectorRegister& a, const VectorRegister& b,
+ const VectorRegister& c, const VectorRegister& d, const VectorRegister& e,
+ const VectorRegister& f, const VectorRegister& g, const VectorRegister& h,
+ const Register& hptr);
+
+ void sha512_load_w_vec(const Register& buf_in, const VectorRegister* ws, const int total_ws);
+ void sha512_update_sha_state(const Register& state, const VectorRegister* hs, const int total_hs);
+ void sha512_round(const VectorRegister* hs, const int total_hs, int& h_cnt, const VectorRegister& kpw);
+ void sha512_load_h_vec(const Register& state, const VectorRegister* hs, const int total_hs);
+ void sha512_calc_2w(const VectorRegister& w0, const VectorRegister& w1,
+ const VectorRegister& w2, const VectorRegister& w3,
+ const VectorRegister& w4, const VectorRegister& w5,
+ const VectorRegister& w6, const VectorRegister& w7,
+ const VectorRegister& kpw0, const VectorRegister& kpw1, const Register& j,
+ const VectorRegister& vRb, const Register& k);
+
+ public:
+ void sha256(bool multi_block);
+ void sha512(bool multi_block);
+
+
//
// Debugging
//
// assert on cr0
< prev index next >