about summary refs log tree commit diff stats
path: root/src/emu/x64runavx0f.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/x64runavx0f.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/x64runavx0f.c')
-rw-r--r--src/emu/x64runavx0f.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/emu/x64runavx0f.c b/src/emu/x64runavx0f.c
index 5412a743..8509f270 100644
--- a/src/emu/x64runavx0f.c
+++ b/src/emu/x64runavx0f.c
@@ -105,9 +105,11 @@ uintptr_t RunAVX_0F(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step)
             break;
         case 0x13:                      /* VMOVLPS Ex, Gx */
             nextop = F8;
-            GETEX(0);
-            GETGX;
-            EX->q[0] = GX->q[0];
+            if(!MODREG) {
+                GETEX(0);
+                GETGX;
+                EX->q[0] = GX->q[0];
+            }
             break;
         case 0x14:  /* VUNPCKLPS Gx, Vx, Ex */
             nextop = F8;
@@ -155,7 +157,7 @@ uintptr_t RunAVX_0F(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step)
             if(MODREG) {                /* VMOVLHPS Gx, Vx, Ex */
                 GX->q[1] = EX->q[0];
             } else {
-                GX->q[1] = EX->q[0];    /* MOVHPS Gx,Ex */
+                GX->q[1] = EX->q[0];    /* VMOVHPS Gx, Vx, Ex */
             }
             GX->q[0] = VX->q[0];
             GY->u128 = 0;
@@ -165,6 +167,10 @@ uintptr_t RunAVX_0F(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step)
             GETEX(0);
             GETGX;
             EX->q[0] = GX->q[1];
+            if(MODREG) {
+                GETEY;
+                EY->u128 = 0;
+            }
             break;
 
         case 0x28:  /* VMOVAPS Gx, Ex */