diff options
| author | Yang Liu <numbksco@gmail.com> | 2024-07-16 05:44:56 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-15 23:44:56 +0200 |
| commit | b52ff061b46c47187feea67ab52cbf56a445ca8b (patch) | |
| tree | af7d7e398e7a6d6156b74f55816b82d7c6322eb0 | |
| parent | b7ae79514f4c379be9f561f5942630c15f6a0346 (diff) | |
| download | box64-b52ff061b46c47187feea67ab52cbf56a445ca8b.tar.gz box64-b52ff061b46c47187feea67ab52cbf56a445ca8b.zip | |
[LA64_DYNAREC] Added 2 more opcodes (#1680)
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_00.c | 7 | ||||
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_660f.c | 14 |
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; |