SPU: fix PUTLLC (TSX-FA)

Some forgotten checks may affect performance.
This commit is contained in:
Nekotekina 2020-10-13 17:46:03 +03:00
parent dcff8c2637
commit 91db4b724c
1 changed files with 8 additions and 0 deletions

View File

@ -495,6 +495,14 @@ const auto spu_putllc_tx = build_function_asm<u32(*)(u32 raddr, u64 rtime, const
c.jne(fail2); c.jne(fail2);
Label tx1 = build_transaction_enter(c, fall2, x86::r12, 666); Label tx1 = build_transaction_enter(c, fall2, x86::r12, 666);
// Check pause flag
c.bt(x86::dword_ptr(args[2], ::offset32(&spu_thread::state) - ::offset32(&spu_thread::rdata)), static_cast<u32>(cpu_flag::pause));
c.jc(fail3);
c.mov(x86::rax, x86::qword_ptr(x86::rbx));
c.and_(x86::rax, -128);
c.cmp(x86::rax, x86::r13);
c.jne(fail2);
c.xbegin(tx1); c.xbegin(tx1);
if (s_tsx_avx) if (s_tsx_avx)