< prev index next >

src/hotspot/cpu/ppc/macroAssembler_ppc.hpp

Print this page
rev 53441 : 8217459: [PPC64] Cleanup non-vector version of CRC32
Reviewed-by:


 811   void muladd(Register out, Register in, Register offset, Register len, Register k,
 812               Register tmp1, Register tmp2, Register carry);
 813   void multiply_to_len(Register x, Register xlen,
 814                        Register y, Register ylen,
 815                        Register z, Register zlen,
 816                        Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5,
 817                        Register tmp6, Register tmp7, Register tmp8, Register tmp9, Register tmp10,
 818                        Register tmp11, Register tmp12, Register tmp13);
 819 
 820   // Emitters for CRC32 calculation.
 821   // A note on invertCRC:
 822   //   Unfortunately, internal representation of crc differs between CRC32 and CRC32C.
 823   //   CRC32 holds it's current crc value in the externally visible representation.
 824   //   CRC32C holds it's current crc value in internal format, ready for updating.
 825   //   Thus, the crc value must be bit-flipped before updating it in the CRC32 case.
 826   //   In the CRC32C case, it must be bit-flipped when it is given to the outside world (getValue()).
 827   //   The bool invertCRC parameter indicates whether bit-flipping is required before updates.
 828   void load_reverse_32(Register dst, Register src);
 829   int  crc32_table_columns(Register table, Register tc0, Register tc1, Register tc2, Register tc3);
 830   void fold_byte_crc32(Register crc, Register val, Register table, Register tmp);
 831   void fold_8bit_crc32(Register crc, Register table, Register tmp);
 832   void update_byte_crc32(Register crc, Register val, Register table);
 833   void update_byteLoop_crc32(Register crc, Register buf, Register len, Register table,
 834                              Register data, bool loopAlignment);
 835   void update_1word_crc32(Register crc, Register buf, Register table, int bufDisp, int bufInc,
 836                           Register t0,  Register t1,  Register t2,  Register t3,
 837                           Register tc0, Register tc1, Register tc2, Register tc3);
 838   void kernel_crc32_1word(Register crc, Register buf, Register len, Register table,
 839                           Register t0,  Register t1,  Register t2,  Register t3,
 840                           Register tc0, Register tc1, Register tc2, Register tc3,
 841                           bool invertCRC);
 842   void kernel_crc32_1byte(Register crc, Register buf, Register len, Register table,
 843                           Register t0,  Register t1,  Register t2,  Register t3,
 844                           bool invertCRC);
 845   void kernel_crc32_vpmsum(Register crc, Register buf, Register len, Register table, Register constants,
 846                           Register t0, Register t1, Register t2, Register t3, Register t4, Register t5,
 847                           bool invertCRC);
 848   void kernel_crc32_vpmsum_aligned(Register crc, Register buf, Register len, Register constants,
 849                                    Register t0, Register t1, Register t2, Register t3, Register t4, Register t5);

 850   // Version which internally decides what to use.
 851   void crc32(Register crc, Register buf, Register len, Register t0, Register t1, Register t2,
 852              Register t3, Register t4, Register t5, Register t6, Register t7, bool is_crc32c);
 853 
 854   void kernel_crc32_singleByte(Register crc, Register buf, Register len, Register table, Register tmp,
 855                                bool invertCRC);
 856   void kernel_crc32_singleByteReg(Register crc, Register val, Register table,
 857                                   bool invertCRC);
 858 
 859   // SHA-2 auxiliary functions and public interfaces
 860  private:
 861   void sha256_deque(const VectorRegister src,
 862       const VectorRegister dst1, const VectorRegister dst2, const VectorRegister dst3);
 863   void sha256_load_h_vec(const VectorRegister a, const VectorRegister e, const Register hptr);
 864   void sha256_round(const VectorRegister* hs, const int total_hs, int& h_cnt, const VectorRegister kpw);
 865   void sha256_load_w_plus_k_vec(const Register buf_in, const VectorRegister* ws,
 866       const int total_ws, const Register k, const VectorRegister* kpws,
 867       const int total_kpws);
 868   void sha256_calc_4w(const VectorRegister w0, const VectorRegister w1,
 869       const VectorRegister w2, const VectorRegister w3, const VectorRegister kpw0,




 811   void muladd(Register out, Register in, Register offset, Register len, Register k,
 812               Register tmp1, Register tmp2, Register carry);
 813   void multiply_to_len(Register x, Register xlen,
 814                        Register y, Register ylen,
 815                        Register z, Register zlen,
 816                        Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5,
 817                        Register tmp6, Register tmp7, Register tmp8, Register tmp9, Register tmp10,
 818                        Register tmp11, Register tmp12, Register tmp13);
 819 
 820   // Emitters for CRC32 calculation.
 821   // A note on invertCRC:
 822   //   Unfortunately, internal representation of crc differs between CRC32 and CRC32C.
 823   //   CRC32 holds it's current crc value in the externally visible representation.
 824   //   CRC32C holds it's current crc value in internal format, ready for updating.
 825   //   Thus, the crc value must be bit-flipped before updating it in the CRC32 case.
 826   //   In the CRC32C case, it must be bit-flipped when it is given to the outside world (getValue()).
 827   //   The bool invertCRC parameter indicates whether bit-flipping is required before updates.
 828   void load_reverse_32(Register dst, Register src);
 829   int  crc32_table_columns(Register table, Register tc0, Register tc1, Register tc2, Register tc3);
 830   void fold_byte_crc32(Register crc, Register val, Register table, Register tmp);

 831   void update_byte_crc32(Register crc, Register val, Register table);
 832   void update_byteLoop_crc32(Register crc, Register buf, Register len, Register table,
 833                              Register data, bool loopAlignment);
 834   void update_1word_crc32(Register crc, Register buf, Register table, int bufDisp, int bufInc,
 835                           Register t0,  Register t1,  Register t2,  Register t3,
 836                           Register tc0, Register tc1, Register tc2, Register tc3);
 837   void kernel_crc32_1word(Register crc, Register buf, Register len, Register table,
 838                           Register t0,  Register t1,  Register t2,  Register t3,
 839                           Register tc0, Register tc1, Register tc2, Register tc3,
 840                           bool invertCRC);
 841   void kernel_crc32_vpmsum(Register crc, Register buf, Register len, Register constants,
 842                            Register t0, Register t1, Register t2, Register t3, Register t4,
 843                            Register t5, Register t6, bool invertCRC);



 844   void kernel_crc32_vpmsum_aligned(Register crc, Register buf, Register len, Register constants,
 845                                    Register t0, Register t1, Register t2, Register t3, Register t4,
 846                                    Register t5, Register t6);
 847   // Version which internally decides what to use.
 848   void crc32(Register crc, Register buf, Register len, Register t0, Register t1, Register t2,
 849              Register t3, Register t4, Register t5, Register t6, Register t7, bool is_crc32c);
 850 
 851   void kernel_crc32_singleByte(Register crc, Register buf, Register len, Register table, Register tmp,
 852                                bool invertCRC);
 853   void kernel_crc32_singleByteReg(Register crc, Register val, Register table,
 854                                   bool invertCRC);
 855 
 856   // SHA-2 auxiliary functions and public interfaces
 857  private:
 858   void sha256_deque(const VectorRegister src,
 859       const VectorRegister dst1, const VectorRegister dst2, const VectorRegister dst3);
 860   void sha256_load_h_vec(const VectorRegister a, const VectorRegister e, const Register hptr);
 861   void sha256_round(const VectorRegister* hs, const int total_hs, int& h_cnt, const VectorRegister kpw);
 862   void sha256_load_w_plus_k_vec(const Register buf_in, const VectorRegister* ws,
 863       const int total_ws, const Register k, const VectorRegister* kpws,
 864       const int total_kpws);
 865   void sha256_calc_4w(const VectorRegister w0, const VectorRegister w1,
 866       const VectorRegister w2, const VectorRegister w3, const VectorRegister kpw0,


< prev index next >