a64_emit_x64: bug: EmitA64WriteMemory128 should write not read

This commit is contained in:
MerryMage 2018-01-24 16:49:06 +00:00
parent ab84524806
commit da3e9a5704

View file

@ -402,8 +402,8 @@ void A64EmitX64::EmitA64WriteMemory128(A64EmitContext& ctx, IR::Inst* inst) {
code->sub(rsp, ABI_SHADOW_SPACE); code->sub(rsp, ABI_SHADOW_SPACE);
code->movaps(code->xword[code->ABI_PARAM3], xmm_value); code->movaps(code->xword[code->ABI_PARAM3], xmm_value);
DEVIRT(conf.callbacks, &A64::UserCallbacks::MemoryRead128).EmitCall(code, [&](Xbyak::Reg64 return_value, Xbyak::Reg64 vaddr) { DEVIRT(conf.callbacks, &A64::UserCallbacks::MemoryWrite128).EmitCall(code, [&](Xbyak::Reg64 vaddr, Xbyak::Reg64 value_ptr) {
ASSERT(return_value == code->ABI_PARAM2 && vaddr == code->ABI_PARAM3); ASSERT(vaddr == code->ABI_PARAM2 && value_ptr == code->ABI_PARAM3);
}); });
code->add(rsp, ABI_SHADOW_SPACE); code->add(rsp, ABI_SHADOW_SPACE);