about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-11-01 13:20:32 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-11-01 13:20:32 +0100
commit323783bf49909bb4781a9979074d51b2d59672fd (patch)
tree9e291266eecb8b46fd5e467afbbfba0eae219f6a /src
parentfbd9604dc12f0a0d621a3b3b67193d607a359f6e (diff)
downloadbox64-323783bf49909bb4781a9979074d51b2d59672fd.tar.gz
box64-323783bf49909bb4781a9979074d51b2d59672fd.zip
[DYNAREC] Fixed right shift emmiter with const = 1 (help wine 6.17, and probably many other stuffs)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_emit_shift.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/dynarec/dynarec_arm64_emit_shift.c b/src/dynarec/dynarec_arm64_emit_shift.c
index e8f3d376..4382794d 100755
--- a/src/dynarec/dynarec_arm64_emit_shift.c
+++ b/src/dynarec/dynarec_arm64_emit_shift.c
@@ -209,7 +209,7 @@ void emit_shr32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int32_t c, in
         if(c>1) {
             LSRxw(s3, s1, c-1);
         }
-        BFIw(xFlags, s3, 0, 1);
+        BFIw(xFlags, (c>1)?s3:s1, 0, 1);
     }
     LSRxw(s1, s1, c);
     IFX(X_PEND) {
@@ -257,7 +257,7 @@ void emit_sar32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int32_t c, in
         if(c>1) {
             ASRxw(s3, s1, c-1);
         }
-        BFIw(xFlags, s3, 0, 1);
+        BFIw(xFlags, (c>1)?s3:s1, 0, 1);
     }
     ASRxw(s1, s1, c);
     IFX(X_PEND) {
@@ -366,7 +366,7 @@ void emit_shrd32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int3
         if(c>1) {
             LSRxw(s3, s1, c-1);
         }
-        BFIw(xFlags, s3, 0, 1);
+        BFIw(xFlags, (c>1)?s3:s1, 0, 1);
     }
     LSRxw(s3, s1, c);
     ORRxw_REG_LSL(s1, s3, s2, (rex.w?64:32)-c);