about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorYang Liu <numbksco@gmail.com>2024-07-16 05:44:56 +0800
committerGitHub <noreply@github.com>2024-07-15 23:44:56 +0200
commitb52ff061b46c47187feea67ab52cbf56a445ca8b (patch)
treeaf7d7e398e7a6d6156b74f55816b82d7c6322eb0
parentb7ae79514f4c379be9f561f5942630c15f6a0346 (diff)
downloadbox64-b52ff061b46c47187feea67ab52cbf56a445ca8b.tar.gz
box64-b52ff061b46c47187feea67ab52cbf56a445ca8b.zip
[LA64_DYNAREC] Added 2 more opcodes (#1680)
-rw-r--r--src/dynarec/la64/dynarec_la64_00.c7
-rw-r--r--src/dynarec/la64/dynarec_la64_660f.c14
2 files changed, 21 insertions, 0 deletions
diff --git a/src/dynarec/la64/dynarec_la64_00.c b/src/dynarec/la64/dynarec_la64_00.c
index e7904928..e16d5974 100644
--- a/src/dynarec/la64/dynarec_la64_00.c
+++ b/src/dynarec/la64/dynarec_la64_00.c
@@ -2003,6 +2003,13 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     UFLAG_RES(x1);
                     BSTRINS_D(xRAX, x1, 15, 0);
                     break;
+                case 6:
+                    INST_NAME("DIV Eb");
+                    MESSAGE(LOG_DUMP, "Need Optimization\n");
+                    SETFLAGS(X_ALL, SF_SET_DF);
+                    GETEB(x1, 0);
+                    CALL(div8, -1);
+                    break;
                 default:
                     DEFAULT;
             }
diff --git a/src/dynarec/la64/dynarec_la64_660f.c b/src/dynarec/la64/dynarec_la64_660f.c
index 32782814..55134eb5 100644
--- a/src/dynarec/la64/dynarec_la64_660f.c
+++ b/src/dynarec/la64/dynarec_la64_660f.c
@@ -51,6 +51,20 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
     MAYUSE(j64);
 
     switch (opcode) {
+        case 0x10:
+            INST_NAME("MOVUPD Gx,Ex");
+            nextop = F8;
+            GETG;
+            v0 = sse_get_reg_empty(dyn, ninst, x1, gd);
+            if (MODREG) {
+                v1 = sse_get_reg(dyn, ninst, x1, (nextop & 7) + (rex.b << 3), 0);
+                VOR_V(v0, v1, v1);
+            } else {
+                SMREAD();
+                addr = geted(dyn, addr, ninst, nextop, &ed, x2, x3, &fixedaddress, rex, NULL, 1, 0);
+                VLD(v0, ed, fixedaddress);
+            }
+            break;
         case 0x11:
             INST_NAME("MOVUPD Ex,Gx");
             nextop = F8;