diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-02-14 13:10:32 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-14 13:10:32 +0100 |
| commit | 78b51bc3676e6fc50644d618dbb5951b161247e5 (patch) | |
| tree | 2a54bfb3886140e743b116890bf9e4176238e08f /src | |
| parent | 97857d55a02c41ab3b34f9c811ebd7b82f9a1894 (diff) | |
| parent | 55bc85365948ab70f62b4189ed9a5a64addf8e21 (diff) | |
| download | box64-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-x | src/dynarec/dynarec_arm64_f20f.c | 2 | ||||
| -rwxr-xr-x | src/dynarec/dynarec_arm64_helper.h | 12 |
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; \ |