about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/dynarec/rv64/dynarec_rv64_660f38.c4
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);