From 707c12bf00dafdfd3899b1a6c36435dbbf6c7022 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Fri, 9 Jan 2026 18:46:32 +0100 Subject: DUALNUM: Improve/fix edge cases of unary minus. Thanks to Sergey Kaplun. #1422 #1418 --- src/vm_mips.dasc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/vm_mips.dasc') diff --git a/src/vm_mips.dasc b/src/vm_mips.dasc index 5063e7c6..9a39edd6 100644 --- a/src/vm_mips.dasc +++ b/src/vm_mips.dasc @@ -3566,7 +3566,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | addu RA, BASE, RA | bne SFARG1HI, TISNUM, >2 |. lw SFARG1LO, LO(RB) - | lui TMP1, 0x8000 + | beqz SFARG1LO, >3 + |. lui TMP1, 0x8000 | beq SFARG1LO, TMP1, ->vmeta_unm // Meta handler deals with -2^31. |. negu SFARG1LO, SFARG1LO |1: @@ -3580,6 +3581,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) |. lui TMP1, 0x8000 | b <1 |. xor SFARG1HI, SFARG1HI, TMP1 + |3: + | b <1 + |. lui SFARG1HI, 0x8000 // -0. break; case BC_LEN: | // RA = dst*8, RD = src*8 -- cgit v1.2.3-55-g6feb