diff options
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_660f38.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_660f38.c b/src/dynarec/rv64/dynarec_rv64_660f38.c index cb8a234f..a5cbb9db 100644 --- a/src/dynarec/rv64/dynarec_rv64_660f38.c +++ b/src/dynarec/rv64/dynarec_rv64_660f38.c @@ -293,6 +293,7 @@ uintptr_t dynarec64_660F38(dynarec_rv64_t* dyn, uintptr_t addr, uint8_t opcode, nextop = F8; GETGX(); GETEX(x2, 0, 12); + sse_forget_reg(dyn, ninst, x6, 0); for (int i = 0; i < 4; ++i) { LW(x3, xEmu, offsetof(x64emu_t, xmm[0]) + i * 4); BGE(x3, xZR, 4 + 4 * 2); @@ -305,6 +306,7 @@ uintptr_t dynarec64_660F38(dynarec_rv64_t* dyn, uintptr_t addr, uint8_t opcode, nextop = F8; GETGX(); GETEX(x2, 0, 8); + sse_forget_reg(dyn, ninst, x6, 0); for (int i = 0; i < 2; ++i) { LD(x3, xEmu, offsetof(x64emu_t, xmm[0]) + i * 8); BGE(x3, xZR, 4 + 4 * 2); @@ -1190,6 +1192,7 @@ uintptr_t dynarec64_660F38(dynarec_rv64_t* dyn, uintptr_t addr, uint8_t opcode, nextop = F8; GETG; sse_forget_reg(dyn, ninst, x6, gd); + sse_forget_reg(dyn, ninst, x6, 0); ADDI(x3, xEmu, offsetof(x64emu_t, xmm[gd])); if (MODREG) { ed = (nextop & 7) + (rex.b << 3); @@ -1269,6 +1272,7 @@ uintptr_t dynarec64_660F38(dynarec_rv64_t* dyn, uintptr_t addr, uint8_t opcode, nextop = F8; GETG; sse_forget_reg(dyn, ninst, x6, gd); + sse_forget_reg(dyn, ninst, x6, 0); ADDI(x2, xEmu, offsetof(x64emu_t, xmm[gd])); if (MODREG) { ed = (nextop & 7) + (rex.b << 3); |