< prev index next >

src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp

Print this page

1450     add(rscratch1, rscratch1, rscratch2,
1451         ext::sxtw, exact_log2(stride * Assembler::instruction_size));
1452     br(rscratch1);
1453   }
1454 
1455   // Form an address from base + offset in Rd.  Rd may or may not
1456   // actually be used: you must use the Address that is returned.  It
1457   // is up to you to ensure that the shift provided matches the size
1458   // of your data.
1459   Address form_address(Register Rd, Register base, int64_t byte_offset, int shift);
1460 
1461   // Return true iff an address is within the 48-bit AArch64 address
1462   // space.
1463   bool is_valid_AArch64_address(address a) {
1464     return ((uint64_t)a >> 48) == 0;
1465   }
1466 
1467   // Load the base of the cardtable byte map into reg.
1468   void load_byte_map_base(Register reg);
1469 



1470   // Prolog generator routines to support switch between x86 code and
1471   // generated ARM code
1472 
1473   // routine to generate an x86 prolog for a stub function which
1474   // bootstraps into the generated ARM code which directly follows the
1475   // stub
1476   //
1477 
1478   public:
1479 
1480   address read_polling_page(Register r, relocInfo::relocType rtype);
1481   void get_polling_page(Register dest, relocInfo::relocType rtype);
1482 
1483   // CRC32 code for java.util.zip.CRC32::updateBytes() intrinsic.
1484   void update_byte_crc32(Register crc, Register val, Register table);
1485   void update_word_crc32(Register crc, Register v, Register tmp,
1486         Register table0, Register table1, Register table2, Register table3,
1487         bool upper = false);
1488 
1489   address count_positives(Register ary1, Register len, Register result);

1450     add(rscratch1, rscratch1, rscratch2,
1451         ext::sxtw, exact_log2(stride * Assembler::instruction_size));
1452     br(rscratch1);
1453   }
1454 
1455   // Form an address from base + offset in Rd.  Rd may or may not
1456   // actually be used: you must use the Address that is returned.  It
1457   // is up to you to ensure that the shift provided matches the size
1458   // of your data.
1459   Address form_address(Register Rd, Register base, int64_t byte_offset, int shift);
1460 
1461   // Return true iff an address is within the 48-bit AArch64 address
1462   // space.
1463   bool is_valid_AArch64_address(address a) {
1464     return ((uint64_t)a >> 48) == 0;
1465   }
1466 
1467   // Load the base of the cardtable byte map into reg.
1468   void load_byte_map_base(Register reg);
1469 
1470   // Load a constant address in the AOT Runtime Constants area
1471   void load_aotrc_address(Register reg, address a);
1472 
1473   // Prolog generator routines to support switch between x86 code and
1474   // generated ARM code
1475 
1476   // routine to generate an x86 prolog for a stub function which
1477   // bootstraps into the generated ARM code which directly follows the
1478   // stub
1479   //
1480 
1481   public:
1482 
1483   address read_polling_page(Register r, relocInfo::relocType rtype);
1484   void get_polling_page(Register dest, relocInfo::relocType rtype);
1485 
1486   // CRC32 code for java.util.zip.CRC32::updateBytes() intrinsic.
1487   void update_byte_crc32(Register crc, Register val, Register table);
1488   void update_word_crc32(Register crc, Register v, Register tmp,
1489         Register table0, Register table1, Register table2, Register table3,
1490         bool upper = false);
1491 
1492   address count_positives(Register ary1, Register len, Register result);
< prev index next >