1247 Register tmp1, Register tmp2, Register tmp3); 1248 private: 1249 void add2_with_carry(Register final_dest_hi, Register dest_hi, Register dest_lo, 1250 Register src1, Register src2); 1251 void add2_with_carry(Register dest_hi, Register dest_lo, Register src1, Register src2) { 1252 add2_with_carry(dest_hi, dest_hi, dest_lo, src1, src2); 1253 } 1254 void multiply_64_x_64_loop(Register x, Register xstart, Register x_xstart, 1255 Register y, Register y_idx, Register z, 1256 Register carry, Register product, 1257 Register idx, Register kdx); 1258 void multiply_128_x_128_loop(Register y, Register z, 1259 Register carry, Register carry2, 1260 Register idx, Register jdx, 1261 Register yz_idx1, Register yz_idx2, 1262 Register tmp, Register tmp3, Register tmp4, 1263 Register tmp7, Register product_hi); 1264 void kernel_crc32_using_crc32(Register crc, Register buf, 1265 Register len, Register tmp0, Register tmp1, Register tmp2, 1266 Register tmp3); 1267 public: 1268 void multiply_to_len(Register x, Register xlen, Register y, Register ylen, Register z, 1269 Register zlen, Register tmp1, Register tmp2, Register tmp3, 1270 Register tmp4, Register tmp5, Register tmp6, Register tmp7); 1271 void mul_add(Register out, Register in, Register offs, Register len, Register k); 1272 // ISB may be needed because of a safepoint 1273 void maybe_isb() { isb(); } 1274 1275 private: 1276 // Return the effective address r + (r1 << ext) + offset. 1277 // Uses rscratch2. 1278 Address offsetted_address(Register r, Register r1, Address::extend ext, 1279 int offset, int size); 1280 1281 private: 1282 // Returns an address on the stack which is reachable with a ldr/str of size 1283 // Uses rscratch2 if the address is not directly reachable 1284 Address spill_address(int size, int offset, Register tmp=rscratch2); 1285 1286 public: | 1247 Register tmp1, Register tmp2, Register tmp3); 1248 private: 1249 void add2_with_carry(Register final_dest_hi, Register dest_hi, Register dest_lo, 1250 Register src1, Register src2); 1251 void add2_with_carry(Register dest_hi, Register dest_lo, Register src1, Register src2) { 1252 add2_with_carry(dest_hi, dest_hi, dest_lo, src1, src2); 1253 } 1254 void multiply_64_x_64_loop(Register x, Register xstart, Register x_xstart, 1255 Register y, Register y_idx, Register z, 1256 Register carry, Register product, 1257 Register idx, Register kdx); 1258 void multiply_128_x_128_loop(Register y, Register z, 1259 Register carry, Register carry2, 1260 Register idx, Register jdx, 1261 Register yz_idx1, Register yz_idx2, 1262 Register tmp, Register tmp3, Register tmp4, 1263 Register tmp7, Register product_hi); 1264 void kernel_crc32_using_crc32(Register crc, Register buf, 1265 Register len, Register tmp0, Register tmp1, Register tmp2, 1266 Register tmp3); 1267 void kernel_crc32c_using_crc32c(Register crc, Register buf, 1268 Register len, Register tmp0, Register tmp1, Register tmp2, 1269 Register tmp3); 1270 public: 1271 void multiply_to_len(Register x, Register xlen, Register y, Register ylen, Register z, 1272 Register zlen, Register tmp1, Register tmp2, Register tmp3, 1273 Register tmp4, Register tmp5, Register tmp6, Register tmp7); 1274 void mul_add(Register out, Register in, Register offs, Register len, Register k); 1275 // ISB may be needed because of a safepoint 1276 void maybe_isb() { isb(); } 1277 1278 private: 1279 // Return the effective address r + (r1 << ext) + offset. 1280 // Uses rscratch2. 1281 Address offsetted_address(Register r, Register r1, Address::extend ext, 1282 int offset, int size); 1283 1284 private: 1285 // Returns an address on the stack which is reachable with a ldr/str of size 1286 // Uses rscratch2 if the address is not directly reachable 1287 Address spill_address(int size, int offset, Register tmp=rscratch2); 1288 1289 public: |