From f90c3d76e17d83c9c0df99447585cef4e1463dc6 Mon Sep 17 00:00:00 2001 From: zilmar Date: Sat, 1 Oct 2016 10:54:23 +1000 Subject: [PATCH] [Android] Add XorArmRegToArmReg --- .../N64System/Recompiler/Arm/ArmOps.cpp | 17 +++++++++++++++++ .../N64System/Recompiler/Arm/ArmOps.h | 1 + 2 files changed, 18 insertions(+) diff --git a/Source/Project64-core/N64System/Recompiler/Arm/ArmOps.cpp b/Source/Project64-core/N64System/Recompiler/Arm/ArmOps.cpp index 5cd28999e..4fc1dea10 100644 --- a/Source/Project64-core/N64System/Recompiler/Arm/ArmOps.cpp +++ b/Source/Project64-core/N64System/Recompiler/Arm/ArmOps.cpp @@ -826,6 +826,23 @@ void CArmOps::XorArmRegToArmReg(ArmReg DestReg, ArmReg SourceReg) } } +void CArmOps::XorArmRegToArmReg(ArmReg DestReg, ArmReg SourceReg1, ArmReg SourceReg2) +{ + CPU_Message(" eor.w\t%s, %s, %s", ArmRegName(DestReg), ArmRegName(SourceReg1), ArmRegName(SourceReg2)); + Arm32Opcode op = {0}; + op.imm5.rn = SourceReg1; + op.imm5.s = 0; + op.imm5.opcode = 0x754; + + op.imm5.rm = SourceReg2; + op.imm5.type = 0; + op.imm5.imm2 = 0; + op.imm5.rd = DestReg; + op.imm5.imm3 = 0; + op.imm5.opcode2 = 0; + AddCode32(op.Hex); +} + void CArmOps::XorConstToArmReg(ArmReg DestReg, uint32_t value) { if (value == 0) diff --git a/Source/Project64-core/N64System/Recompiler/Arm/ArmOps.h b/Source/Project64-core/N64System/Recompiler/Arm/ArmOps.h index b694cd02d..2ad336650 100644 --- a/Source/Project64-core/N64System/Recompiler/Arm/ArmOps.h +++ b/Source/Project64-core/N64System/Recompiler/Arm/ArmOps.h @@ -175,6 +175,7 @@ protected: static void TestVariable(uint32_t Const, void * Variable, const char * VariableName); static void XorConstToArmReg(ArmReg DestReg, uint32_t value); static void XorArmRegToArmReg(ArmReg DestReg, ArmReg SourceReg); + static void XorArmRegToArmReg(ArmReg DestReg, ArmReg SourceReg1, ArmReg SourceReg2); static bool CanThumbCompressConst (uint32_t value); static uint16_t ThumbCompressConst (uint32_t value);