void Interpreter::stfsu(UGeckoInstruction _inst) { u32 uAddress = Helper_Get_EA_U(_inst); Memory::Write_U32(ConvertToSingle(riPS0(_inst.FS)), uAddress); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { m_GPR[_inst.RA] = uAddress; } }
void Interpreter::stwu(UGeckoInstruction _inst) { u32 uAddress = Helper_Get_EA_U(_inst); Memory::Write_U32(m_GPR[_inst.RS], uAddress); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { m_GPR[_inst.RA] = uAddress; } }
void Interpreter::sthu(UGeckoInstruction _inst) { u32 uAddress = Helper_Get_EA_U(_inst); PowerPC::Write_U16((u16)rGPR[_inst.RS], uAddress); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { rGPR[_inst.RA] = uAddress; } }
void Interpreter::lfdu(UGeckoInstruction _inst) { u32 uAddress = Helper_Get_EA_U(_inst); u64 temp = Memory::Read_U64(uAddress); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { riPS0(_inst.FD) = temp; m_GPR[_inst.RA] = uAddress; } }
void Interpreter::lbzu(UGeckoInstruction _inst) { u32 uAddress = Helper_Get_EA_U(_inst); u32 temp = (u32)Memory::Read_U8(uAddress); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { m_GPR[_inst.RD] = temp; m_GPR[_inst.RA] = uAddress; } }
void Interpreter::stwu(UGeckoInstruction inst) { const u32 address = Helper_Get_EA_U(inst); PowerPC::Write_U32(rGPR[inst.RS], address); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { rGPR[inst.RA] = address; } }
void Interpreter::lhau(UGeckoInstruction _inst) { u32 uAddress = Helper_Get_EA_U(_inst); u32 temp = (u32)(s32)(s16)PowerPC::Read_U16(uAddress); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { rGPR[_inst.RD] = temp; rGPR[_inst.RA] = uAddress; } }
void Interpreter::lbzu(UGeckoInstruction inst) { const u32 address = Helper_Get_EA_U(inst); const u32 temp = PowerPC::Read_U8(address); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { rGPR[inst.RD] = temp; rGPR[inst.RA] = address; } }
void Interpreter::lfsu(UGeckoInstruction _inst) { u32 uAddress = Helper_Get_EA_U(_inst); u32 uTemp = Memory::Read_U32(uAddress); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { double value = *(float*)&uTemp; rPS0(_inst.FD) = value; rPS1(_inst.FD) = value; m_GPR[_inst.RA] = uAddress; } }
void Interpreter::lfsu(UGeckoInstruction _inst) { u32 uAddress = Helper_Get_EA_U(_inst); u32 uTemp = PowerPC::Read_U32(uAddress); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { u64 value = ConvertToDouble(uTemp); riPS0(_inst.FD) = value; riPS1(_inst.FD) = value; rGPR[_inst.RA] = uAddress; } }
void Interpreter::stfsu(UGeckoInstruction inst) { const u32 address = Helper_Get_EA_U(inst); if ((address & 0b11) != 0) { GenerateAlignmentException(address); return; } PowerPC::Write_U32(ConvertToSingle(riPS0(inst.FS)), address); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { rGPR[inst.RA] = address; } }
void Interpreter::lfdu(UGeckoInstruction inst) { const u32 address = Helper_Get_EA_U(inst); if ((address & 0b11) != 0) { GenerateAlignmentException(address); return; } const u64 temp = PowerPC::Read_U64(address); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { riPS0(inst.FD) = temp; rGPR[inst.RA] = address; } }
void Interpreter::lfsu(UGeckoInstruction inst) { const u32 address = Helper_Get_EA_U(inst); if ((address & 0b11) != 0) { GenerateAlignmentException(address); return; } const u32 temp = PowerPC::Read_U32(address); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { const u64 value = ConvertToDouble(temp); riPS0(inst.FD) = value; riPS1(inst.FD) = value; rGPR[inst.RA] = address; } }