SPU JIT: more asm

This commit is contained in:
Nekotekina 2014-04-07 22:27:30 +04:00
parent f9b68bc012
commit 4e9dc8ab9c
2 changed files with 512 additions and 224 deletions

File diff suppressed because it is too large Load diff

View file

@ -29,6 +29,7 @@ void SPURecompilerCore::Compile(u16 pos)
{ {
compiler.addFunc(kFuncConvHost, FuncBuilder4<u32, void*, void*, void*, u32>()); compiler.addFunc(kFuncConvHost, FuncBuilder4<u32, void*, void*, void*, u32>());
const u16 start = pos; const u16 start = pos;
u32 excess = 0;
entry[start].count = 0; entry[start].count = 0;
GpVar cpu_var(compiler, kVarTypeIntPtr, "cpu"); GpVar cpu_var(compiler, kVarTypeIntPtr, "cpu");
@ -68,6 +69,10 @@ void SPURecompilerCore::Compile(u16 pos)
m_enc->do_finalize = true; m_enc->do_finalize = true;
} }
bool fin = m_enc->do_finalize; bool fin = m_enc->do_finalize;
if (entry[pos].valid == re(opcode))
{
excess++;
}
entry[pos].valid = re(opcode); entry[pos].valid = re(opcode);
if (fin) break; if (fin) break;
@ -78,6 +83,8 @@ void SPURecompilerCore::Compile(u16 pos)
compiler.ret(pos_var); compiler.ret(pos_var);
compiler.endFunc(); compiler.endFunc();
entry[start].pointer = compiler.make(); entry[start].pointer = compiler.make();
//ConLog.Write("Compiled: %d (excess %d), ls_addr = 0x%x", entry[start].count, excess, pos * 4);
} }
u8 SPURecompilerCore::DecodeMemory(const u64 address) u8 SPURecompilerCore::DecodeMemory(const u64 address)