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 | 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 1245 void square_rshift(Register x, Register len, Register z, Register tmp1, Register tmp3, 1246 Register tmp4, Register tmp5, Register rdxReg, Register raxReg); 1247 void multiply_add_64_bmi2(Register sum, Register op1, Register op2, Register carry, 1248 Register tmp2); 1249 void multiply_add_64(Register sum, Register op1, Register op2, Register carry, 1250 Register rdxReg, Register raxReg); 1251 void add_one_64(Register z, Register zlen, Register carry, Register tmp1); 1252 void lshift_by_1(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2, 1253 Register tmp3, Register tmp4); 1254 void square_to_len(Register x, Register len, Register z, Register zlen, Register tmp1, Register tmp2, 1255 Register tmp3, Register tmp4, Register tmp5, Register rdxReg, Register raxReg); 1256 1257 void mul_add_128_x_32_loop(Register out, Register in, Register offset, Register len, Register tmp1, 1258 Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg, 1259 Register raxReg); 1260 void mul_add(Register out, Register in, Register offset, Register len, Register k, Register tmp1, 1261 Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg, 1262 Register raxReg); 1263 #endif 1264 1265 // CRC32 code for java.util.zip.CRC32::updateBytes() instrinsic. 1266 void update_byte_crc32(Register crc, Register val, Register table); 1267 void kernel_crc32(Register crc, Register buf, Register len, Register table, Register tmp); 1268 // Fold 128-bit data chunk 1269 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset); 1270 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf); 1271 // Fold 8-bit data 1272 void fold_8bit_crc32(Register crc, Register table, Register tmp); 1273 void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp); 1274 1275 #undef VIRTUAL 1276 1277 }; 1278 1279 /** 1280 * class SkipIfEqual: 1281 * 1282 * Instantiating this class will result in assembly code being output that will |