From 84b0e2f113a36fb364a7389eb03b08d99d61f3d1 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Thu, 4 Jul 2024 18:39:57 +0800 Subject: [LA64_DYNAREC] Fixed F2 0F 70 PSHUFLW opcode (#1634) --- src/dynarec/la64/dynarec_la64_f20f.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/dynarec/la64/dynarec_la64_f20f.c b/src/dynarec/la64/dynarec_la64_f20f.c index 133b8a2b..ab6bcc1f 100644 --- a/src/dynarec/la64/dynarec_la64_f20f.c +++ b/src/dynarec/la64/dynarec_la64_f20f.c @@ -279,7 +279,14 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int GETEX(v1, 0, 1); GETGX(v0, 1); u8 = F8; - VSHUF4I_H(v0, v1, u8); + if (v0 != v1) { + VSHUF4I_H(v0, v1, u8); + VEXTRINS_D(v0, v1, 0x11); // v0[127:64] = v1[127:64] + } else { + q0 = fpu_get_scratch(dyn); + VSHUF4I_H(q0, v1, u8); + VEXTRINS_D(v0, q0, 0x0); // v0[63:0] = q0[63:0] + } break; case 0xC2: INST_NAME("CMPSD Gx, Ex, Ib"); -- cgit 1.4.1