diff --git a/Source/Project64-core/N64System/Recompiler/x86/x86RecompilerOps.cpp b/Source/Project64-core/N64System/Recompiler/x86/x86RecompilerOps.cpp index 5a97249a6..325907e95 100644 --- a/Source/Project64-core/N64System/Recompiler/x86/x86RecompilerOps.cpp +++ b/Source/Project64-core/N64System/Recompiler/x86/x86RecompilerOps.cpp @@ -5126,73 +5126,6 @@ void CX86RecompilerOps::SPECIAL_DMULTU() m_Assembler.MoveConstToVariable(&R4300iOp::m_Opcode.Value, "R4300iOp::m_Opcode.Value", m_Opcode.Value); m_Assembler.CallFunc((uint32_t)R4300iOp::SPECIAL_DMULTU, "R4300iOp::SPECIAL_DMULTU"); m_RegWorkingSet.AfterCallDirect(); - -#ifdef toremove - /* _RegLO->UDW = (uint64)_GPR[m_Opcode.rs].UW[0] * (uint64)_GPR[m_Opcode.rt].UW[0]; */ - X86Protected(asmjit::x86::edx) = true; - Map_TempReg(asmjit::x86::eax, m_Opcode.rs, false); - X86Protected(asmjit::x86::edx) = false; - Map_TempReg(asmjit::x86::edx, m_Opcode.rt, false); - - m_Assembler.MulX86reg(asmjit::x86::edx); - m_Assembler.MoveX86regToVariable(&_RegLO->UW[0], "_RegLO->UW[0]", asmjit::x86::eax); - m_Assembler.MoveX86regToVariable(&_RegLO->UW[1], "_RegLO->UW[1]", asmjit::x86::edx); - - /* _RegHI->UDW = (uint64)_GPR[m_Opcode.rs].UW[1] * (uint64)_GPR[m_Opcode.rt].UW[1]; */ - Map_TempReg(asmjit::x86::eax, m_Opcode.rs, true); - Map_TempReg(asmjit::x86::edx, m_Opcode.rt, true); - - m_Assembler.MulX86reg(asmjit::x86::edx); - m_Assembler.MoveX86regToVariable(&_RegHI->UW[0], "_RegHI->UW[0]", asmjit::x86::eax); - m_Assembler.MoveX86regToVariable(&_RegHI->UW[1], "_RegHI->UW[1]", asmjit::x86::edx); - - /* Tmp[0].UDW = (uint64)_GPR[m_Opcode.rs].UW[1] * (uint64)_GPR[m_Opcode.rt].UW[0]; */ - Map_TempReg(asmjit::x86::eax, m_Opcode.rs, true); - Map_TempReg(asmjit::x86::edx, m_Opcode.rt, false); - - Map_TempReg(asmjit::x86::ebx, -1, false); - Map_TempReg(asmjit::x86::ecx, -1, false); - - m_Assembler.MulX86reg(asmjit::x86::edx); - m_Assembler.MoveX86RegToX86Reg(asmjit::x86::ebx, asmjit::x86::eax); // EDX:EAX -> ECX:EBX - m_Assembler.MoveX86RegToX86Reg(asmjit::x86::ecx, asmjit::x86::edx); - - /* Tmp[1].UDW = (uint64)_GPR[m_Opcode.rs].UW[0] * (uint64)_GPR[m_Opcode.rt].UW[1]; */ - Map_TempReg(asmjit::x86::eax, m_Opcode.rs, false); - Map_TempReg(asmjit::x86::edx, m_Opcode.rt, true); - - m_Assembler.MulX86reg(asmjit::x86::edx); - Map_TempReg(asmjit::x86::esi, -1, false); - Map_TempReg(asmjit::x86::edi, -1, false); - m_Assembler.MoveX86RegToX86Reg(asmjit::x86::esi, asmjit::x86::eax); // EDX:EAX -> EDI:ESI - m_Assembler.MoveX86RegToX86Reg(asmjit::x86::edi, asmjit::x86::edx); - - /* Tmp[2].UDW = (uint64)_RegLO->UW[1] + (uint64)Tmp[0].UW[0] + (uint64)Tmp[1].UW[0]; */ - m_Assembler.XorX86RegToX86Reg(asmjit::x86::edx, asmjit::x86::edx); - m_Assembler.MoveVariableToX86reg(asmjit::x86::eax, &_RegLO->UW[1], "_RegLO->UW[1]"); - m_Assembler.AddX86RegToX86Reg(asmjit::x86::eax, asmjit::x86::ebx); - m_Assembler.AddConstToX86Reg(asmjit::x86::edx, 0); - m_Assembler.AddX86RegToX86Reg(asmjit::x86::eax, asmjit::x86::esi); - m_Assembler.AddConstToX86Reg(asmjit::x86::edx, 0); // EDX:EAX - - /* _RegLO->UDW += ((uint64)Tmp[0].UW[0] + (uint64)Tmp[1].UW[0]) << 32; */ - /* [low+4] += ebx + esi */ - - AddX86regToVariable(&_RegLO->UW[1], "_RegLO->UW[1]", asmjit::x86::ebx); - AddX86regToVariable(&_RegLO->UW[1], "_RegLO->UW[1]", asmjit::x86::esi); - - /* _RegHI->UDW += (uint64)Tmp[0].UW[1] + (uint64)Tmp[1].UW[1] + Tmp[2].UW[1]; */ - /* [hi] += ecx + edi + edx */ - - AddX86regToVariable(&_RegHI->UW[0], "_RegHI->UW[0]", asmjit::x86::ecx); - AdcConstToVariable(&_RegHI->UW[1], "_RegHI->UW[1]", 0); - - AddX86regToVariable(&_RegHI->UW[0], "_RegHI->UW[0]", asmjit::x86::edi); - AdcConstToVariable(&_RegHI->UW[1], "_RegHI->UW[1]", 0); - - AddX86regToVariable(&_RegHI->UW[0], "_RegHI->UW[0]", asmjit::x86::edx); - AdcConstToVariable(&_RegHI->UW[1], "_RegHI->UW[1]", 0); -#endif } void CX86RecompilerOps::SPECIAL_DDIV()