Path: blob/master/src/hotspot/cpu/ppc/c2_MacroAssembler_ppc.hpp
64440 views
/*1* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*22*/2324#ifndef CPU_PPC_C2_MACROASSEMBLER_PPC_HPP25#define CPU_PPC_C2_MACROASSEMBLER_PPC_HPP2627// C2_MacroAssembler contains high-level macros for C22829public:30// Intrinsics for CompactStrings31// Compress char[] to byte[] by compressing 16 bytes at once.32void string_compress_16(Register src, Register dst, Register cnt,33Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5,34Label& Lfailure, bool ascii = false);3536// Compress char[] to byte[]. cnt must be positive int.37void string_compress(Register src, Register dst, Register cnt, Register tmp,38Label& Lfailure, bool ascii = false);3940// Encode UTF16 to ISO_8859_1 or ASCII. Return len on success or position of first mismatch.41void encode_iso_array(Register src, Register dst, Register len,42Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5,43Register result, bool ascii);4445// Inflate byte[] to char[] by inflating 16 bytes at once.46void string_inflate_16(Register src, Register dst, Register cnt,47Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5);4849// Inflate byte[] to char[]. cnt must be positive int.50void string_inflate(Register src, Register dst, Register cnt, Register tmp);5152void string_compare(Register str1, Register str2, Register cnt1, Register cnt2,53Register tmp1, Register result, int ae);5455void array_equals(bool is_array_equ, Register ary1, Register ary2,56Register limit, Register tmp1, Register result, bool is_byte);5758void string_indexof(Register result, Register haystack, Register haycnt,59Register needle, ciTypeArray* needle_values, Register needlecnt, int needlecntval,60Register tmp1, Register tmp2, Register tmp3, Register tmp4, int ae);6162void string_indexof_char(Register result, Register haystack, Register haycnt,63Register needle, jchar needleChar, Register tmp1, Register tmp2, bool is_byte);6465void has_negatives(Register src, Register cnt, Register result, Register tmp1, Register tmp2);6667#endif // CPU_PPC_C2_MACROASSEMBLER_PPC_HPP686970