about summary refs log tree commit diff stats
path: root/src/emu/x64run660f.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-04-23 18:20:38 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-04-23 18:20:38 +0200
commit223de50ec94de8b0bf0bce39fcd235c74992d135 (patch)
tree7c26ae5d7e695ed49b336b8dfff05a417d54603d /src/emu/x64run660f.c
parent5cfad2216584fae41c1575ca4034e2d24f3b0be2 (diff)
downloadbox64-223de50ec94de8b0bf0bce39fcd235c74992d135.tar.gz
box64-223de50ec94de8b0bf0bce39fcd235c74992d135.zip
[INTERP] Fex fixes and small cosmetic changes to some partial (V)MOV opcodes
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: