From cbf4e37bbab3a4b6595d66037163fee316a01995 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Wed, 31 Mar 2021 16:58:29 +0200 Subject: [DYNAREC] Added 0F 38 04 opcode --- src/dynarec/dynarec_arm64_0f.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/dynarec/dynarec_arm64_0f.c b/src/dynarec/dynarec_arm64_0f.c index c528e99e..41ecf035 100755 --- a/src/dynarec/dynarec_arm64_0f.c +++ b/src/dynarec/dynarec_arm64_0f.c @@ -281,6 +281,30 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin FCOMI(x1, x2); break; + case 0x38: + //SSE3 + nextop=F8; + switch(nextop) { + + case 0x04: + INST_NAME("PMADDUBSW Gm,Em"); + nextop = F8; + GETGM(q0); + GETEM(q1, 0); + v0 = fpu_get_scratch(dyn); + v1 = fpu_get_scratch(dyn); + UXTL_8(v0, q0); // this is unsigned, so 0 extended + SXTL_8(v1, q1); // this is signed + VMULQ_16(v0, v0, v1); + SADDLPQ_16(v1, v0); + SQXTN_16(q0, v1); + break; + + default: + DEFAULT; + } + break; + #define GO(GETFLAGS, NO, YES, F) \ READFLAGS(F); \ GETFLAGS; \ -- cgit 1.4.1