about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <seebastien.chev@gmail.com>2023-08-11 16:51:18 +0200
committerptitSeb <seebastien.chev@gmail.com>2023-08-11 16:51:18 +0200
commitf86c856e3ba53a0741d7d5f97f60c1a785547fe7 (patch)
tree7cecde0f4784f9b6fd3602419b9b084697abf131 /src
parent6bb674420a059b9537256c6475b156911de65929 (diff)
downloadbox64-f86c856e3ba53a0741d7d5f97f60c1a785547fe7.tar.gz
box64-f86c856e3ba53a0741d7d5f97f60c1a785547fe7.zip
[32bits] Added 3F opcode ([ARM64_DYNAREC] too)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_00.c13
-rw-r--r--src/emu/x64run.c9
2 files changed, 22 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c
index c760d9d4..7bf9511f 100644
--- a/src/dynarec/arm64/dynarec_arm64_00.c
+++ b/src/dynarec/arm64/dynarec_arm64_00.c
@@ -526,6 +526,19 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 emit_cmp32_0(dyn, ninst, rex, xRAX, x3, x4);
             break;
 
+        case 0x3F:
+            if(rex.is32bits) {
+                INST_NAME("AAS");
+                MESSAGE(LOG_DUMP, "Need Optimization AAS\n");
+                READFLAGS(X_AF);
+                SETFLAGS(X_AF|X_CF|X_PF|X_SF|X_ZF, SF_SET);
+                UXTHw(x1, xRAX);
+                CALL_(aas16, x1, 0);
+                BFIx(xRAX, x1, 0, 16);
+            } else {
+                DEFAULT;
+            }
+            break;
         case 0x40:
         case 0x41:
         case 0x42:
diff --git a/src/emu/x64run.c b/src/emu/x64run.c
index c278bfb2..f2cd686d 100644
--- a/src/emu/x64run.c
+++ b/src/emu/x64run.c
@@ -271,6 +271,15 @@ x64emurun:
             else
                 cmp32(emu, R_EAX, F32);
             break;
+
+        case 0x3F:                  /* AAS */
+            if(rex.is32bits) {
+                R_AX = aas16(emu, R_AX);
+            } else {
+                unimp = 1;
+                goto fini;
+            }
+            break;
         case 0x40:
         case 0x41:
         case 0x42: