From bb498e599ed46e72806c9d8fa03162a7cf78ed0a Mon Sep 17 00:00:00 2001 From: SimoneN64 Date: Tue, 28 Jan 2025 00:35:15 +0100 Subject: [PATCH] [JIT]: Registers::Write handler for Xbyak register write op --- src/backend/core/registers/Registers.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/backend/core/registers/Registers.cpp b/src/backend/core/registers/Registers.cpp index f9af5387..8b0c36e8 100644 --- a/src/backend/core/registers/Registers.cpp +++ b/src/backend/core/registers/Registers.cpp @@ -195,6 +195,20 @@ void Registers::Write(size_t idx, s8 v) { gpr[idx] = v; } +template <> +void Registers::Write(size_t idx, Xbyak::Reg v) { + if (idx == 0) + return; + + gprIsConstant[idx] = false; + + if (!jit) + Util::panic("Did you try to call Registers::Write(size_t, *Xbyak::Reg*) from the interpreter?"); + + jit->code.movsx(v.cvt64(), v.cvt8()); + jit->code.mov(jit->GPR(idx), v); +} + template <> void Registers::Write(size_t idx, Xbyak::Reg v) { if (idx == 0)