mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-01-08 15:38:19 +01:00
A64: Optimization: Merge interpret blocks
This commit is contained in:
parent
99b7516c8c
commit
c6a091d874
9 changed files with 76 additions and 2 deletions
|
|
@ -1075,6 +1075,7 @@ void A32EmitX64::EmitA32CoprocStoreWords(A32EmitContext& ctx, IR::Inst* inst) {
|
|||
void A32EmitX64::EmitTerminalImpl(IR::Term::Interpret terminal, IR::LocationDescriptor initial_location) {
|
||||
ASSERT_MSG(A32::LocationDescriptor{terminal.next}.TFlag() == A32::LocationDescriptor{initial_location}.TFlag(), "Unimplemented");
|
||||
ASSERT_MSG(A32::LocationDescriptor{terminal.next}.EFlag() == A32::LocationDescriptor{initial_location}.EFlag(), "Unimplemented");
|
||||
ASSERT_MSG(terminal.num_instructions == 1, "Unimplemented");
|
||||
|
||||
code->mov(code->ABI_PARAM1.cvt32(), A32::LocationDescriptor{terminal.next}.PC());
|
||||
code->mov(code->ABI_PARAM2, reinterpret_cast<u64>(jit_interface));
|
||||
|
|
|
|||
|
|
@ -310,7 +310,7 @@ void A64EmitX64::EmitTerminalImpl(IR::Term::Interpret terminal, IR::LocationDesc
|
|||
DEVIRT(conf.callbacks, &A64::UserCallbacks::InterpreterFallback).EmitCall(code, [&](Xbyak::Reg64 param1, Xbyak::Reg64 param2) {
|
||||
code->mov(param1, A64::LocationDescriptor{terminal.next}.PC());
|
||||
code->mov(qword[r15 + offsetof(A64JitState, pc)], param1);
|
||||
code->mov(param2.cvt32(), 1);
|
||||
code->mov(param2.cvt32(), terminal.num_instructions);
|
||||
});
|
||||
code->ReturnFromRunCode(true); // TODO: Check cycles
|
||||
}
|
||||
|
|
|
|||
|
|
@ -176,6 +176,7 @@ private:
|
|||
// JIT Compile
|
||||
IR::Block ir_block = A64::Translate(A64::LocationDescriptor{current_location}, [this](u64 vaddr) { return conf.callbacks->MemoryReadCode(vaddr); });
|
||||
Optimization::DeadCodeElimination(ir_block);
|
||||
Optimization::A64MergeInterpretBlocksPass(ir_block, conf.callbacks);
|
||||
// printf("%s\n", IR::DumpBlock(ir_block).c_str());
|
||||
Optimization::VerificationPass(ir_block);
|
||||
return emitter.Emit(ir_block).entrypoint;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue