diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-04-08 10:55:05 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-04-08 10:55:05 +0200 |
| commit | 9b40854d27fd10c9c541d87a4f547c4de90c5e22 (patch) | |
| tree | 6e4b1ff1175fb5327d6cb77dc364f65983e8fd69 /src | |
| parent | 2092da29076801111338a4bfa83b59e8e0f8c32d (diff) | |
| download | box64-9b40854d27fd10c9c541d87a4f547c4de90c5e22.tar.gz box64-9b40854d27fd10c9c541d87a4f547c4de90c5e22.zip | |
Added 66 0F 38 06 opcode
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/x64run660f.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 448cdf65..2c5e503b 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -343,6 +343,19 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) GX->sw[4+i] = EX->sw[i*2+0] - EX->sw[i*2+1]; } break; + case 0x06: /* PHSUBD Gx, Ex */ + nextop = F8; + GETEX(0); + GETGX; + for (int i=0; i<2; ++i) + GX->sd[i] = GX->sd[i*2+0] - GX->sd[i*2+1]; + if(GX == EX) { + GX->q[1] = GX->q[0]; + } else { + for (int i=0; i<2; ++i) + GX->sd[2+i] = EX->sd[i*2+0] - EX->sd[i*2+1]; + } + break; case 0x08: /* PSIGNB Gx, Ex */ nextop = F8; |