diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-11-01 13:20:32 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-11-01 13:20:32 +0100 |
| commit | 323783bf49909bb4781a9979074d51b2d59672fd (patch) | |
| tree | 9e291266eecb8b46fd5e467afbbfba0eae219f6a /src | |
| parent | fbd9604dc12f0a0d621a3b3b67193d607a359f6e (diff) | |
| download | box64-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-x | src/dynarec/dynarec_arm64_emit_shift.c | 6 |
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); |