mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-04 05:51:27 +12:00
SPU: Don't break blocks on DSYNC instruction in Safe mode (#6731)
This commit is contained in:
parent
8234bdb8f0
commit
a21d7def33
2 changed files with 3 additions and 3 deletions
|
@ -1459,7 +1459,7 @@ void spu_recompiler::SYNC(spu_opcode_t op)
|
||||||
void spu_recompiler::DSYNC(spu_opcode_t op)
|
void spu_recompiler::DSYNC(spu_opcode_t op)
|
||||||
{
|
{
|
||||||
// This instruction forces all earlier load, store, and channel instructions to complete before proceeding.
|
// This instruction forces all earlier load, store, and channel instructions to complete before proceeding.
|
||||||
SYNC(op);
|
c->mfence();
|
||||||
}
|
}
|
||||||
|
|
||||||
void spu_recompiler::MFSPR(spu_opcode_t op)
|
void spu_recompiler::MFSPR(spu_opcode_t op)
|
||||||
|
|
|
@ -1332,7 +1332,6 @@ std::vector<u32> spu_recompiler_base::analyse(const be_t<u32>* ls, u32 entry_poi
|
||||||
}
|
}
|
||||||
|
|
||||||
case spu_itype::SYNC:
|
case spu_itype::SYNC:
|
||||||
case spu_itype::DSYNC:
|
|
||||||
case spu_itype::STOP:
|
case spu_itype::STOP:
|
||||||
case spu_itype::STOPD:
|
case spu_itype::STOPD:
|
||||||
{
|
{
|
||||||
|
@ -1696,6 +1695,7 @@ std::vector<u32> spu_recompiler_base::analyse(const be_t<u32>* ls, u32 entry_poi
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case spu_itype::DSYNC:
|
||||||
case spu_itype::HEQ:
|
case spu_itype::HEQ:
|
||||||
case spu_itype::HEQI:
|
case spu_itype::HEQI:
|
||||||
case spu_itype::HGT:
|
case spu_itype::HGT:
|
||||||
|
@ -6086,7 +6086,7 @@ public:
|
||||||
void DSYNC(spu_opcode_t op) //
|
void DSYNC(spu_opcode_t op) //
|
||||||
{
|
{
|
||||||
// This instruction forces all earlier load, store, and channel instructions to complete before proceeding.
|
// This instruction forces all earlier load, store, and channel instructions to complete before proceeding.
|
||||||
SYNC(op);
|
m_ir->CreateFence(llvm::AtomicOrdering::SequentiallyConsistent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MFSPR(spu_opcode_t op) //
|
void MFSPR(spu_opcode_t op) //
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue