mirror of
https://github.com/ptitSeb/box64.git
synced 2025-10-14 02:38:54 +08:00
[RV64_DYNAREC] Fixed some missing sse_forget_reg for implicit xmm0 (#3056)
This commit is contained in:
@@ -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);
|
||||
|
Reference in New Issue
Block a user