From 2c903dcb676e5d7d1e03a9e9810c85bf8d141e1a Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sat, 18 Mar 2023 09:23:26 +0000 Subject: [RV64_DYNAREC] Added 0F BE MOVSX opcode --- src/dynarec/rv64/dynarec_rv64_0f.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/dynarec/rv64/dynarec_rv64_0f.c b/src/dynarec/rv64/dynarec_rv64_0f.c index 51e2784a..f2c684ab 100644 --- a/src/dynarec/rv64/dynarec_rv64_0f.c +++ b/src/dynarec/rv64/dynarec_rv64_0f.c @@ -347,6 +347,30 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni } break; + case 0xBE: + INST_NAME("MOVSX Gd, Eb"); + nextop = F8; + GETGD; + if(MODREG) { + if(rex.rex) { + wback = xRAX+(nextop&7)+(rex.b<<3); + wb2 = 0; + } else { + wback = (nextop&7); + wb2 = (wback>>2)*8; + wback = xRAX+(wback&3); + } + SLLI(gd, wback, 56-wb2); + SRAI(gd, gd, 56); + } else { + SMREAD(); + addr = geted(dyn, addr, ninst, nextop, &ed, x3, x1, &fixedaddress, rex, NULL, 1, 0); + LB(gd, ed, fixedaddress); + } + if(!rex.w) + ZEROUP(gd); + break; + default: DEFAULT; } -- cgit 1.4.1