about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2025-02-08 00:01:08 +0800
committerGitHub <noreply@github.com>2025-02-07 17:01:08 +0100
commit16f0adec6fa029699145f639e5bb3a7c0950ace4 (patch)
treef4b967b92dbdb5b402b7adf1c9f2d1b15472750e /src
parentba6ff73c6922322b2b37a6c7063bc1645c00cfab (diff)
downloadbox64-16f0adec6fa029699145f639e5bb3a7c0950ace4.tar.gz
box64-16f0adec6fa029699145f639e5bb3a7c0950ace4.zip
[LA64_DYNAREC] Added more opcodes (#2324)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/la64/dynarec_la64_66.c6
-rw-r--r--src/dynarec/la64/dynarec_la64_f30f.c7
2 files changed, 13 insertions, 0 deletions
diff --git a/src/dynarec/la64/dynarec_la64_66.c b/src/dynarec/la64/dynarec_la64_66.c
index 4d9b0034..bf9cc495 100644
--- a/src/dynarec/la64/dynarec_la64_66.c
+++ b/src/dynarec/la64/dynarec_la64_66.c
@@ -530,6 +530,12 @@ uintptr_t dynarec64_66(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                 BSTRINSz(gd, x2, 15, 0);
             }
             break;
+        case 0x98:
+            INST_NAME("CBW");
+            SLLI_D(x1, xRAX, 56);
+            SRAI_D(x1, x1, 56);
+            BSTRINSz(xRAX, x1, 15, 0);
+            break;
         case 0xA4:
             if (rep) {
                 INST_NAME("REP MOVSB");
diff --git a/src/dynarec/la64/dynarec_la64_f30f.c b/src/dynarec/la64/dynarec_la64_f30f.c
index 8d704f44..3ef072c2 100644
--- a/src/dynarec/la64/dynarec_la64_f30f.c
+++ b/src/dynarec/la64/dynarec_la64_f30f.c
@@ -87,6 +87,13 @@ uintptr_t dynarec64_F30F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETGX_empty(q0);
             VPACKEV_W(q0, q1, q1);
             break;
+        case 0x16:
+            INST_NAME("MOVSHDUP Gx, Ex");
+            nextop = F8;
+            GETEX(q1, 0, 0);
+            GETGX_empty(q0);
+            VPACKOD_W(q0, q1, q1);
+            break;
         case 0x1E:
             INST_NAME("NOP / ENDBR32 / ENDBR64");
             nextop = F8;