From 323783bf49909bb4781a9979074d51b2d59672fd Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 1 Nov 2021 13:20:32 +0100 Subject: [DYNAREC] Fixed right shift emmiter with const = 1 (help wine 6.17, and probably many other stuffs) --- src/dynarec/dynarec_arm64_emit_shift.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') 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); -- cgit 1.4.1