diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/arm64_emitter.h | 2 | ||||
| -rwxr-xr-x | src/dynarec/dynarec_arm64_f30f.c | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/dynarec/arm64_emitter.h b/src/dynarec/arm64_emitter.h index 7f78659b..d61d299c 100755 --- a/src/dynarec/arm64_emitter.h +++ b/src/dynarec/arm64_emitter.h @@ -737,8 +737,10 @@ // Floating-point Convert to Signed integer, rounding toward Zero #define FCVTZSwS(Wd, Sn) EMIT(FCVT_scalar(0, 0b00, 0b11, 0b000, Sn, Wd)) #define FCVTZSxS(Xd, Sn) EMIT(FCVT_scalar(1, 0b00, 0b11, 0b000, Sn, Xd)) +#define FCVTZSxwS(Xd, Sn) EMIT(FCVT_scalar(rex.w, 0b00, 0b11, 0b000, Sn, Xd)) #define FCVTZSwD(Wd, Dn) EMIT(FCVT_scalar(0, 0b01, 0b11, 0b000, Dn, Wd)) #define FCVTZSxD(Xd, Dn) EMIT(FCVT_scalar(1, 0b01, 0b11, 0b000, Dn, Xd)) +#define FCVTZSxwD(Xd, Dn) EMIT(FCVT_scalar(rex.w, 0b01, 0b11, 0b000, Dn, Xd)) // Floating-point Convert to Unsigned integer, rounding toward Zero #define FCVTZUwS(Wd, Sn) EMIT(FCVT_scalar(0, 0b00, 0b11, 0b001, Sn, Wd)) #define FCVTZUxS(Xd, Sn) EMIT(FCVT_scalar(1, 0b00, 0b11, 0b001, Sn, Xd)) diff --git a/src/dynarec/dynarec_arm64_f30f.c b/src/dynarec/dynarec_arm64_f30f.c index 16937842..d94bd822 100755 --- a/src/dynarec/dynarec_arm64_f30f.c +++ b/src/dynarec/dynarec_arm64_f30f.c @@ -112,6 +112,14 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n VMOVeS(v0, 0, d1, 0); break; + case 0x2C: + INST_NAME("CVTTSS2SI Gd, Ex"); + nextop = F8; + GETGD; + GETEX(d0, 0); + FCVTZSxwS(gd, d0); + break; + case 0x51: INST_NAME("SQRTSS Gx, Ex"); nextop = F8; |