< prev index next >

src/cpu/sparc/vm/macroAssembler_sparc.hpp

Print this page


   1 /*
   2  * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


1375                           Register tmp1, Register tmp2, Register tmp3, Register tmp4,
1376                           FloatRegister ftmp1, FloatRegister ftmp2, FloatRegister ftmp3, Label& Ldone);
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 #endif
1396 
1397   // Use BIS for zeroing
1398   void bis_zeroing(Register to, Register count, Register temp, Label& Ldone);
1399 
1400   // Update CRC-32[C] with a byte value according to constants in table
1401   void update_byte_crc32(Register crc, Register val, Register table);
1402 
1403   // Reverse byte order of lower 32 bits, assuming upper 32 bits all zeros
1404   void reverse_bytes_32(Register src, Register dst, Register tmp);
1405   void movitof_revbytes(Register src, FloatRegister dst, Register tmp1, Register tmp2);
1406   void movftoi_revbytes(FloatRegister src, Register dst, Register tmp1, Register tmp2);
1407 
1408   // CRC32 code for java.util.zip.CRC32::updateBytes0() instrinsic.
1409   void kernel_crc32(Register crc, Register buf, Register len, Register table);
1410   // Fold 128-bit data chunk
1411   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);
1412   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);
1413   // Fold 8-bit data
1414   void fold_8bit_crc32(Register xcrc, Register table, Register xtmp, Register tmp);


   1 /*
   2  * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


1375                           Register tmp1, Register tmp2, Register tmp3, Register tmp4,
1376                           FloatRegister ftmp1, FloatRegister ftmp2, FloatRegister ftmp3, Label& Ldone);
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   // test for negative bytes in input string of a given size, result 0 if none
1396   void has_negatives(Register inp, Register size, Register result,
1397                      Register t2, Register t3, Register t4,
1398                      Register t5);
1399 
1400 #endif
1401 
1402   // Use BIS for zeroing
1403   void bis_zeroing(Register to, Register count, Register temp, Label& Ldone);
1404 
1405   // Update CRC-32[C] with a byte value according to constants in table
1406   void update_byte_crc32(Register crc, Register val, Register table);
1407 
1408   // Reverse byte order of lower 32 bits, assuming upper 32 bits all zeros
1409   void reverse_bytes_32(Register src, Register dst, Register tmp);
1410   void movitof_revbytes(Register src, FloatRegister dst, Register tmp1, Register tmp2);
1411   void movftoi_revbytes(FloatRegister src, Register dst, Register tmp1, Register tmp2);
1412 
1413   // CRC32 code for java.util.zip.CRC32::updateBytes0() instrinsic.
1414   void kernel_crc32(Register crc, Register buf, Register len, Register table);
1415   // Fold 128-bit data chunk
1416   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);
1417   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);
1418   // Fold 8-bit data
1419   void fold_8bit_crc32(Register xcrc, Register table, Register xtmp, Register tmp);


< prev index next >