JIT compiler:
* Improved constant folding/propagation in integer instructions * Merged boolean instructions git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6063 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
05401aeb0e
commit
1faff6aeb7
|
@ -170,14 +170,6 @@ public:
|
||||||
|
|
||||||
void addx(UGeckoInstruction inst);
|
void addx(UGeckoInstruction inst);
|
||||||
void addcx(UGeckoInstruction inst);
|
void addcx(UGeckoInstruction inst);
|
||||||
void orx(UGeckoInstruction inst);
|
|
||||||
void orcx(UGeckoInstruction inst);
|
|
||||||
void norx(UGeckoInstruction inst);
|
|
||||||
void xorx(UGeckoInstruction inst);
|
|
||||||
void eqvx(UGeckoInstruction inst);
|
|
||||||
void andx(UGeckoInstruction inst);
|
|
||||||
void nandx(UGeckoInstruction inst);
|
|
||||||
void andcx(UGeckoInstruction inst);
|
|
||||||
void mulli(UGeckoInstruction inst);
|
void mulli(UGeckoInstruction inst);
|
||||||
void mulhwux(UGeckoInstruction inst);
|
void mulhwux(UGeckoInstruction inst);
|
||||||
void mullwx(UGeckoInstruction inst);
|
void mullwx(UGeckoInstruction inst);
|
||||||
|
@ -209,6 +201,7 @@ public:
|
||||||
void mcrf(UGeckoInstruction inst);
|
void mcrf(UGeckoInstruction inst);
|
||||||
void mcrxr(UGeckoInstruction inst);
|
void mcrxr(UGeckoInstruction inst);
|
||||||
|
|
||||||
|
void boolX(UGeckoInstruction inst);
|
||||||
void crXXX(UGeckoInstruction inst);
|
void crXXX(UGeckoInstruction inst);
|
||||||
|
|
||||||
void reg_imm(UGeckoInstruction inst);
|
void reg_imm(UGeckoInstruction inst);
|
||||||
|
|
|
@ -193,14 +193,14 @@ static GekkoOPTemplate table19[] =
|
||||||
|
|
||||||
static GekkoOPTemplate table31[] =
|
static GekkoOPTemplate table31[] =
|
||||||
{
|
{
|
||||||
{28, &Jit64::andx}, //"andx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
{28, &Jit64::boolX}, //"andx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
||||||
{60, &Jit64::andcx}, //"andcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
{60, &Jit64::boolX}, //"andcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
||||||
{444, &Jit64::orx}, //"orx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
{444, &Jit64::boolX}, //"orx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
||||||
{124, &Jit64::norx}, //"norx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
{124, &Jit64::boolX}, //"norx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
||||||
{316, &Jit64::xorx}, //"xorx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
{316, &Jit64::boolX}, //"xorx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
||||||
{412, &Jit64::orcx}, //"orcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
{412, &Jit64::boolX}, //"orcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
||||||
{476, &Jit64::nandx}, //"nandx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
{476, &Jit64::boolX}, //"nandx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
||||||
{284, &Jit64::eqvx}, //"eqvx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
{284, &Jit64::boolX}, //"eqvx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
|
||||||
{0, &Jit64::cmpXX}, //"cmp", OPTYPE_INTEGER, FL_IN_AB | FL_SET_CRn}},
|
{0, &Jit64::cmpXX}, //"cmp", OPTYPE_INTEGER, FL_IN_AB | FL_SET_CRn}},
|
||||||
{32, &Jit64::cmpXX}, //"cmpl", OPTYPE_INTEGER, FL_IN_AB | FL_SET_CRn}},
|
{32, &Jit64::cmpXX}, //"cmpl", OPTYPE_INTEGER, FL_IN_AB | FL_SET_CRn}},
|
||||||
{26, &Jit64::cntlzwx}, //"cntlzwx",OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_RC_BIT}},
|
{26, &Jit64::cntlzwx}, //"cntlzwx",OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_RC_BIT}},
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue