diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_0f.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_0f.c b/src/dynarec/rv64/dynarec_rv64_0f.c index ec2b7ae9..e09e5347 100644 --- a/src/dynarec/rv64/dynarec_rv64_0f.c +++ b/src/dynarec/rv64/dynarec_rv64_0f.c @@ -1360,6 +1360,15 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni // 32bits imul UFLAG_IF { + SLLI(gd, gd, 32); + SRAI(gd, gd, 32); + if(MODREG) { + SLLI(x1, ed, 32); + ed = x1; + } else { + SLLI(ed, ed, 32); + } + SRAI(ed, ed, 32); MUL(gd, gd, ed); UFLAG_RES(gd); SRLI(x3, gd, 32); |