about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-07-16 20:04:20 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-07-16 20:04:20 +0200
commitef2f960d4ba7557b2baa26cd65b012b9a3363cbd (patch)
tree680ae1aa0542238a7e02bc091bcba7053753c473 /src
parente829cad612346557b7f0f7f75c8fbf966a65c9fa (diff)
downloadbox64-ef2f960d4ba7557b2baa26cd65b012b9a3363cbd.tar.gz
box64-ef2f960d4ba7557b2baa26cd65b012b9a3363cbd.zip
[ARM64_DYNAREC] Added 64/65 F3 0F 7F opcode
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_64.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_64.c b/src/dynarec/arm64/dynarec_arm64_64.c
index c6587d13..494accda 100644
--- a/src/dynarec/arm64/dynarec_arm64_64.c
+++ b/src/dynarec/arm64/dynarec_arm64_64.c
@@ -272,6 +272,27 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     }
                     break;
 
+                case 0x7F:
+                    switch(rep) {
+                        case 2:
+                            INST_NAME("MOVDQU Ex,Gx");
+                            nextop = F8;
+                            GETGX(v0, 0);
+                            if(MODREG) {
+                                v1 = sse_get_reg_empty(dyn, ninst, x1, (nextop&7) + (rex.b<<3));
+                                VMOVQ(v1, v0);
+                            } else {
+                                grab_segdata(dyn, addr, ninst, x4, seg, (MODREG));
+                                addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<4, 15, rex, NULL, 0, 0);
+                                ADDz_REG(x4, x4, ed);
+                                VST128(v0, x4, fixedaddress);
+                                SMWRITE2();
+                            }
+                            break;
+                        default:
+                            DEFAULT;
+                    }
+                    break;
 
                 case 0xAF:
                     switch(rep) {