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