diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-08 15:53:48 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-08 15:53:48 +0100 |
| commit | 0692d4f3f25e43f82f8ecf7a3d575d47ca9eb7c6 (patch) | |
| tree | db886bb2306cccf534ab7273f31521fa7074030c /src | |
| parent | 7a08d50f184f4ce7c04cbfa688afd9d84ee04f3c (diff) | |
| download | box64-0692d4f3f25e43f82f8ecf7a3d575d47ca9eb7c6.tar.gz box64-0692d4f3f25e43f82f8ecf7a3d575d47ca9eb7c6.zip | |
Added 66 0F 2E/2F opcodes
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/x64run660f.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 6dfa4485..9b48405d 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -43,6 +43,25 @@ int Run660F(x64emu_t *emu, rex_t rex) GETED(0); break; + case 0x2E: /* UCOMISD Gx, Ex */ + // no special check... + case 0x2F: /* COMISD Gx, Ex */ + RESET_FLAGS(emu); + nextop = F8; + GETEX(0); + GETGX; + if(isnan(GX->d[0]) || isnan(EX->d[0])) { + SET_FLAG(F_ZF); SET_FLAG(F_PF); SET_FLAG(F_CF); + } else if(isgreater(GX->d[0], EX->d[0])) { + CLEAR_FLAG(F_ZF); CLEAR_FLAG(F_PF); CLEAR_FLAG(F_CF); + } else if(isless(GX->d[0], EX->d[0])) { + CLEAR_FLAG(F_ZF); CLEAR_FLAG(F_PF); SET_FLAG(F_CF); + } else { + SET_FLAG(F_ZF); CLEAR_FLAG(F_PF); CLEAR_FLAG(F_CF); + } + CLEAR_FLAG(F_OF); CLEAR_FLAG(F_AF); CLEAR_FLAG(F_SF); + break; + case 0x62: /* PUNPCKLDQ Gx,Ex */ nextop = F8; GETEX(0); |