< prev index next >

src/cpu/x86/vm/macroAssembler_x86.hpp

Print this page




1258   void square_rshift(Register x, Register len, Register z, Register tmp1, Register tmp3,
1259                      Register tmp4, Register tmp5, Register rdxReg, Register raxReg);
1260   void multiply_add_64_bmi2(Register sum, Register op1, Register op2, Register carry,
1261                             Register tmp2);
1262   void multiply_add_64(Register sum, Register op1, Register op2, Register carry,
1263                        Register rdxReg, Register raxReg);
1264   void add_one_64(Register z, Register zlen, Register carry, Register tmp1);
1265   void lshift_by_1(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2,
1266                        Register tmp3, Register tmp4);
1267   void square_to_len(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2,
1268                      Register tmp3, Register tmp4, Register tmp5, Register rdxReg, Register raxReg);
1269 
1270   void mul_add_128_x_32_loop(Register out, Register in, Register offset, Register len, Register tmp1,
1271                Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg,
1272                Register raxReg);
1273   void mul_add(Register out, Register in, Register offset, Register len, Register k, Register tmp1,
1274                Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg,
1275                Register raxReg);
1276 #endif
1277 
1278   // CRC32 code for java.util.zip.CRC32::updateBytes() instrinsic.
1279   void update_byte_crc32(Register crc, Register val, Register table);
1280   void kernel_crc32(Register crc, Register buf, Register len, Register table, Register tmp);

































1281   // Fold 128-bit data chunk
1282   void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset);
1283   void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf);
1284   // Fold 8-bit data
1285   void fold_8bit_crc32(Register crc, Register table, Register tmp);
1286   void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp);
1287 
1288 #undef VIRTUAL
1289 
1290 };
1291 
1292 /**
1293  * class SkipIfEqual:
1294  *
1295  * Instantiating this class will result in assembly code being output that will
1296  * jump around any code emitted between the creation of the instance and it's
1297  * automatic destruction at the end of a scope block, depending on the value of
1298  * the flag passed to the constructor, which will be checked at run-time.
1299  */
1300 class SkipIfEqual {


1258   void square_rshift(Register x, Register len, Register z, Register tmp1, Register tmp3,
1259                      Register tmp4, Register tmp5, Register rdxReg, Register raxReg);
1260   void multiply_add_64_bmi2(Register sum, Register op1, Register op2, Register carry,
1261                             Register tmp2);
1262   void multiply_add_64(Register sum, Register op1, Register op2, Register carry,
1263                        Register rdxReg, Register raxReg);
1264   void add_one_64(Register z, Register zlen, Register carry, Register tmp1);
1265   void lshift_by_1(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2,
1266                        Register tmp3, Register tmp4);
1267   void square_to_len(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2,
1268                      Register tmp3, Register tmp4, Register tmp5, Register rdxReg, Register raxReg);
1269 
1270   void mul_add_128_x_32_loop(Register out, Register in, Register offset, Register len, Register tmp1,
1271                Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg,
1272                Register raxReg);
1273   void mul_add(Register out, Register in, Register offset, Register len, Register k, Register tmp1,
1274                Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg,
1275                Register raxReg);
1276 #endif
1277 
1278   // CRC32 code for java.util.zip.CRC32::updateBytes() intrinsic.
1279   void update_byte_crc32(Register crc, Register val, Register table);
1280   void kernel_crc32(Register crc, Register buf, Register len, Register table, Register tmp);
1281   // CRC32C code for java.util.zip.CRC32C::updateBytes() intrinsic
1282   // Note on a naming convention:
1283   // Prefix w = register only used on a Westmere+ architecture
1284   // Prefix n = register only used on a Nehalem architecture
1285 #ifdef _LP64
1286   void crc32c_ipl_alg4(Register in_out, uint32_t n,
1287                        Register tmp1, Register tmp2, Register tmp3);
1288 #else
1289   void crc32c_ipl_alg4(Register in_out, uint32_t n,
1290                        Register tmp1, Register tmp2, Register tmp3,
1291                        XMMRegister xtmp1, XMMRegister xtmp2);
1292 #endif
1293   void crc32c_pclmulqdq(XMMRegister w_xtmp1,
1294                         Register in_out,
1295                         uint32_t const_or_pre_comp_const_index, bool is_pclmulqdq_supported,
1296                         XMMRegister w_xtmp2,
1297                         Register tmp1,
1298                         Register n_tmp2, Register n_tmp3);
1299   void crc32c_rec_alt2(uint32_t const_or_pre_comp_const_index_u1, uint32_t const_or_pre_comp_const_index_u2, bool is_pclmulqdq_supported, Register in_out, Register in1, Register in2,
1300                        XMMRegister w_xtmp1, XMMRegister w_xtmp2, XMMRegister w_xtmp3,
1301                        Register tmp1, Register tmp2,
1302                        Register n_tmp3);
1303   void crc32c_proc_chunk(uint32_t size, uint32_t const_or_pre_comp_const_index_u1, uint32_t const_or_pre_comp_const_index_u2, bool is_pclmulqdq_supported,
1304                          Register in_out1, Register in_out2, Register in_out3,
1305                          Register tmp1, Register tmp2, Register tmp3,
1306                          XMMRegister w_xtmp1, XMMRegister w_xtmp2, XMMRegister w_xtmp3,
1307                          Register tmp4, Register tmp5,
1308                          Register n_tmp6);
1309   void crc32c_ipl_alg2_alt2(Register in_out, Register in1, Register in2,
1310                             Register tmp1, Register tmp2, Register tmp3,
1311                             Register tmp4, Register tmp5, Register tmp6,
1312                             XMMRegister w_xtmp1, XMMRegister w_xtmp2, XMMRegister w_xtmp3,
1313                             bool is_pclmulqdq_supported);
1314   // Fold 128-bit data chunk
1315   void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset);
1316   void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf);
1317   // Fold 8-bit data
1318   void fold_8bit_crc32(Register crc, Register table, Register tmp);
1319   void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp);
1320 
1321 #undef VIRTUAL
1322 
1323 };
1324 
1325 /**
1326  * class SkipIfEqual:
1327  * 
1328  * Instantiating this class will result in assembly code being output that will
1329  * jump around any code emitted between the creation of the instance and it's
1330  * automatic destruction at the end of a scope block, depending on the value of
1331  * the flag passed to the constructor, which will be checked at run-time.
1332  */
1333 class SkipIfEqual {
< prev index next >