dynarec: ssa initial commit

This commit is contained in:
Flyinghead 2019-06-04 21:20:34 +02:00
parent a46f1bd0aa
commit 692556ca5d
4 changed files with 1028 additions and 6 deletions

View File

@ -1,7 +1,6 @@
/*
In case you wonder, the extern "C" stuff are for the assembly code on beagleboard/pandora
*/
#include <map>
#include "types.h"
#include "decoder.h"
#pragma once

View File

@ -1152,7 +1152,7 @@ _end:
verify(blk->oplist.size() <= BLOCK_MAX_SH_OPS_HARD);
#if HOST_OS == OS_WINDOWS
#if 0
switch(rbi->addr)
{
case 0x8C09ED16:

View File

@ -41,6 +41,7 @@ struct shil_param
{
type=FMT_NULL;
_imm=0xFFFFFFFF;
memset(version, 0, sizeof(version));
}
shil_param(u32 type,u32 imm)
{
@ -48,6 +49,7 @@ struct shil_param
if (type >= FMT_REG_BASE)
new (this) shil_param((Sh4RegType)imm);
_imm=imm;
memset(version, 0, sizeof(version));
}
shil_param(Sh4RegType reg)
@ -88,7 +90,7 @@ struct shil_param
type=FMT_I32;
_reg=reg;
}
memset(version, 0, sizeof(version));
}
union
{
@ -96,6 +98,7 @@ struct shil_param
Sh4RegType _reg;
};
u32 type;
u16 version[16];
bool is_null() const { return type==FMT_NULL; }
bool is_imm() const { return type==FMT_IMM; }
@ -118,7 +121,7 @@ struct shil_param
s32 reg_nofs() const { verify(is_reg()); return (s32)((u8*)GetRegPtr(_reg) - (u8*)GetRegPtr(reg_xf_0)-sizeof(Sh4cntx)); }
u32 reg_aofs() const { return -reg_nofs(); }
u32 imm_value() { verify(is_imm()); return _imm; }
u32 imm_value() const { verify(is_imm()); return _imm; }
bool is_vector() const { return type>=FMT_VECTOR_BASE; }
@ -153,9 +156,9 @@ struct shil_opcode
u16 guest_offs;
bool delay_slot;
string dissasm();
string dissasm() const;
};
const char* shil_opcode_name(int op);
string name_reg(u32 reg);
string name_reg(Sh4RegType reg);

1020
core/hw/sh4/dyna/ssa.h Normal file

File diff suppressed because it is too large Load Diff