< prev index next >

src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp

Print this page

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



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

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