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);
|