< prev index next >

src/cpu/aarch64/vm/macroAssembler_aarch64.hpp

Print this page
rev 11248 : 8156943: aarch64: string compare does not support CompactStrings
Summary: Implement LL, UL and LU encodings for StrComp
Reviewed-by: aph


1170 
1171   void ldr_constant(Register dest, const Address &const_addr) {
1172     if (NearCpool) {
1173       ldr(dest, const_addr);
1174     } else {
1175       unsigned long offset;
1176       adrp(dest, InternalAddress(const_addr.target()), offset);
1177       ldr(dest, Address(dest, offset));
1178     }
1179   }
1180 
1181   address read_polling_page(Register r, address page, relocInfo::relocType rtype);
1182   address read_polling_page(Register r, relocInfo::relocType rtype);
1183 
1184   // CRC32 code for java.util.zip.CRC32::updateBytes() instrinsic.
1185   void update_byte_crc32(Register crc, Register val, Register table);
1186   void update_word_crc32(Register crc, Register v, Register tmp,
1187         Register table0, Register table1, Register table2, Register table3,
1188         bool upper = false);
1189 




1190   void string_compare(Register str1, Register str2,
1191                       Register cnt1, Register cnt2, Register result,
1192                       Register tmp1);
1193 
1194   void arrays_equals(Register a1, Register a2,
1195                      Register result, Register cnt1,
1196                      int elem_size, bool is_string);
1197 
1198   void fill_words(Register base, Register cnt, Register value);
1199   void zero_words(Register base, u_int64_t cnt);
1200   void zero_words(Register base, Register cnt);
1201   void block_zero(Register base, Register cnt, bool is_large = false);
1202 
1203   void byte_array_inflate(Register src, Register dst, Register len,
1204                           FloatRegister vtmp1, FloatRegister vtmp2,
1205                           FloatRegister vtmp3, Register tmp4);
1206 
1207   void char_array_compress(Register src, Register dst, Register len,
1208                            FloatRegister tmp1Reg, FloatRegister tmp2Reg,
1209                            FloatRegister tmp3Reg, FloatRegister tmp4Reg,
1210                            Register result);
1211 
1212   void encode_iso_array(Register src, Register dst,




1170 
1171   void ldr_constant(Register dest, const Address &const_addr) {
1172     if (NearCpool) {
1173       ldr(dest, const_addr);
1174     } else {
1175       unsigned long offset;
1176       adrp(dest, InternalAddress(const_addr.target()), offset);
1177       ldr(dest, Address(dest, offset));
1178     }
1179   }
1180 
1181   address read_polling_page(Register r, address page, relocInfo::relocType rtype);
1182   address read_polling_page(Register r, relocInfo::relocType rtype);
1183 
1184   // CRC32 code for java.util.zip.CRC32::updateBytes() instrinsic.
1185   void update_byte_crc32(Register crc, Register val, Register table);
1186   void update_word_crc32(Register crc, Register v, Register tmp,
1187         Register table0, Register table1, Register table2, Register table3,
1188         bool upper = false);
1189 
1190   void string_compare_simd(Register str1, Register str2,
1191                       Register cnt1, Register cnt2, Register result,
1192                       FloatRegister vtmp1, FloatRegister vtmp2,
1193                       FloatRegister vtmpZ, int ae);
1194   void string_compare(Register str1, Register str2,
1195                       Register cnt1, Register cnt2, Register result,
1196                       Register tmp1, int ae);
1197 
1198   void arrays_equals(Register a1, Register a2,
1199                      Register result, Register cnt1,
1200                      int elem_size, bool is_string);
1201 
1202   void fill_words(Register base, Register cnt, Register value);
1203   void zero_words(Register base, u_int64_t cnt);
1204   void zero_words(Register base, Register cnt);
1205   void block_zero(Register base, Register cnt, bool is_large = false);
1206 
1207   void byte_array_inflate(Register src, Register dst, Register len,
1208                           FloatRegister vtmp1, FloatRegister vtmp2,
1209                           FloatRegister vtmp3, Register tmp4);
1210 
1211   void char_array_compress(Register src, Register dst, Register len,
1212                            FloatRegister tmp1Reg, FloatRegister tmp2Reg,
1213                            FloatRegister tmp3Reg, FloatRegister tmp4Reg,
1214                            Register result);
1215 
1216   void encode_iso_array(Register src, Register dst,


< prev index next >