Browse Source

[dynarmic] write inline better flag seq

pull/128/head
lizzie 8 months ago
committed by crueter
parent
commit
66f79089c3
  1. 11
      externals/dynarmic/src/dynarmic/backend/x64/emit_x64_memory.cpp.inc

11
externals/dynarmic/src/dynarmic/backend/x64/emit_x64_memory.cpp.inc

@ -514,24 +514,21 @@ void AxxEmitX64::EmitExclusiveWriteMemoryInline(AxxEmitContext& ctx, IR::Inst* i
conf.recompile_on_exclusive_fastmem_failure, conf.recompile_on_exclusive_fastmem_failure,
}); });
code.cmp(al, 0);
code.xor_(status.cvt32(), status.cvt32()); //dep-break
code.test(code.al, code.al);
code.setz(status.cvt8()); code.setz(status.cvt8());
code.movzx(status.cvt32(), status.cvt8());
code.jmp(*end, code.T_NEAR); code.jmp(*end, code.T_NEAR);
}); });
} else { } else {
code.call(wrapped_fn); code.call(wrapped_fn);
code.cmp(al, 0);
code.xor_(status.cvt32(), status.cvt32()); //dep-break
code.test(code.al, code.al);
code.setz(status.cvt8()); code.setz(status.cvt8());
code.movzx(status.cvt32(), status.cvt8());
} }
code.L(*end); code.L(*end);
EmitExclusiveUnlock(code, conf, tmp, eax); EmitExclusiveUnlock(code, conf, tmp, eax);
ctx.reg_alloc.DefineValue(inst, status); ctx.reg_alloc.DefineValue(inst, status);
EmitCheckMemoryAbort(ctx, inst); EmitCheckMemoryAbort(ctx, inst);
} }

Loading…
Cancel
Save