diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-22 20:52:04 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-22 20:52:04 +0100 |
| commit | bea68ddbfaf0205ee0a9be53d3fffb000c3a4188 (patch) | |
| tree | 8e948a0fa6947bdfb1c9f9c7c61d16256c20d014 /src | |
| parent | fa039a1320ca895ef2ccdef9b9a795c01c5b440a (diff) | |
| download | box64-bea68ddbfaf0205ee0a9be53d3fffb000c3a4188.tar.gz box64-bea68ddbfaf0205ee0a9be53d3fffb000c3a4188.zip | |
[DYNAREC] Added 66 0F 5A opcodes
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/arm64_emitter.h | 4 | ||||
| -rwxr-xr-x | src/dynarec/dynarec_arm64_660f.c | 8 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/dynarec/arm64_emitter.h b/src/dynarec/arm64_emitter.h index 8bef590d..d67361e5 100755 --- a/src/dynarec/arm64_emitter.h +++ b/src/dynarec/arm64_emitter.h @@ -860,7 +860,7 @@ #define FCVT_S_D(Sd, Dn) EMIT(FCVT_precision(0b01, 0b00, Dn, Sd)) #define FCVTXN_gen(Q, sz, Rn, Rd) ((Q)<<30 | 1<<29 | 0b01110<<24 | (sz)<<22 | 0b10000<<17 | 0b10110<<12 | 0b10<<10 | (Rn)<<5 | (Rd)) -// Convert Vn from 2*Double to lower Vd as 2*float +// Convert Vn from 2*Double to lower Vd as 2*float and clears the upper half #define FCVTXN(Vd, Vn) EMIT(FCVTXN_gen(0, 1, Vn, Vd)) // Convert Vn from 2*Double to higher Vd as 2*float #define FCVTXN2(Vd, Vn) EMIT(FCVTXN_gen(1, 1, Vn, Vd)) @@ -868,7 +868,7 @@ #define FCVTL_gen(Q, sz, Rn, Rd) ((Q)<<30 | 0<<29 | 0b01110<<24 | (sz)<<22 | 0b10000<<17 | 0b10111<<12 | 0b10<<10 | (Rn)<<5 | (Rd)) // Convert lower Vn from 2*float to Vd as 2*double #define FCVTL(Vd, Vn) EMIT(FCVTL_gen(0, 1, Vn, Vd)) -// Convert lower Vn from 2*float to Vd as 2*double +// Convert higher Vn from 2*float to Vd as 2*double #define FCVTL2(Vd, Vn) EMIT(FCVTL_gen(1, 1, Vn, Vd)) #define SCVTF_scalar(sf, type, rmode, opcode, Rn, Rd) ((sf)<<31 | 0b11110<<24 | (type)<<22 | 1<<21 | (rmode)<<19 | (opcode)<<16 | (Rn)<<5 | (Rd)) diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c index 5d2c285d..3d73f8fa 100755 --- a/src/dynarec/dynarec_arm64_660f.c +++ b/src/dynarec/dynarec_arm64_660f.c @@ -142,6 +142,14 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n FCOMI(x1, x2); break; + case 0x5A: + INST_NAME("CVTPD2PS Gx, Ex"); + nextop = F8; + GETGX(v0); + GETEX(v1, 0); + FCVTXN(v0, v1); + break; + #define GO(GETFLAGS, NO, YES, F) \ READFLAGS(F); \ GETFLAGS; \ |