about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorLeslie Zhai <zhaixiang@loongson.cn>2024-12-19 16:34:54 +0800
committerGitHub <noreply@github.com>2024-12-19 09:34:54 +0100
commit4d377de5abe2ebf614b9fc41da9c54dd81a5ce20 (patch)
treeb445d09b14b7780a5c4218af4c304ba60008f0d5
parent956f6ffc1521be3b678aa3a3b45309ccb87a31f1 (diff)
downloadbox64-4d377de5abe2ebf614b9fc41da9c54dd81a5ce20.tar.gz
box64-4d377de5abe2ebf614b9fc41da9c54dd81a5ce20.zip
[LA64_DYNAREC] Added CLC and PMOVZXBW opcodes (#2172)
-rw-r--r--src/dynarec/la64/dynarec_la64_00.c9
-rw-r--r--src/dynarec/la64/dynarec_la64_660f.c7
2 files changed, 16 insertions, 0 deletions
diff --git a/src/dynarec/la64/dynarec_la64_00.c b/src/dynarec/la64/dynarec_la64_00.c
index 22310ce1..e428ee3f 100644
--- a/src/dynarec/la64/dynarec_la64_00.c
+++ b/src/dynarec/la64/dynarec_la64_00.c
@@ -2477,6 +2477,15 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     DEFAULT;
             }
             break;
+        case 0xF8:
+            INST_NAME("CLC");
+            SETFLAGS(X_CF, SF_SUBSET);
+            SET_DFNONE();
+            if (la64_lbt)
+                X64_SET_EFLAGS(xZR, X_CF);
+            else
+                BSTRINS_D(xFlags, xZR, F_CF, F_CF);
+            break;
         case 0xFC:
             INST_NAME("CLD");
             BSTRINS_D(xFlags, xZR, F_DF, F_DF);
diff --git a/src/dynarec/la64/dynarec_la64_660f.c b/src/dynarec/la64/dynarec_la64_660f.c
index 2037e460..47f9d1c0 100644
--- a/src/dynarec/la64/dynarec_la64_660f.c
+++ b/src/dynarec/la64/dynarec_la64_660f.c
@@ -417,6 +417,13 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
                         VEXTRINS_D(q0, v1, VEXTRINS_IMM_4_0(1, 0));
                     }
                     break;
+                case 0x30:
+                    INST_NAME("PMOVZXBW Gx, Ex");
+                    nextop = F8;
+                    GETEX(q1, 0, 0);
+                    GETGX_empty(q0);
+                    VEXT2XV_HU_BU(q0, q1);
+                    break;
                 case 0x3A:
                     INST_NAME("PMINUW Gx, Ex");  // SSE4 opcode!
                     nextop = F8;