1400 void bis_zeroing(Register to, Register count, Register temp, Label& Ldone);
1401
1402 // Update CRC-32[C] with a byte value according to constants in table
1403 void update_byte_crc32(Register crc, Register val, Register table);
1404
1405 // Reverse byte order of lower 32 bits, assuming upper 32 bits all zeros
1406 void reverse_bytes_32(Register src, Register dst, Register tmp);
1407 void movitof_revbytes(Register src, FloatRegister dst, Register tmp1, Register tmp2);
1408 void movftoi_revbytes(FloatRegister src, Register dst, Register tmp1, Register tmp2);
1409
1410 // CRC32 code for java.util.zip.CRC32::updateBytes0() intrinsic.
1411 void kernel_crc32(Register crc, Register buf, Register len, Register table);
1412 // Fold 128-bit data chunk
1413 void fold_128bit_crc32(Register xcrc_hi, Register xcrc_lo, Register xK_hi, Register xK_lo, Register xtmp_hi, Register xtmp_lo, Register buf, int offset);
1414 void fold_128bit_crc32(Register xcrc_hi, Register xcrc_lo, Register xK_hi, Register xK_lo, Register xtmp_hi, Register xtmp_lo, Register xbuf_hi, Register xbuf_lo);
1415 // Fold 8-bit data
1416 void fold_8bit_crc32(Register xcrc, Register table, Register xtmp, Register tmp);
1417 void fold_8bit_crc32(Register crc, Register table, Register tmp);
1418 // CRC32C code for java.util.zip.CRC32C::updateBytes/updateDirectByteBuffer intrinsic.
1419 void kernel_crc32c(Register crc, Register buf, Register len, Register table);
1420 };
1421
1422 /**
1423 * class SkipIfEqual:
1424 *
1425 * Instantiating this class will result in assembly code being output that will
1426 * jump around any code emitted between the creation of the instance and it's
1427 * automatic destruction at the end of a scope block, depending on the value of
1428 * the flag passed to the constructor, which will be checked at run-time.
1429 */
1430 class SkipIfEqual : public StackObj {
1431 private:
1432 MacroAssembler* _masm;
1433 Label _label;
1434
1435 public:
1436 // 'temp' is a temp register that this object can use (and trash)
1437 SkipIfEqual(MacroAssembler*, Register temp,
1438 const bool* flag_addr, Assembler::Condition condition);
1439 ~SkipIfEqual();
|
1400 void bis_zeroing(Register to, Register count, Register temp, Label& Ldone);
1401
1402 // Update CRC-32[C] with a byte value according to constants in table
1403 void update_byte_crc32(Register crc, Register val, Register table);
1404
1405 // Reverse byte order of lower 32 bits, assuming upper 32 bits all zeros
1406 void reverse_bytes_32(Register src, Register dst, Register tmp);
1407 void movitof_revbytes(Register src, FloatRegister dst, Register tmp1, Register tmp2);
1408 void movftoi_revbytes(FloatRegister src, Register dst, Register tmp1, Register tmp2);
1409
1410 // CRC32 code for java.util.zip.CRC32::updateBytes0() intrinsic.
1411 void kernel_crc32(Register crc, Register buf, Register len, Register table);
1412 // Fold 128-bit data chunk
1413 void fold_128bit_crc32(Register xcrc_hi, Register xcrc_lo, Register xK_hi, Register xK_lo, Register xtmp_hi, Register xtmp_lo, Register buf, int offset);
1414 void fold_128bit_crc32(Register xcrc_hi, Register xcrc_lo, Register xK_hi, Register xK_lo, Register xtmp_hi, Register xtmp_lo, Register xbuf_hi, Register xbuf_lo);
1415 // Fold 8-bit data
1416 void fold_8bit_crc32(Register xcrc, Register table, Register xtmp, Register tmp);
1417 void fold_8bit_crc32(Register crc, Register table, Register tmp);
1418 // CRC32C code for java.util.zip.CRC32C::updateBytes/updateDirectByteBuffer intrinsic.
1419 void kernel_crc32c(Register crc, Register buf, Register len, Register table);
1420
1421 };
1422
1423 /**
1424 * class SkipIfEqual:
1425 *
1426 * Instantiating this class will result in assembly code being output that will
1427 * jump around any code emitted between the creation of the instance and it's
1428 * automatic destruction at the end of a scope block, depending on the value of
1429 * the flag passed to the constructor, which will be checked at run-time.
1430 */
1431 class SkipIfEqual : public StackObj {
1432 private:
1433 MacroAssembler* _masm;
1434 Label _label;
1435
1436 public:
1437 // 'temp' is a temp register that this object can use (and trash)
1438 SkipIfEqual(MacroAssembler*, Register temp,
1439 const bool* flag_addr, Assembler::Condition condition);
1440 ~SkipIfEqual();
|