Merge pull request #4711 from lioncash/tables
JIT Instruction Tables: Eliminate JIT global usages
This commit is contained in:
commit
027719d8e2
|
@ -874,7 +874,7 @@ const u8* Jit64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer* code_buf, JitBloc
|
|||
fpr.BindToRegister(reg, true, false);
|
||||
}
|
||||
|
||||
Jit64Tables::CompileInstruction(ops[i]);
|
||||
Jit64Tables::CompileInstruction(*this, ops[i]);
|
||||
|
||||
if (jo.memcheck && (opinfo->flags & FL_LOADSTORE))
|
||||
{
|
||||
|
|
|
@ -360,21 +360,20 @@ static GekkoOPTemplate table63_2[] = {
|
|||
|
||||
namespace Jit64Tables
|
||||
{
|
||||
void CompileInstruction(PPCAnalyst::CodeOp& op)
|
||||
void CompileInstruction(Jit64& jit, PPCAnalyst::CodeOp& op)
|
||||
{
|
||||
Jit64* jit64 = (Jit64*)g_jit;
|
||||
(jit64->*dynaOpTable[op.inst.OPCD])(op.inst);
|
||||
(jit.*dynaOpTable[op.inst.OPCD])(op.inst);
|
||||
GekkoOPInfo* info = op.opinfo;
|
||||
if (info)
|
||||
{
|
||||
#ifdef OPLOG
|
||||
if (!strcmp(info->opname, OP_TO_LOG)) // "mcrfs"
|
||||
{
|
||||
rsplocations.push_back(g_jit.js.compilerPC);
|
||||
rsplocations.push_back(jit.js.compilerPC);
|
||||
}
|
||||
#endif
|
||||
info->compileCount++;
|
||||
info->lastUse = g_jit->js.compilerPC;
|
||||
info->lastUse = jit.js.compilerPC;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
class Jit64;
|
||||
|
||||
namespace PPCAnalyst
|
||||
{
|
||||
struct CodeOp;
|
||||
|
@ -11,6 +13,6 @@ struct CodeOp;
|
|||
|
||||
namespace Jit64Tables
|
||||
{
|
||||
void CompileInstruction(PPCAnalyst::CodeOp& op);
|
||||
void CompileInstruction(Jit64& jit, PPCAnalyst::CodeOp& op);
|
||||
void InitTables();
|
||||
}
|
||||
|
|
|
@ -640,7 +640,7 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer* code_buf, JitBloc
|
|||
ibuild.EmitBreakPointCheck(ibuild.EmitIntConst(ops[i].address));
|
||||
}
|
||||
|
||||
JitILTables::CompileInstruction(ops[i]);
|
||||
JitILTables::CompileInstruction(*this, ops[i]);
|
||||
|
||||
if (jo.memcheck && (opinfo->flags & FL_LOADSTORE))
|
||||
{
|
||||
|
|
|
@ -378,26 +378,25 @@ static GekkoOPTemplate table63_2[] = {
|
|||
|
||||
namespace JitILTables
|
||||
{
|
||||
void CompileInstruction(PPCAnalyst::CodeOp& op)
|
||||
void CompileInstruction(JitIL& jit, PPCAnalyst::CodeOp& op)
|
||||
{
|
||||
JitIL* jitil = (JitIL*)g_jit;
|
||||
(jitil->*dynaOpTable[op.inst.OPCD])(op.inst);
|
||||
(jit.*dynaOpTable[op.inst.OPCD])(op.inst);
|
||||
GekkoOPInfo* info = op.opinfo;
|
||||
if (info)
|
||||
{
|
||||
#ifdef OPLOG
|
||||
if (!strcmp(info->opname, OP_TO_LOG)) // "mcrfs"
|
||||
{
|
||||
rsplocations.push_back(g_jit.js.compilerPC);
|
||||
rsplocations.push_back(jit.js.compilerPC);
|
||||
}
|
||||
#endif
|
||||
info->compileCount++;
|
||||
info->lastUse = g_jit->js.compilerPC;
|
||||
info->lastUse = jit.js.compilerPC;
|
||||
}
|
||||
else
|
||||
{
|
||||
PanicAlert("Tried to compile illegal (or unknown) instruction %08x, at %08x", op.inst.hex,
|
||||
g_jit->js.compilerPC);
|
||||
jit.js.compilerPC);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
class JitIL;
|
||||
|
||||
namespace PPCAnalyst
|
||||
{
|
||||
struct CodeOp;
|
||||
|
@ -11,6 +13,6 @@ struct CodeOp;
|
|||
|
||||
namespace JitILTables
|
||||
{
|
||||
void CompileInstruction(PPCAnalyst::CodeOp& op);
|
||||
void CompileInstruction(JitIL& jit, PPCAnalyst::CodeOp& op);
|
||||
void InitTables();
|
||||
}
|
||||
|
|
|
@ -741,7 +741,7 @@ void JitArm64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer* code_buf, JitBlock*
|
|||
js.firstFPInstructionFound = true;
|
||||
}
|
||||
|
||||
JitArm64Tables::CompileInstruction(ops[i]);
|
||||
JitArm64Tables::CompileInstruction(*this, ops[i]);
|
||||
if (!MergeAllowedNextInstructions(1) || js.op[1].opinfo->type != OPTYPE_INTEGER)
|
||||
FlushCarry();
|
||||
|
||||
|
|
|
@ -2,9 +2,13 @@
|
|||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Core/PowerPC/JitArm64/Jit.h"
|
||||
#include "Core/PowerPC/JitArm64/JitArm64_Tables.h"
|
||||
|
||||
#include "Core/PowerPC/Gekko.h"
|
||||
#include "Core/PowerPC/JitArm64/Jit.h"
|
||||
#include "Core/PowerPC/JitInterface.h"
|
||||
#include "Core/PowerPC/PPCAnalyst.h"
|
||||
#include "Core/PowerPC/PPCTables.h"
|
||||
|
||||
// Should be moved in to the Jit class
|
||||
typedef void (JitArm64::*_Instruction)(UGeckoInstruction instCode);
|
||||
|
@ -365,21 +369,20 @@ static GekkoOPTemplate table63_2[] = {
|
|||
|
||||
namespace JitArm64Tables
|
||||
{
|
||||
void CompileInstruction(PPCAnalyst::CodeOp& op)
|
||||
void CompileInstruction(JitArm64& jit, PPCAnalyst::CodeOp& op)
|
||||
{
|
||||
JitArm64* jitarm = (JitArm64*)g_jit;
|
||||
(jitarm->*dynaOpTable[op.inst.OPCD])(op.inst);
|
||||
(jit.*dynaOpTable[op.inst.OPCD])(op.inst);
|
||||
GekkoOPInfo* info = op.opinfo;
|
||||
if (info)
|
||||
{
|
||||
#ifdef OPLOG
|
||||
if (!strcmp(info->opname, OP_TO_LOG))
|
||||
{ ///"mcrfs"
|
||||
rsplocations.push_back(g_jit.js.compilerPC);
|
||||
rsplocations.push_back(jit.js.compilerPC);
|
||||
}
|
||||
#endif
|
||||
info->compileCount++;
|
||||
info->lastUse = g_jit->js.compilerPC;
|
||||
info->lastUse = jit.js.compilerPC;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,11 +4,15 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "Core/PowerPC/Gekko.h"
|
||||
#include "Core/PowerPC/PPCTables.h"
|
||||
class JitArm64;
|
||||
|
||||
namespace PPCAnalyst
|
||||
{
|
||||
struct CodeOp;
|
||||
}
|
||||
|
||||
namespace JitArm64Tables
|
||||
{
|
||||
void CompileInstruction(PPCAnalyst::CodeOp& op);
|
||||
void CompileInstruction(JitArm64& jit, PPCAnalyst::CodeOp& op);
|
||||
void InitTables();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue