From 1cb55b26335bf4efa551bf618900a456c3a30364 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 30 Aug 2021 22:38:38 +0200 Subject: Added 66 0F 3A 22 SSE4.x opcode ([DYNAREC] too) (for #106) --- src/dynarec/dynarec_arm64_660f.c | 10 ++++++++++ src/emu/x64run660f.c | 7 +++++++ 2 files changed, 17 insertions(+) (limited to 'src') diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c index f0a91740..b1049e96 100755 --- a/src/dynarec/dynarec_arm64_660f.c +++ b/src/dynarec/dynarec_arm64_660f.c @@ -525,6 +525,16 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n VEXTQ_8(q0, q1, q0, u8); } break; + + case 0x22: + INST_NAME("PINSRD Gx, ED, Ib"); + nextop = F8; + GETGX(q0); + GETED(1); + u8 = F8; + VMOVQSfrom(q0, (u8&3), ed); + break; + default: DEFAULT; } diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 676656b7..6d92cd5e 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -641,6 +641,13 @@ int Run660F(x64emu_t *emu, rex_t rex) if(tmp8u&(1<ud[i] = 0; break; + case 0x22: // PINSRD GX, ED, u8 + nextop = F8; + GETED(1); + GETGX; + tmp8u = F8; + GX->ud[tmp8u&0x3] = ED->dword[0]; + break; case 0xDF: // AESKEYGENASSIST Gx, Ex, u8 nextop = F8; -- cgit 1.4.1