Path: blob/master/src/hotspot/cpu/s390/c2_MacroAssembler_s390.hpp
40930 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_S390_C2_MACROASSEMBLER_S390_HPP25#define CPU_S390_C2_MACROASSEMBLER_S390_HPP2627// C2_MacroAssembler contains high-level macros for C22829public:30//-------------------------------------------31// Special String Intrinsics Implementation.32//-------------------------------------------33// Intrinsics for CompactStrings34// Restores: src, dst35// Uses: cnt36// Kills: tmp, Z_R0, Z_R1.37// Early clobber: result.38// Boolean precise controls accuracy of result value.39unsigned int string_compress(Register result, Register src, Register dst, Register cnt,40Register tmp, bool precise);4142// Inflate byte[] to char[].43unsigned int string_inflate_trot(Register src, Register dst, Register cnt, Register tmp);4445// Inflate byte[] to char[].46// Restores: src, dst47// Uses: cnt48// Kills: tmp, Z_R0, Z_R1.49unsigned int string_inflate(Register src, Register dst, Register cnt, Register tmp);5051// Inflate byte[] to char[], length known at compile time.52// Restores: src, dst53// Kills: tmp, Z_R0, Z_R1.54// Note:55// len is signed int. Counts # characters, not bytes.56unsigned int string_inflate_const(Register src, Register dst, Register tmp, int len);5758// Kills src.59unsigned int has_negatives(Register result, Register src, Register cnt,60Register odd_reg, Register even_reg, Register tmp);6162unsigned int string_compare(Register str1, Register str2, Register cnt1, Register cnt2,63Register odd_reg, Register even_reg, Register result, int ae);6465unsigned int array_equals(bool is_array_equ, Register ary1, Register ary2, Register limit,66Register odd_reg, Register even_reg, Register result, bool is_byte);6768unsigned int string_indexof(Register result, Register haystack, Register haycnt,69Register needle, Register needlecnt, int needlecntval,70Register odd_reg, Register even_reg, int ae);7172unsigned int string_indexof_char(Register result, Register haystack, Register haycnt,73Register needle, jchar needleChar, Register odd_reg, Register even_reg, bool is_byte);7475#endif // CPU_S390_C2_MACROASSEMBLER_S390_HPP767778