Transactions: drop RDTSC usage

Use simple increment (minor optimization)
This commit is contained in:
Nekotekina 2018-05-20 16:38:33 +03:00
parent fb0f5f0c8b
commit 6fd402bcf8
2 changed files with 4 additions and 20 deletions

View File

@ -1022,11 +1022,7 @@ const auto ppu_stwcx_tx = build_function_asm<bool(*)(u32 raddr, u64 rtime, u64 r
c.cmp(x86::dword_ptr(x86::r11), args[2].r32());
c.jne(fail);
c.mov(x86::dword_ptr(x86::r11), args[3].r32());
c.rdtsc(); // destroys args[1] or args[2]
c.shl(x86::rdx, 33);
c.shl(x86::rax, 1);
c.or_(x86::rax, x86::rdx);
c.mov(x86::qword_ptr(x86::r10), x86::rax);
c.add(x86::qword_ptr(x86::r10), 1);
c.xend();
c.mov(x86::eax, 1);
c.ret();
@ -1111,11 +1107,7 @@ const auto ppu_stdcx_tx = build_function_asm<bool(*)(u32 raddr, u64 rtime, u64 r
c.cmp(x86::qword_ptr(x86::r11), args[2]);
c.jne(fail);
c.mov(x86::qword_ptr(x86::r11), args[3]);
c.rdtsc(); // destroys args[1] or args[2]
c.shl(x86::rdx, 33);
c.shl(x86::rax, 1);
c.or_(x86::rax, x86::rdx);
c.mov(x86::qword_ptr(x86::r10), x86::rax);
c.add(x86::qword_ptr(x86::r10), 1);
c.xend();
c.mov(x86::eax, 1);
c.ret();

View File

@ -271,11 +271,7 @@ const auto spu_putllc_tx = build_function_asm<bool(*)(u32 raddr, u64 rtime, cons
c.vmovaps(x86::yword_ptr(x86::r11, 64), x86::ymm8);
c.vmovaps(x86::yword_ptr(x86::r11, 96), x86::ymm9);
#endif
c.rdtsc(); // destroys args[1] or args[2]
c.shl(x86::rdx, 33);
c.shl(x86::rax, 1);
c.or_(x86::rax, x86::rdx);
c.mov(x86::qword_ptr(x86::r10), x86::rax);
c.add(x86::qword_ptr(x86::r10), 1);
c.xend();
c.vzeroupper();
c.mov(x86::eax, 1);
@ -371,11 +367,7 @@ const auto spu_putlluc_tx = build_function_asm<u64(*)(u32 raddr, const void* rda
c.vmovaps(x86::yword_ptr(x86::r11, 32), x86::ymm1);
c.vmovaps(x86::yword_ptr(x86::r11, 64), x86::ymm2);
c.vmovaps(x86::yword_ptr(x86::r11, 96), x86::ymm3);
c.rdtsc(); // destroys args[1] or args[2]
c.shl(x86::rdx, 33);
c.shl(x86::rax, 1);
c.or_(x86::rax, x86::rdx);
c.mov(x86::qword_ptr(x86::r10), x86::rax);
c.add(x86::qword_ptr(x86::r10), 1);
c.xend();
c.vzeroupper();
c.mov(x86::rax, args[0]);