about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-04-02 14:27:49 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-04-02 14:27:49 +0200
commite2a7dd0f1760b0567067d20e55021746b57b2a37 (patch)
tree681ab08423938c021493d2f0cd6de6416d62661c /src
parentf781537adbe4461a72ac61bf24ace40b63c0d1c7 (diff)
downloadbox64-e2a7dd0f1760b0567067d20e55021746b57b2a37.tar.gz
box64-e2a7dd0f1760b0567067d20e55021746b57b2a37.zip
Added 0F E7 opcode ([DYNAREC] too)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_0f.c13
-rw-r--r--src/emu/x64run0f.c10
2 files changed, 22 insertions, 1 deletions
diff --git a/src/dynarec/dynarec_arm64_0f.c b/src/dynarec/dynarec_arm64_0f.c
index c2f558f1..58380dfe 100755
--- a/src/dynarec/dynarec_arm64_0f.c
+++ b/src/dynarec/dynarec_arm64_0f.c
@@ -1275,6 +1275,19 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             VMUL_16(q0, q0, q1);

             break;

 

+        case 0xE7:

+            INST_NAME("MOVNTQ Em, Gm"); // Non Temporal par not handled for now

+            nextop = F8;

+            gd = (nextop&0x38)>>3;

+            if((nextop&0xC0)==0xC0) {

+                DEFAULT;

+            } else {

+                v0 = mmx_get_reg(dyn, ninst, x1, gd);

+                addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff<<3, 7, rex, 0, 0);

+                VST1_64(v0, ed, fixedaddress);

+            }

+            break;

+

         case 0xE5:

             INST_NAME("PMULHW Gm,Em");

             nextop = F8;

diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c
index add4ba97..3aeb8c9a 100644
--- a/src/emu/x64run0f.c
+++ b/src/emu/x64run0f.c
@@ -22,6 +22,7 @@
 #include "bridge.h"

 #include "signals.h"

 #ifdef DYNAREC

+#include "custommem.h"

 #include "../dynarec/arm64_lock.h"

 #endif

 

@@ -1360,7 +1361,14 @@ int Run0F(x64emu_t *emu, rex_t rex)
                 GM->sw[i] = (tmp32s>>16)&0xffff;

             }

             break;

-

+        case 0xE7:                   /* MOVNTQ Em,Gm */

+            nextop = F8;

+            if((nextop&0xC0)==0xC0)

+                return 1;

+            GETEM(0);

+            GETGM;

+            EM->q = GM->q;

+            break;

         case 0xE8:                   /* PSUBSB Gm,Em */

             nextop = F8;

             GETEM(0);