diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-10-28 11:35:03 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-10-28 11:35:03 +0200 |
| commit | b669177c834219b154fe7cc4cdde085697e58c04 (patch) | |
| tree | 3ce3cc043d757d795b22526e86a9323dd959027b /src | |
| parent | 1678d2b97a5a89313e3dbc8ce3d772bf25e96859 (diff) | |
| download | box64-b669177c834219b154fe7cc4cdde085697e58c04.tar.gz box64-b669177c834219b154fe7cc4cdde085697e58c04.zip | |
Added 66 0F 7D opcode
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/x64run660f.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 7561fff2..a4fff7a7 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -1345,7 +1345,31 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) #endif } break; - + case 0x7D: /* HSUBPD Gx, Ex */ + nextop = F8; + GETEX(0); + GETGX; + #ifndef NOALIGN + is_nan = isnan(GX->d[0]) || isnan(GX->d[1]); + #endif + GX->d[0] -= GX->d[1]; + #ifndef NOALIGN + if(!is_nan && isnan(GX->d[0])) + GX->d[0] = -NAN; + #endif + if(EX==GX) { + GX->d[1] = GX->d[0]; + } else { + #ifndef NOALIGN + is_nan = isnan(EX->d[0]) || isnan(EX->d[1]); + #endif + GX->d[1] = EX->d[0] - EX->d[1]; + #ifndef NOALIGN + if(!is_nan && isnan(GX->d[1])) + GX->d[1] = -NAN; + #endif + } + break; case 0x7E: /* MOVD Ed, Gx */ nextop = F8; GETED(0); |