about summary refs log tree commit diff stats
path: root/src/emu/x64run660f.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/x64run660f.c')
-rw-r--r--src/emu/x64run660f.c32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c
index 0ccc466c..b16a276e 100644
--- a/src/emu/x64run660f.c
+++ b/src/emu/x64run660f.c
@@ -137,15 +137,19 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         break;

     case 0x12:                      /* MOVLPD Gx, Eq */

         nextop = F8;

-        GETE8(0);

-        GETGX;

-        GX->q[0] = ED->q[0];

+        if(!MODREG) {

+            GETE8(0);

+            GETGX;

+            GX->q[0] = ED->q[0];

+        }

         break;

     case 0x13:                      /* MOVLPD Eq, Gx */

         nextop = F8;

-        GETE8(0);

-        GETGX;

-        ED->q[0] = GX->q[0];

+        if(!MODREG) {

+            GETE8(0);

+            GETGX;

+            ED->q[0] = GX->q[0];

+        }

         break;

     case 0x14:                      /* UNPCKLPD Gx, Ex */

         nextop = F8;

@@ -162,15 +166,19 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         break;

     case 0x16:                      /* MOVHPD Gx, Ed */

         nextop = F8;

-        GETE8(0);

-        GETGX;

-        GX->q[1] = ED->q[0];

+        if(!MODREG) {

+            GETE8(0);

+            GETGX;

+            GX->q[1] = ED->q[0];

+        }

         break;

     case 0x17:                      /* MOVHPD Ed, Gx */

         nextop = F8;

-        GETE8(0);

-        GETGX;

-        ED->q[0] = GX->q[1];

+        if(!MODREG) {

+            GETE8(0);

+            GETGX;

+            ED->q[0] = GX->q[1];

+        }

         break;

 

     case 0x18: