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
|