diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_emit_math.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_emit_math.c b/src/dynarec/rv64/dynarec_rv64_emit_math.c index f6a7d88b..c076f2d3 100644 --- a/src/dynarec/rv64/dynarec_rv64_emit_math.c +++ b/src/dynarec/rv64/dynarec_rv64_emit_math.c @@ -1226,7 +1226,8 @@ void emit_neg16(dynarec_rv64_t* dyn, int ninst, int s1, int s2, int s3) } } IFX(X_SF) { - ANDI(s3, s1, 1 << F_SF); // 1<<F_SF is sign bit, so just mask + SRLI(s3, s1, 15-F_SF); // put sign bit in place + ANDI(s3, s3, 1 << F_SF); // 1<<F_SF is sign bit, so just mask OR(xFlags, xFlags, s3); } IFX(X_PF) { |