diff --git a/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp b/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp index dbaf7eafbc..b17feddf1f 100644 --- a/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp @@ -1715,10 +1715,8 @@ void spu_recompiler::RCHCNT(spu_opcode_t op) { const XmmLink& vr = XmmAlloc(); const XmmLink& v1 = XmmAlloc(); - c->movd(vr, SPU_OFF_32(ch_tag_upd)); - c->pxor(v1, v1); - c->pcmpeqd(vr, v1); - c->psrld(vr, 31); + c->mov(addr->r32(), 1); + c->movd(vr, addr->r32()); c->pslldq(vr, 12); c->movdqa(SPU_OFF_128(gpr, op.rt), vr); return; diff --git a/rpcs3/Emu/Cell/SPURecompiler.cpp b/rpcs3/Emu/Cell/SPURecompiler.cpp index 236288dd55..0d5bd8f6df 100644 --- a/rpcs3/Emu/Cell/SPURecompiler.cpp +++ b/rpcs3/Emu/Cell/SPURecompiler.cpp @@ -5585,9 +5585,7 @@ public: } case MFC_WrTagUpdate: { - res.value = m_ir->CreateLoad(spu_ptr(&spu_thread::ch_tag_upd), true); - res.value = m_ir->CreateICmpEQ(res.value, m_ir->getInt32(0)); - res.value = m_ir->CreateZExt(res.value, get_type()); + res.value = m_ir->getInt32(1); break; } case MFC_Cmd: diff --git a/rpcs3/Emu/Cell/SPUThread.cpp b/rpcs3/Emu/Cell/SPUThread.cpp index b931bec5c4..781bfec486 100644 --- a/rpcs3/Emu/Cell/SPUThread.cpp +++ b/rpcs3/Emu/Cell/SPUThread.cpp @@ -2374,7 +2374,7 @@ u32 spu_thread::get_ch_count(u32 ch) case SPU_RdInMbox: return ch_in_mbox.get_count(); case MFC_RdTagStat: return ch_tag_stat.get_count(); case MFC_RdListStallStat: return ch_stall_stat.get_count(); - case MFC_WrTagUpdate: return ch_tag_upd == 0; + case MFC_WrTagUpdate: return 1; case SPU_RdSigNotify1: return ch_snr1.get_count(); case SPU_RdSigNotify2: return ch_snr2.get_count(); case MFC_RdAtomicStat: return ch_atomic_stat.get_count();