diff options
Diffstat (limited to 'src/dynarec/rv64/dynarec_rv64_0f.c')
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_0f.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_0f.c b/src/dynarec/rv64/dynarec_rv64_0f.c index 08ad5e7a..b4139ecf 100644 --- a/src/dynarec/rv64/dynarec_rv64_0f.c +++ b/src/dynarec/rv64/dynarec_rv64_0f.c @@ -939,22 +939,12 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni if (MODREG) { \ ed = TO_NAT((nextop & 7) + (rex.b << 3)); \ if (dyn->insts[ninst].nat_flags_fusion) { \ - NATIVEJUMP(NATNO, (rex.w || rv64_xtheadbb || rv64_zba) ? 8 : 12); \ + NATIVEJUMP(NATNO, 8); \ } else { \ - B##NO(tmp1, (rex.w || rv64_xtheadbb || rv64_zba) ? 8 : 12); \ - } \ - if (rex.w) \ - MV(gd, ed); \ - else { \ - if (rv64_zba) { \ - ZEXTW(gd, ed); \ - } else if (rv64_xtheadbb) { \ - TH_EXTU(gd, ed, 31, 0); \ - } else { \ - SLLI(gd, ed, 32); \ - SRLI(gd, gd, 32); \ - } \ + B##NO(tmp1, 8); \ } \ + MV(gd, ed); \ + if (!rex.w) ZEROUP(gd); \ } else { \ addr = geted(dyn, addr, ninst, nextop, &ed, tmp2, tmp3, &fixedaddress, rex, NULL, 1, 0); \ if (dyn->insts[ninst].nat_flags_fusion) { \ |