From 5cd201241b9769bd8583f0eca9d9469e0ab9ca99 Mon Sep 17 00:00:00 2001 From: phorcys Date: Tue, 15 Apr 2025 15:32:19 +0800 Subject: [PATCH] [LA64_DYNAREC] Add mmx cmp ops. (#2533) --- src/dynarec/la64/dynarec_la64_0f.c | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/dynarec/la64/dynarec_la64_0f.c b/src/dynarec/la64/dynarec_la64_0f.c index 15588efaf..995e87f34 100644 --- a/src/dynarec/la64/dynarec_la64_0f.c +++ b/src/dynarec/la64/dynarec_la64_0f.c @@ -692,6 +692,27 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni VFMAX_S(v0, v0, v1); } break; + case 0x64: + INST_NAME("PCMPGTB Gm,Em"); + nextop = F8; + GETGM(v0); + GETEM(v1, 0); + VSLT_B(v0, v1, v0); + break; + case 0x65: + INST_NAME("PCMPGTW Gm,Em"); + nextop = F8; + GETGM(v0); + GETEM(v1, 0); + VSLT_H(v0, v1, v0); + break; + case 0x66: + INST_NAME("PCMPGTD Gm,Em"); + nextop = F8; + GETGM(v0); + GETEM(v1, 0); + VSLT_W(v0, v1, v0); + break; case 0x6E: INST_NAME("MOVD Gm, Ed"); nextop = F8; @@ -856,6 +877,26 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni default: DEFAULT; } + case 0x74: + INST_NAME("PCMPEQB Gm,Em"); + nextop = F8; + GETGM(d0); + GETEM(d1, 0); + VSEQ_B(d0, d0, d1); + break; + case 0x75: + INST_NAME("PCMPEQW Gm,Em"); + nextop = F8; + GETGM(v0); + GETEM(q0, 0); + VSEQ_H(v0, v0, q0); + break; + case 0x76: + INST_NAME("PCMPEQD Gm,Em"); + nextop = F8; + GETGM(v0); + GETEM(v1, 0); + VSEQ_W(v0, v0, v1); break; case 0x77: INST_NAME("EMMS");