diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-04-08 13:36:09 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-04-08 13:36:09 +0200 |
| commit | efdd052674cd50a96da33077760a40c0508506cd (patch) | |
| tree | d4e6b6e7957140b106e1de0753f2f595fae73cf9 | |
| parent | 9964a0d9e5b25bfe7e7a5773ef3da7c006a20c03 (diff) | |
| download | box64-efdd052674cd50a96da33077760a40c0508506cd.tar.gz box64-efdd052674cd50a96da33077760a40c0508506cd.zip | |
Added 66 0F 3A 41 opcode
| -rw-r--r-- | src/emu/x64run660f.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 28d04cd8..005de14b 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -60,6 +60,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) uint64_t tmp64u; int64_t tmp64s, i64[4]; float tmpf; + double tmpd; #ifndef NOALIGN int is_nan; #endif @@ -977,6 +978,19 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) for(int i=0; i<4; ++i) GX->f[i] = (tmp8u&(1<<i))?tmpf:0.0f; break; + case 0x41: /* DPPD Gx, Ex, Ib */ + nextop = F8; + GETEX(1); + GETGX; + tmp8u = F8; + tmpd = 0.0; + if(tmp8u&(1<<(4+0))) + tmpd += GX->d[0]*EX->d[0]; + if(tmp8u&(1<<(4+1))) + tmpd += GX->d[1]*EX->d[1]; + GX->d[0] = (tmp8u&(1<<(0)))?tmpd:0.0; + GX->d[1] = (tmp8u&(1<<(1)))?tmpd:0.0; + break; case 0x42: /* MPSADBW Gx, Ex, Ib */ nextop = F8; |