about summary refs log tree commit diff stats
path: root/src/dynarec/rv64/dynarec_rv64_0f.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynarec/rv64/dynarec_rv64_0f.c')
-rw-r--r--src/dynarec/rv64/dynarec_rv64_0f.c18
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) {                                                \