about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-02-14 13:10:32 +0100
committerGitHub <noreply@github.com>2022-02-14 13:10:32 +0100
commit78b51bc3676e6fc50644d618dbb5951b161247e5 (patch)
tree2a54bfb3886140e743b116890bf9e4176238e08f /src
parent97857d55a02c41ab3b34f9c811ebd7b82f9a1894 (diff)
parent55bc85365948ab70f62b4189ed9a5a64addf8e21 (diff)
downloadbox64-78b51bc3676e6fc50644d618dbb5951b161247e5.tar.gz
box64-78b51bc3676e6fc50644d618dbb5951b161247e5.zip
Merge pull request #235 from rajdakin/opcode_fix
Fixed the CVTPD2DQ dynarec opcode
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_f20f.c2
-rwxr-xr-xsrc/dynarec/dynarec_arm64_helper.h12
2 files changed, 9 insertions, 5 deletions
diff --git a/src/dynarec/dynarec_arm64_f20f.c b/src/dynarec/dynarec_arm64_f20f.c
index ea149dc2..2c2e5c63 100755
--- a/src/dynarec/dynarec_arm64_f20f.c
+++ b/src/dynarec/dynarec_arm64_f20f.c
@@ -339,7 +339,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             GETEX(v1, 0);

             GETGX_empty(v0);

             u8 = sse_setround(dyn, ninst, x1, x2, x3);

-            FRINTXD(v0, v1);

+            VFRINTIDQ(v0, v1);

             x87_restoreround(dyn, ninst, u8);

             VFCVTNSQD(v0, v0);  // convert double -> int64

             SQXTN_32(v0, v0);   // convert int64 -> int32 with saturation in lower part, RaZ high part

diff --git a/src/dynarec/dynarec_arm64_helper.h b/src/dynarec/dynarec_arm64_helper.h
index c4788ad2..d15902f4 100755
--- a/src/dynarec/dynarec_arm64_helper.h
+++ b/src/dynarec/dynarec_arm64_helper.h
@@ -373,6 +373,10 @@
 #define B_MARK3(cond)               \
     j64 = GETMARK3-(dyn->arm_size); \
     Bcond(cond, j64)
+// Test bit N of A and branch to MARK3 if not set
+#define TBZ_MARK2(A, N)            \
+    j64 = GETMARK2-(dyn->arm_size); \
+    TBZ(A, N, j64)
 // Branch to MARK3 unconditionnal (use j64)
 #define B_MARK3_nocond              \
     j64 = GETMARK3-(dyn->arm_size); \
@@ -385,14 +389,14 @@
 #define CBZx_MARK3(reg)             \
     j64 = GETMARK3-(dyn->arm_size); \
     CBZx(reg, j64)
-// Test bit N of A and branch to MARK3 if set
-#define TBNZ_MARK3(A, N)            \
-    j64 = GETMARK3-(dyn->arm_size); \
-    TBNZ(A, N, j64)
 // Test bit N of A and branch to MARK3 if not set
 #define TBZ_MARK3(A, N)             \
     j64 = GETMARK3-(dyn->arm_size); \
     TBZ(A, N, j64)
+// Test bit N of A and branch to MARK3 if set
+#define TBNZ_MARK3(A, N)            \
+    j64 = GETMARK3-(dyn->arm_size); \
+    TBNZ(A, N, j64)
 // Branch to next instruction if cond (use j64)
 #define B_NEXT(cond)     \
     j64 = (dyn->insts)?(dyn->insts[ninst].epilog-(dyn->arm_size)):0; \