mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-13 18:28:35 +12:00
SPU channel optimization (#1675)
This commit is contained in:
parent
81780d1932
commit
efc8779275
7 changed files with 216 additions and 255 deletions
|
@ -33,7 +33,10 @@ void spu_interpreter::set_interrupt_status(SPUThread& spu, spu_opcode_t op)
|
|||
|
||||
void spu_interpreter::STOP(SPUThread& spu, spu_opcode_t op)
|
||||
{
|
||||
spu.stop_and_signal(op.opcode & 0x3fff);
|
||||
if (!spu.stop_and_signal(op.opcode & 0x3fff))
|
||||
{
|
||||
spu.pc -= 4;
|
||||
}
|
||||
}
|
||||
|
||||
void spu_interpreter::LNOP(SPUThread& spu, spu_opcode_t op)
|
||||
|
@ -59,7 +62,10 @@ void spu_interpreter::MFSPR(SPUThread& spu, spu_opcode_t op)
|
|||
|
||||
void spu_interpreter::RDCH(SPUThread& spu, spu_opcode_t op)
|
||||
{
|
||||
spu.gpr[op.rt] = v128::from32r(spu.get_ch_value(op.ra));
|
||||
if (!spu.get_ch_value(op.ra, spu.gpr[op.rt]._u32[3]))
|
||||
{
|
||||
spu.pc -= 4;
|
||||
}
|
||||
}
|
||||
|
||||
void spu_interpreter::RCHCNT(SPUThread& spu, spu_opcode_t op)
|
||||
|
@ -276,7 +282,10 @@ void spu_interpreter::MTSPR(SPUThread& spu, spu_opcode_t op)
|
|||
|
||||
void spu_interpreter::WRCH(SPUThread& spu, spu_opcode_t op)
|
||||
{
|
||||
spu.set_ch_value(op.ra, spu.gpr[op.rt]._u32[3]);
|
||||
if (!spu.set_ch_value(op.ra, spu.gpr[op.rt]._u32[3]))
|
||||
{
|
||||
spu.pc -= 4;
|
||||
}
|
||||
}
|
||||
|
||||
void spu_interpreter::BIZ(SPUThread& spu, spu_opcode_t op)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue