about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-05-27 10:02:33 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-05-27 10:02:33 +0200
commitfc2d50c7d30eff7286cfad69b037e73edfaae024 (patch)
tree266cac3fbb25653e061a5fdf696244b85b5c20d1 /src
parentaaed0364bdef43b6c83cfe647a341b84227c742e (diff)
downloadbox64-fc2d50c7d30eff7286cfad69b037e73edfaae024.tar.gz
box64-fc2d50c7d30eff7286cfad69b037e73edfaae024.zip
[INTERPRETER] Added avx (F3 0F) 7F opcode
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64runavxf30f.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/emu/x64runavxf30f.c b/src/emu/x64runavxf30f.c
index bfee9b13..0f4c0205 100644
--- a/src/emu/x64runavxf30f.c
+++ b/src/emu/x64runavxf30f.c
@@ -58,19 +58,29 @@ uintptr_t RunAVX_F30F(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step)
 
     switch(opcode) {
 
-        case 0x6F:  // VMOVDQU
+        case 0x6F:  // VMOVDQU Gx, Ex
             nextop = F8;
             GETEX(0);
             GETGX;
             memcpy(GX, EX, 16);    // unaligned...
+            GETGY;
+            if(vex.l) {
+                GETEY;
+                memcpy(GY, EY, 16);
+            } else
+                GY->q[0] = GY->q[1] = 0;
+            break;
+
+        case 0x7F:  /* VMOVDQU Ex, Gx */
+            nextop = F8;
+            GETEX(0);
+            GETGX;
+            memcpy(EX, GX, 16);    // unaligned...
             if(vex.l) {
                 GETGY;
                 GETEY;
-                if(MODREG)
-                    memcpy(GY, EY, 16);
-                else
-                    memset(GY, 0, 16);
-            }
+                memcpy(EY, GY, 16);
+            } // no ymm raz here it seems
             break;
 
         default: