|
|
|
@ -71,7 +71,7 @@ static const size_t ImulRcpLiteralsEnd = ((uint8_t*)randomx_program_aarch64_imul
|
|
|
|
|
|
|
|
|
|
static const size_t CalcDatasetItemSize =
|
|
|
|
|
// Prologue
|
|
|
|
|
((uint8_t*)randomx_calc_dataset_item_aarch64_prefetch - (uint8_t*)randomx_calc_dataset_item_aarch64) +
|
|
|
|
|
((uint8_t*)randomx_calc_dataset_item_aarch64_prefetch - (uint8_t*)randomx_calc_dataset_item_aarch64) +
|
|
|
|
|
// Main loop
|
|
|
|
|
RANDOMX_CACHE_ACCESSES * (
|
|
|
|
|
// Main loop prologue
|
|
|
|
@ -80,7 +80,7 @@ static const size_t CalcDatasetItemSize =
|
|
|
|
|
((RANDOMX_SUPERSCALAR_LATENCY * 3) + 2) * 16 +
|
|
|
|
|
// Main loop epilogue
|
|
|
|
|
((uint8_t*)randomx_calc_dataset_item_aarch64_store_result - (uint8_t*)randomx_calc_dataset_item_aarch64_mix) + 4
|
|
|
|
|
) +
|
|
|
|
|
) +
|
|
|
|
|
// Epilogue
|
|
|
|
|
((uint8_t*)randomx_calc_dataset_item_aarch64_end - (uint8_t*)randomx_calc_dataset_item_aarch64_store_result);
|
|
|
|
|
|
|
|
|
@ -872,7 +872,7 @@ void JitCompilerA64::h_FADD_M(Instruction& instr, uint32_t& codePos)
|
|
|
|
|
const uint32_t dst = (instr.dst % 4) + 16;
|
|
|
|
|
|
|
|
|
|
constexpr uint32_t tmp_reg_fp = 28;
|
|
|
|
|
emitMemLoadFP<tmp_reg_fp>(src, instr, code, k);
|
|
|
|
|
emitMemLoadFP<tmp_reg_fp>(src, instr, code, k);
|
|
|
|
|
|
|
|
|
|
emit32(ARMV8A::FADD | dst | (dst << 5) | (tmp_reg_fp << 16), code, k);
|
|
|
|
|
|
|
|
|
@ -895,7 +895,7 @@ void JitCompilerA64::h_FSUB_M(Instruction& instr, uint32_t& codePos)
|
|
|
|
|
const uint32_t dst = (instr.dst % 4) + 16;
|
|
|
|
|
|
|
|
|
|
constexpr uint32_t tmp_reg_fp = 28;
|
|
|
|
|
emitMemLoadFP<tmp_reg_fp>(src, instr, code, k);
|
|
|
|
|
emitMemLoadFP<tmp_reg_fp>(src, instr, code, k);
|
|
|
|
|
|
|
|
|
|
emit32(ARMV8A::FSUB | dst | (dst << 5) | (tmp_reg_fp << 16), code, k);
|
|
|
|
|
|
|
|
|
@ -925,7 +925,7 @@ void JitCompilerA64::h_FDIV_M(Instruction& instr, uint32_t& codePos)
|
|
|
|
|
const uint32_t dst = (instr.dst % 4) + 20;
|
|
|
|
|
|
|
|
|
|
constexpr uint32_t tmp_reg_fp = 28;
|
|
|
|
|
emitMemLoadFP<tmp_reg_fp>(src, instr, code, k);
|
|
|
|
|
emitMemLoadFP<tmp_reg_fp>(src, instr, code, k);
|
|
|
|
|
|
|
|
|
|
// and tmp_reg_fp, tmp_reg_fp, and_mask_reg
|
|
|
|
|
emit32(0x4E201C00 | tmp_reg_fp | (tmp_reg_fp << 5) | (29 << 16), code, k);
|
|
|
|
|