about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-03-25 17:33:30 +0000
committerptitSeb <sebastien.chev@gmail.com>2023-03-25 20:23:07 +0000
commit0c3d350865b49af33a2a78167dc5365ef0dd1739 (patch)
treeb5a56b4eeb6013fd5b91af2ba15d61dd3849b368 /src
parent65211c94c3433ff0b2a8d1ae40460b88fc42d6d0 (diff)
downloadbox64-0c3d350865b49af33a2a78167dc5365ef0dd1739.tar.gz
box64-0c3d350865b49af33a2a78167dc5365ef0dd1739.zip
[RV64_DYNAREC] Fixed GETEDH helper macro, and small optim to F7 /0 /1 opcodes
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/rv64/dynarec_rv64_00.c2
-rw-r--r--src/dynarec/rv64/dynarec_rv64_helper.h4
2 files changed, 3 insertions, 3 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_00.c b/src/dynarec/rv64/dynarec_rv64_00.c
index 568cc68b..0305131f 100644
--- a/src/dynarec/rv64/dynarec_rv64_00.c
+++ b/src/dynarec/rv64/dynarec_rv64_00.c
@@ -1565,7 +1565,7 @@ uintptr_t dynarec64_00(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                 case 1:
                     INST_NAME("TEST Ed, Id");
                     SETFLAGS(X_ALL, SF_SET_PENDING);
-                    GETEDH(x1, 4);
+                    GETED(4);
                     i64 = F32S;
                     emit_test32c(dyn, ninst, rex, ed, i64, x3, x4, x5);
                     break;
diff --git a/src/dynarec/rv64/dynarec_rv64_helper.h b/src/dynarec/rv64/dynarec_rv64_helper.h
index 32e509b4..8801c88b 100644
--- a/src/dynarec/rv64/dynarec_rv64_helper.h
+++ b/src/dynarec/rv64/dynarec_rv64_helper.h
@@ -99,13 +99,13 @@
                     LD(x1, wback, fixedaddress);        \
                     ed = x1;                            \
                 }
-//GETEDH can use hint for ed, and r1 or r2 for wback (depending on hint). wback is 0 if ed is xEAX..xEDI
+//GETEDH can use hint for ed, and x1 or x2 for wback (depending on hint), might also use x3. wback is 0 if ed is xEAX..xEDI
 #define GETEDH(hint, D) if(MODREG) {                    \
                     ed = xRAX+(nextop&7)+(rex.b<<3);    \
                     wback = 0;                          \
                 } else {                                \
                     SMREAD();                           \
-                    addr = geted(dyn, addr, ninst, nextop, &wback, (hint==x2)?x1:x2, ed, &fixedaddress, rex, NULL, 1, D); \
+                    addr = geted(dyn, addr, ninst, nextop, &wback, (hint==x2)?x1:x2, (hint==x1)?x1:x3, &fixedaddress, rex, NULL, 1, D); \
                     LDxw(hint, wback, fixedaddress);    \
                     ed = hint;                          \
                 }