mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-14 18:58:36 +12:00
SPU JIT: more asm
This commit is contained in:
parent
f9b68bc012
commit
4e9dc8ab9c
2 changed files with 512 additions and 224 deletions
File diff suppressed because it is too large
Load diff
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue