From 76115b30b82d53700b8dcc8645a509b4a11c0539 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 11 Apr 2021 17:05:15 +0200 Subject: [DYNAREC] Added 66 0F E1/F2 opcode --- src/dynarec/dynarec_arm64_660f.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c index 2419fe47..d2e89f00 100755 --- a/src/dynarec/dynarec_arm64_660f.c +++ b/src/dynarec/dynarec_arm64_660f.c @@ -1140,6 +1140,21 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n URHADDQ_8(v0, v0, v1); break; + case 0xE1: + INST_NAME("PSRAW Gx,Ex"); + nextop = F8; + GETGX(q0); + GETEX(q1, 0); + v0 = fpu_get_scratch(dyn); + VMOVeD(v0, 0, q1, 0); + VMOVeD(v0, 1, q1, 0); + SQXTN_32(v0, v0); // 2*q1 in 32bits now + NEG_32(v0, v0); // because we want SHR and not SHL + VMOVeD(v0, 1, v0, 0); + SQXTN_16(v0, v0); // 4*q1 in 32bits now + VMOVeD(v0, 1, v0, 0); + SSHLQ_16(q0, q0, v0); + break; case 0xE2: INST_NAME("PSRAD Gx,Ex"); nextop = F8; @@ -1262,6 +1277,19 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n } break; + case 0xF2: + INST_NAME("PSLLD Gx,Ex"); + nextop = F8; + GETGX(q0); + GETEX(q1, 0); + v0 = fpu_get_scratch(dyn); + VMOVeD(v0, 0, q1, 0); + VMOVeD(v0, 1, q1, 0); + SQXTN_32(v0, v0); // 2*q1 in 32bits now + VMOVeD(v0, 1, v0, 0); + SSHLQ_32(q0, q0, v0); + break; + case 0xF4: INST_NAME("PMULUDQ Gx,Ex"); nextop = F8; -- cgit 1.4.1