1241 void square_rshift(Register x, Register len, Register z, Register tmp1, Register tmp3,
1242 Register tmp4, Register tmp5, Register rdxReg, Register raxReg);
1243 void multiply_add_64_bmi2(Register sum, Register op1, Register op2, Register carry,
1244 Register tmp2);
1245 void multiply_add_64(Register sum, Register op1, Register op2, Register carry,
1246 Register rdxReg, Register raxReg);
1247 void add_one_64(Register z, Register zlen, Register carry, Register tmp1);
1248 void lshift_by_1(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2,
1249 Register tmp3, Register tmp4);
1250 void square_to_len(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2,
1251 Register tmp3, Register tmp4, Register tmp5, Register rdxReg, Register raxReg);
1252
1253 void mul_add_128_x_32_loop(Register out, Register in, Register offset, Register len, Register tmp1,
1254 Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg,
1255 Register raxReg);
1256 void mul_add(Register out, Register in, Register offset, Register len, Register k, Register tmp1,
1257 Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg,
1258 Register raxReg);
1259 #endif
1260
1261 // CRC32 code for java.util.zip.CRC32::updateBytes() instrinsic.
1262 void update_byte_crc32(Register crc, Register val, Register table);
1263 void kernel_crc32(Register crc, Register buf, Register len, Register table, Register tmp);
1264 // Fold 128-bit data chunk
1265 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset);
1266 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf);
1267 // Fold 8-bit data
1268 void fold_8bit_crc32(Register crc, Register table, Register tmp);
1269 void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp);
1270
1271 #undef VIRTUAL
1272
1273 };
1274
1275 /**
1276 * class SkipIfEqual:
1277 *
1278 * Instantiating this class will result in assembly code being output that will
1279 * jump around any code emitted between the creation of the instance and it's
1280 * automatic destruction at the end of a scope block, depending on the value of
1281 * the flag passed to the constructor, which will be checked at run-time.
1282 */
1283 class SkipIfEqual {
|
1241 void square_rshift(Register x, Register len, Register z, Register tmp1, Register tmp3,
1242 Register tmp4, Register tmp5, Register rdxReg, Register raxReg);
1243 void multiply_add_64_bmi2(Register sum, Register op1, Register op2, Register carry,
1244 Register tmp2);
1245 void multiply_add_64(Register sum, Register op1, Register op2, Register carry,
1246 Register rdxReg, Register raxReg);
1247 void add_one_64(Register z, Register zlen, Register carry, Register tmp1);
1248 void lshift_by_1(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2,
1249 Register tmp3, Register tmp4);
1250 void square_to_len(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2,
1251 Register tmp3, Register tmp4, Register tmp5, Register rdxReg, Register raxReg);
1252
1253 void mul_add_128_x_32_loop(Register out, Register in, Register offset, Register len, Register tmp1,
1254 Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg,
1255 Register raxReg);
1256 void mul_add(Register out, Register in, Register offset, Register len, Register k, Register tmp1,
1257 Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg,
1258 Register raxReg);
1259 #endif
1260
1261 // CRC32 code for java.util.zip.CRC32::updateBytes() intrinsic.
1262 void update_byte_crc32(Register crc, Register val, Register table);
1263 void kernel_crc32(Register crc, Register buf, Register len, Register table, Register tmp);
1264 // CRC32C code for java.util.zip.CRC32C::updateBytes() intrinsic
1265 void crc32c_IPL_Alg2Alt2Fast(Register crc, Register buf, Register len,
1266 Register A, Register B, Register C,
1267 Register D, Register E, Register F,
1268 XMMRegister AXMM, XMMRegister BXMM, XMMRegister CXMM,
1269 bool IsPclmulqdqSupported);
1270 // Fold 128-bit data chunk
1271 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset);
1272 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf);
1273 // Fold 8-bit data
1274 void fold_8bit_crc32(Register crc, Register table, Register tmp);
1275 void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp);
1276
1277 #undef VIRTUAL
1278
1279 };
1280
1281 /**
1282 * class SkipIfEqual:
1283 *
1284 * Instantiating this class will result in assembly code being output that will
1285 * jump around any code emitted between the creation of the instance and it's
1286 * automatic destruction at the end of a scope block, depending on the value of
1287 * the flag passed to the constructor, which will be checked at run-time.
1288 */
1289 class SkipIfEqual {
|