diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-03-25 20:23:00 +0000 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-03-25 20:23:07 +0000 |
| commit | 567d48f813d383fd8a7c69878c9da4b7276aa1fd (patch) | |
| tree | 1db3be3c5cb990d5d8410b8d7f0f2dbcdb74298f /src | |
| parent | 0c3d350865b49af33a2a78167dc5365ef0dd1739 (diff) | |
| download | box64-567d48f813d383fd8a7c69878c9da4b7276aa1fd.tar.gz box64-567d48f813d383fd8a7c69878c9da4b7276aa1fd.zip | |
[RV64_DYNAREC] Some more fixes with sign extension issues
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_emit_tests.c | 2 | ||||
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_helper.h | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_emit_tests.c b/src/dynarec/rv64/dynarec_rv64_emit_tests.c index 0abb5be2..16a580da 100644 --- a/src/dynarec/rv64/dynarec_rv64_emit_tests.c +++ b/src/dynarec/rv64/dynarec_rv64_emit_tests.c @@ -323,7 +323,7 @@ void emit_test32c(dynarec_rv64_t* dyn, int ninst, rex_t rex, int s1, int64_t c, if(c>=-2048 && c<=2047) ANDI(s3, s1, c); else { - MOV64x(s3, c); + MOV64xw(s3, c); AND(s3, s1, s3); // res = s1 & s2 } diff --git a/src/dynarec/rv64/dynarec_rv64_helper.h b/src/dynarec/rv64/dynarec_rv64_helper.h index 8801c88b..223fc5a3 100644 --- a/src/dynarec/rv64/dynarec_rv64_helper.h +++ b/src/dynarec/rv64/dynarec_rv64_helper.h @@ -453,6 +453,7 @@ ANDI(scratch1, scratch2, 0x80); \ } else { \ SRLI(scratch1, scratch2, (width)-1); \ + if(width!=64) ANDI(scratch1, scratch1, 1); \ } \ BEQZ(scratch1, 8); \ ORI(xFlags, xFlags, 1 << F_CF); \ |