about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-09-04 21:04:20 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-09-04 21:04:20 +0200
commit6bc2abae3b71ad1aea750fbfb433310f6e45bbac (patch)
tree96002e6fafe264f4c5be7e85040379496f42201a /src
parent6c7f306baa775725a624d05f00ee3690d205390e (diff)
downloadbox64-6bc2abae3b71ad1aea750fbfb433310f6e45bbac.tar.gz
box64-6bc2abae3b71ad1aea750fbfb433310f6e45bbac.zip
[ARM64_DYNAREC] Added 67 66 0F 7E opcode
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_67.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_67.c b/src/dynarec/arm64/dynarec_arm64_67.c
index b38f9788..814a32d9 100644
--- a/src/dynarec/arm64/dynarec_arm64_67.c
+++ b/src/dynarec/arm64/dynarec_arm64_67.c
@@ -711,6 +711,31 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 0x0F:

                     nextop = F8;

                     switch(nextop) {

+                        case 0x7E:

+                            INST_NAME("MOVD Ed,Gx");

+                            nextop = F8;

+                            GETGX(v0, 0);

+                            if(rex.w) {

+                                if(MODREG) {

+                                    ed = xRAX + (nextop&7) + (rex.b<<3);

+                                    VMOVQDto(ed, v0, 0);

+                                } else {

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

+                                    VST64(v0, ed, fixedaddress);

+                                    SMWRITE2();

+                                }

+                            } else {

+                                if(MODREG) {

+                                    ed = xRAX + (nextop&7) + (rex.b<<3);

+                                    VMOVSto(ed, v0, 0);

+                                } else {

+                                    addr = geted32(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);

+                                    VST32(v0, ed, fixedaddress);

+                                    SMWRITE2();

+                                }

+                            }

+                            break;

+

                         case 0xD6:

                             INST_NAME("MOVQ Ex, Gx");

                             nextop = F8;