Core: remove #ifdef toremove block in CX86RecompilerOps::SPECIAL_DMULTU()
This commit is contained in:
parent
9743f12b1d
commit
2a6d3cd519
|
@ -5126,73 +5126,6 @@ void CX86RecompilerOps::SPECIAL_DMULTU()
|
||||||
m_Assembler.MoveConstToVariable(&R4300iOp::m_Opcode.Value, "R4300iOp::m_Opcode.Value", m_Opcode.Value);
|
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_Assembler.CallFunc((uint32_t)R4300iOp::SPECIAL_DMULTU, "R4300iOp::SPECIAL_DMULTU");
|
||||||
m_RegWorkingSet.AfterCallDirect();
|
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()
|
void CX86RecompilerOps::SPECIAL_DDIV()
|
||||||
|
|
Loading…
Reference in New Issue