diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-08-09 23:04:14 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-08-09 23:04:14 +0200 |
| commit | dc5c049ed94f3c3854c475b73e2c6b8df4a0c7a2 (patch) | |
| tree | 59138d43b285786c5baa2067a2b9ba7b4fba9355 /src | |
| parent | 642260bdb63eb48667f35d21b376b04f0d5e1976 (diff) | |
| download | box64-dc5c049ed94f3c3854c475b73e2c6b8df4a0c7a2.tar.gz box64-dc5c049ed94f3c3854c475b73e2c6b8df4a0c7a2.zip | |
Added D9 D8..DF opcodes ([DYNAREC] too) (for #361)
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_d9.c | 24 | ||||
| -rw-r--r-- | src/emu/x64rund9.c | 19 |
2 files changed, 27 insertions, 16 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_d9.c b/src/dynarec/arm64/dynarec_arm64_d9.c index 71517ecc..46ebf60c 100644 --- a/src/dynarec/arm64/dynarec_arm64_d9.c +++ b/src/dynarec/arm64/dynarec_arm64_d9.c @@ -79,6 +79,22 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin INST_NAME("FNOP"); break; + case 0xD8: + INST_NAME("FSTPNCE ST0, ST0"); + x87_do_pop(dyn, ninst, x3); + break; + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + INST_NAME("FSTPNCE ST0, STx"); + // copy the cache value for st0 to stx + x87_swapreg(dyn, ninst, x1, x2, 0, nextop&7); + x87_do_pop(dyn, ninst, x3); + break; case 0xE0: INST_NAME("FCHS"); v1 = x87_get_st(dyn, ninst, x1, x2, 0, X87_ST0); @@ -294,14 +310,6 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin case 0xD5: case 0xD6: case 0xD7: - case 0xD8: - case 0xD9: - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: case 0xE2: case 0xE3: case 0xE6: diff --git a/src/emu/x64rund9.c b/src/emu/x64rund9.c index bb341f62..34e29879 100644 --- a/src/emu/x64rund9.c +++ b/src/emu/x64rund9.c @@ -60,6 +60,17 @@ uintptr_t RunD9(x64emu_t *emu, rex_t rex, uintptr_t addr) case 0xD0: /* FNOP */ break; + case 0xD8: /* FSTPNCE ST0, STx */ + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + ST(nextop&7).q = ST0.q; + fpu_do_pop(emu); + break; case 0xE0: /* FCHS */ ST0.d = -ST0.d; break; @@ -210,14 +221,6 @@ uintptr_t RunD9(x64emu_t *emu, rex_t rex, uintptr_t addr) case 0xD5: case 0xD6: case 0xD7: - case 0xD8: - case 0xD9: - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: case 0xE2: case 0xE3: case 0xE6: |