1722 Register tmp4, Register tmp5, Register tmp6, 1723 XMMRegister w_xtmp1, XMMRegister w_xtmp2, XMMRegister w_xtmp3, 1724 bool is_pclmulqdq_supported); 1725 // Fold 128-bit data chunk 1726 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset); 1727 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf); 1728 // Fold 8-bit data 1729 void fold_8bit_crc32(Register crc, Register table, Register tmp); 1730 void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp); 1731 void fold_128bit_crc32_avx512(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset); 1732 1733 // Compress char[] array to byte[]. 1734 void char_array_compress(Register src, Register dst, Register len, 1735 XMMRegister tmp1, XMMRegister tmp2, XMMRegister tmp3, 1736 XMMRegister tmp4, Register tmp5, Register result); 1737 1738 // Inflate byte[] array to char[]. 1739 void byte_array_inflate(Register src, Register dst, Register len, 1740 XMMRegister tmp1, Register tmp2); 1741 1742 }; 1743 1744 /** 1745 * class SkipIfEqual: 1746 * 1747 * Instantiating this class will result in assembly code being output that will 1748 * jump around any code emitted between the creation of the instance and it's 1749 * automatic destruction at the end of a scope block, depending on the value of 1750 * the flag passed to the constructor, which will be checked at run-time. 1751 */ 1752 class SkipIfEqual { 1753 private: 1754 MacroAssembler* _masm; 1755 Label _label; 1756 1757 public: 1758 SkipIfEqual(MacroAssembler*, const bool* flag_addr, bool value); 1759 ~SkipIfEqual(); 1760 }; 1761 | 1722 Register tmp4, Register tmp5, Register tmp6, 1723 XMMRegister w_xtmp1, XMMRegister w_xtmp2, XMMRegister w_xtmp3, 1724 bool is_pclmulqdq_supported); 1725 // Fold 128-bit data chunk 1726 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset); 1727 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf); 1728 // Fold 8-bit data 1729 void fold_8bit_crc32(Register crc, Register table, Register tmp); 1730 void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp); 1731 void fold_128bit_crc32_avx512(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset); 1732 1733 // Compress char[] array to byte[]. 1734 void char_array_compress(Register src, Register dst, Register len, 1735 XMMRegister tmp1, XMMRegister tmp2, XMMRegister tmp3, 1736 XMMRegister tmp4, Register tmp5, Register result); 1737 1738 // Inflate byte[] array to char[]. 1739 void byte_array_inflate(Register src, Register dst, Register len, 1740 XMMRegister tmp1, Register tmp2); 1741 1742 void cache_wb(Address line); 1743 void cache_wbsync(bool isPre); 1744 }; 1745 1746 /** 1747 * class SkipIfEqual: 1748 * 1749 * Instantiating this class will result in assembly code being output that will 1750 * jump around any code emitted between the creation of the instance and it's 1751 * automatic destruction at the end of a scope block, depending on the value of 1752 * the flag passed to the constructor, which will be checked at run-time. 1753 */ 1754 class SkipIfEqual { 1755 private: 1756 MacroAssembler* _masm; 1757 Label _label; 1758 1759 public: 1760 SkipIfEqual(MacroAssembler*, const bool* flag_addr, bool value); 1761 ~SkipIfEqual(); 1762 }; 1763 |