src/cpu/sparc/vm/macroAssembler_sparc.hpp

Print this page
rev 10891 : tweak array comparison loops


1377 
1378   // Compress char[] to byte[]. Return 0 on failure.
1379   void string_compress(Register src, Register dst, Register cnt, Register tmp, Register result, Label& Ldone);
1380 
1381   // Inflate byte[] to char[] by inflating 16 bytes at once.
1382   void string_inflate_16(Register src, Register dst, Register cnt, Register tmp,
1383                          FloatRegister ftmp1, FloatRegister ftmp2, FloatRegister ftmp3, FloatRegister ftmp4, Label& Ldone);
1384 
1385   // Inflate byte[] to char[].
1386   void string_inflate(Register src, Register dst, Register cnt, Register tmp, Label& Ldone);
1387 
1388   void string_compare(Register str1, Register str2,
1389                       Register cnt1, Register cnt2,
1390                       Register tmp1, Register tmp2,
1391                       Register result, int ae);
1392 
1393   void array_equals(bool is_array_equ, Register ary1, Register ary2,
1394                     Register limit, Register tmp, Register result, bool is_byte);
1395 
1396   // Compares two arrays in chunks of size 'byte_width'. The addresses must be aligned accordingly.

1397   void array_equals_loop(Register ary1, Register ary2, Register limit, Register tmp,
1398                          Register result, size_t byte_width, Label& Ldone);
1399 
1400   // test for negative bytes in input string of a given size, result 0 if none
1401   void has_negatives(Register inp, Register size, Register result,
1402                      Register t2, Register t3, Register t4,
1403                      Register t5);
1404 
1405 #endif
1406 
1407   // Use BIS for zeroing
1408   void bis_zeroing(Register to, Register count, Register temp, Label& Ldone);
1409 
1410   // Update CRC-32[C] with a byte value according to constants in table
1411   void update_byte_crc32(Register crc, Register val, Register table);
1412 
1413   // Reverse byte order of lower 32 bits, assuming upper 32 bits all zeros
1414   void reverse_bytes_32(Register src, Register dst, Register tmp);
1415   void movitof_revbytes(Register src, FloatRegister dst, Register tmp1, Register tmp2);
1416   void movftoi_revbytes(FloatRegister src, Register dst, Register tmp1, Register tmp2);
1417 
1418   // CRC32 code for java.util.zip.CRC32::updateBytes0() instrinsic.




1377 
1378   // Compress char[] to byte[]. Return 0 on failure.
1379   void string_compress(Register src, Register dst, Register cnt, Register tmp, Register result, Label& Ldone);
1380 
1381   // Inflate byte[] to char[] by inflating 16 bytes at once.
1382   void string_inflate_16(Register src, Register dst, Register cnt, Register tmp,
1383                          FloatRegister ftmp1, FloatRegister ftmp2, FloatRegister ftmp3, FloatRegister ftmp4, Label& Ldone);
1384 
1385   // Inflate byte[] to char[].
1386   void string_inflate(Register src, Register dst, Register cnt, Register tmp, Label& Ldone);
1387 
1388   void string_compare(Register str1, Register str2,
1389                       Register cnt1, Register cnt2,
1390                       Register tmp1, Register tmp2,
1391                       Register result, int ae);
1392 
1393   void array_equals(bool is_array_equ, Register ary1, Register ary2,
1394                     Register limit, Register tmp, Register result, bool is_byte);
1395 
1396   // Compares two arrays in chunks of size 'byte_width'. The addresses must be aligned accordingly.
1397   // Ldone can be NULL, meaning fall through.
1398   void array_equals_loop(Register ary1, Register ary2, Register limit, Register tmp,
1399                          Register result, size_t byte_width, Label* Ldone);
1400 
1401   // test for negative bytes in input string of a given size, result 0 if none
1402   void has_negatives(Register inp, Register size, Register result,
1403                      Register t2, Register t3, Register t4,
1404                      Register t5);
1405 
1406 #endif
1407 
1408   // Use BIS for zeroing
1409   void bis_zeroing(Register to, Register count, Register temp, Label& Ldone);
1410 
1411   // Update CRC-32[C] with a byte value according to constants in table
1412   void update_byte_crc32(Register crc, Register val, Register table);
1413 
1414   // Reverse byte order of lower 32 bits, assuming upper 32 bits all zeros
1415   void reverse_bytes_32(Register src, Register dst, Register tmp);
1416   void movitof_revbytes(Register src, FloatRegister dst, Register tmp1, Register tmp2);
1417   void movftoi_revbytes(FloatRegister src, Register dst, Register tmp1, Register tmp2);
1418 
1419   // CRC32 code for java.util.zip.CRC32::updateBytes0() instrinsic.