about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run660f.c14
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;