From 24b16082e4a89291f06dda574024f9011f26e924 Mon Sep 17 00:00:00 2001 From: zhaixiang Date: Tue, 24 Dec 2024 18:53:19 +0800 Subject: [PATCH] [LA64_DYNAREC] Added MOVLPD and MOVHPD opcodes --- src/dynarec/la64/dynarec_la64_660f.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/dynarec/la64/dynarec_la64_660f.c b/src/dynarec/la64/dynarec_la64_660f.c index 0380f173e..2c7507e45 100644 --- a/src/dynarec/la64/dynarec_la64_660f.c +++ b/src/dynarec/la64/dynarec_la64_660f.c @@ -102,6 +102,18 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int FLD_D(v1, wback, fixedaddress); VEXTRINS_D(v0, v1, 0); break; + case 0x13: + INST_NAME("MOVLPD Eq, Gx"); + nextop = F8; + GETGX(v0, 0); + if (MODREG) { + DEFAULT; + return addr; + } + addr = geted(dyn, addr, ninst, nextop, &ed, x2, x3, &fixedaddress, rex, NULL, 1, 0); + FST_D(v0, ed, fixedaddress); + SMWRITE2(); + break; case 0x14: INST_NAME("UNPCKLPD Gx, Ex"); nextop = F8; @@ -146,6 +158,18 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int FLD_D(v1, ed, fixedaddress); VEXTRINS_D(v0, v1, 0x10); break; + case 0x17: + INST_NAME("MOVHPD Eq, Gx"); + nextop = F8; + GETGX(v0, 0); + if (MODREG) { + DEFAULT; + return addr; + } + addr = geted(dyn, addr, ninst, nextop, &ed, x2, x3, &fixedaddress, rex, NULL, 1, 0); + FST_D(v0, ed, fixedaddress); + SMWRITE2(); + break; case 0x1F: INST_NAME("NOP (multibyte)"); nextop = F8;