1204 1205 // Compare strings. 1206 void string_compare(Register str1, Register str2, 1207 Register cnt1, Register cnt2, Register result, 1208 XMMRegister vec1); 1209 1210 // Compare char[] arrays. 1211 void char_arrays_equals(bool is_array_equ, Register ary1, Register ary2, 1212 Register limit, Register result, Register chr, 1213 XMMRegister vec1, XMMRegister vec2); 1214 1215 // Fill primitive arrays 1216 void generate_fill(BasicType t, bool aligned, 1217 Register to, Register value, Register count, 1218 Register rtmp, XMMRegister xtmp); 1219 1220 void encode_iso_array(Register src, Register dst, Register len, 1221 XMMRegister tmp1, XMMRegister tmp2, XMMRegister tmp3, 1222 XMMRegister tmp4, Register tmp5, Register result); 1223 1224 // CRC32 code for java.util.zip.CRC32::updateBytes() instrinsic. 1225 void update_byte_crc32(Register crc, Register val, Register table); 1226 void kernel_crc32(Register crc, Register buf, Register len, Register table, Register tmp); 1227 // Fold 128-bit data chunk 1228 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset); 1229 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf); 1230 // Fold 8-bit data 1231 void fold_8bit_crc32(Register crc, Register table, Register tmp); 1232 void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp); 1233 1234 #undef VIRTUAL 1235 1236 }; 1237 1238 /** 1239 * class SkipIfEqual: 1240 * 1241 * Instantiating this class will result in assembly code being output that will 1242 * jump around any code emitted between the creation of the instance and it's 1243 * automatic destruction at the end of a scope block, depending on the value of | 1204 1205 // Compare strings. 1206 void string_compare(Register str1, Register str2, 1207 Register cnt1, Register cnt2, Register result, 1208 XMMRegister vec1); 1209 1210 // Compare char[] arrays. 1211 void char_arrays_equals(bool is_array_equ, Register ary1, Register ary2, 1212 Register limit, Register result, Register chr, 1213 XMMRegister vec1, XMMRegister vec2); 1214 1215 // Fill primitive arrays 1216 void generate_fill(BasicType t, bool aligned, 1217 Register to, Register value, Register count, 1218 Register rtmp, XMMRegister xtmp); 1219 1220 void encode_iso_array(Register src, Register dst, Register len, 1221 XMMRegister tmp1, XMMRegister tmp2, XMMRegister tmp3, 1222 XMMRegister tmp4, Register tmp5, Register result); 1223 1224 #ifdef _LP64 1225 void add2_with_carry(Register dest_hi, Register dest_lo, Register src1, Register src2); 1226 void multiply_64_x_64_loop(Register x, Register xstart, Register x_xstart, 1227 Register y, Register y_idx, Register z, 1228 Register carry, Register product, 1229 Register idx, Register kdx); 1230 void multiply_add_128_x_128(Register x_xstart, Register y, Register z, 1231 Register yz_idx, Register idx, 1232 Register carry, Register product, int offset); 1233 void multiply_128_x_128_bmi2_loop(Register y, Register z, 1234 Register carry, Register carry2, 1235 Register idx, Register jdx, 1236 Register yz_idx1, Register yz_idx2, 1237 Register tmp, Register tmp3, Register tmp4); 1238 void multiply_128_x_128_loop(Register x_xstart, Register y, Register z, 1239 Register yz_idx, Register idx, Register jdx, 1240 Register carry, Register product, 1241 Register carry2); 1242 void multiply_to_len(Register x, Register xlen, Register y, Register ylen, Register z, Register zlen, 1243 Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5); 1244 #endif 1245 1246 // CRC32 code for java.util.zip.CRC32::updateBytes() instrinsic. 1247 void update_byte_crc32(Register crc, Register val, Register table); 1248 void kernel_crc32(Register crc, Register buf, Register len, Register table, Register tmp); 1249 // Fold 128-bit data chunk 1250 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset); 1251 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf); 1252 // Fold 8-bit data 1253 void fold_8bit_crc32(Register crc, Register table, Register tmp); 1254 void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp); 1255 1256 #undef VIRTUAL 1257 1258 }; 1259 1260 /** 1261 * class SkipIfEqual: 1262 * 1263 * Instantiating this class will result in assembly code being output that will 1264 * jump around any code emitted between the creation of the instance and it's 1265 * automatic destruction at the end of a scope block, depending on the value of |