SPU ASMJIT: Implement Mega block mode (experimental)

Disable extra modes for SPU LLVM for now.
In Mega mode, SPU Analyser tries to determine complete functions.
Recompiler tries to speed up returns via 'stack mirror'.
This commit is contained in:
Nekotekina 2018-06-04 00:20:14 +03:00
parent 11bdb4102a
commit 12eee6a19e
5 changed files with 109 additions and 14 deletions

View file

@ -637,8 +637,17 @@ SPUThread::SPUThread(const std::string& name, u32 index, lv2_spu_group* group)
jit = spu_recompiler_base::make_llvm_recompiler();
}
// Initialize lookup table
jit_dispatcher.fill(&spu_recompiler_base::dispatch);
if (g_cfg.core.spu_decoder != spu_decoder_type::fast && g_cfg.core.spu_decoder != spu_decoder_type::precise)
{
// Initialize lookup table
jit_dispatcher.fill(&spu_recompiler_base::dispatch);
if (g_cfg.core.spu_block_size != spu_block_size_type::safe)
{
// Initialize stack mirror
std::memset(stack_mirror.data(), 0xff, sizeof(stack_mirror));
}
}
}
void SPUThread::push_snr(u32 number, u32 value)