[ARM] Implement xorx

This commit is contained in:
Ryan Houdek 2013-07-17 02:34:20 -05:00
parent b30a697355
commit 5147e5167b
3 changed files with 15 additions and 1 deletions

View File

@ -155,6 +155,7 @@ public:
void ori(UGeckoInstruction _inst); void ori(UGeckoInstruction _inst);
void oris(UGeckoInstruction _inst); void oris(UGeckoInstruction _inst);
void orx(UGeckoInstruction _inst); void orx(UGeckoInstruction _inst);
void xorx(UGeckoInstruction _inst);
void rlwimix(UGeckoInstruction _inst); void rlwimix(UGeckoInstruction _inst);
void rlwinmx(UGeckoInstruction _inst); void rlwinmx(UGeckoInstruction _inst);
void subfx(UGeckoInstruction _inst); void subfx(UGeckoInstruction _inst);

View File

@ -147,6 +147,7 @@ void JitArm::oris(UGeckoInstruction inst)
ORR(RA, RS, rA); ORR(RA, RS, rA);
gpr.Unlock(rA); gpr.Unlock(rA);
} }
void JitArm::orx(UGeckoInstruction inst) void JitArm::orx(UGeckoInstruction inst)
{ {
INSTRUCTION_START INSTRUCTION_START
@ -160,6 +161,18 @@ void JitArm::orx(UGeckoInstruction inst)
ComputeRC(); ComputeRC();
} }
void JitArm::xorx(UGeckoInstruction inst)
{
INSTRUCTION_START
JITDISABLE(Integer)
ARMReg rA = gpr.R(inst.RA);
ARMReg rS = gpr.R(inst.RS);
ARMReg rB = gpr.R(inst.RB);
EORS(rA, rS, rB);
if (inst.Rc)
ComputeRC();
}
void JitArm::extshx(UGeckoInstruction inst) void JitArm::extshx(UGeckoInstruction inst)
{ {
INSTRUCTION_START INSTRUCTION_START

View File

@ -198,7 +198,7 @@ static GekkoOPTemplate table31[] =
{60, &JitArm::Default}, //"andcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, {60, &JitArm::Default}, //"andcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
{444, &JitArm::orx}, //"orx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, {444, &JitArm::orx}, //"orx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
{124, &JitArm::Default}, //"norx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, {124, &JitArm::Default}, //"norx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
{316, &JitArm::Default}, //"xorx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, {316, &JitArm::xorx}, //"xorx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
{412, &JitArm::Default}, //"orcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, {412, &JitArm::Default}, //"orcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
{476, &JitArm::Default}, //"nandx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, {476, &JitArm::Default}, //"nandx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
{284, &JitArm::Default}, //"eqvx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, {284, &JitArm::Default}, //"eqvx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},