aboutsummaryrefslogtreecommitdiff
path: root/src/vm_mips.dasc
diff options
context:
space:
mode:
authorMike Pall <mike>2026-01-09 18:46:32 +0100
committerMike Pall <mike>2026-01-09 18:46:32 +0100
commit707c12bf00dafdfd3899b1a6c36435dbbf6c7022 (patch)
tree0b1d335e5c4700fd8b5a4955d3365c8cdf4bc646 /src/vm_mips.dasc
parent3015b6187e00bf39b4b263a1006654600b554eb3 (diff)
downloadluajit-707c12bf00dafdfd3899b1a6c36435dbbf6c7022.tar.gz
luajit-707c12bf00dafdfd3899b1a6c36435dbbf6c7022.tar.bz2
luajit-707c12bf00dafdfd3899b1a6c36435dbbf6c7022.zip
DUALNUM: Improve/fix edge cases of unary minus.HEADv2.1
Thanks to Sergey Kaplun. #1422 #1418
Diffstat (limited to 'src/vm_mips.dasc')
-rw-r--r--src/vm_mips.dasc6
1 files changed, 5 insertions, 1 deletions
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)
3566 | addu RA, BASE, RA 3566 | addu RA, BASE, RA
3567 | bne SFARG1HI, TISNUM, >2 3567 | bne SFARG1HI, TISNUM, >2
3568 |. lw SFARG1LO, LO(RB) 3568 |. lw SFARG1LO, LO(RB)
3569 | lui TMP1, 0x8000 3569 | beqz SFARG1LO, >3
3570 |. lui TMP1, 0x8000
3570 | beq SFARG1LO, TMP1, ->vmeta_unm // Meta handler deals with -2^31. 3571 | beq SFARG1LO, TMP1, ->vmeta_unm // Meta handler deals with -2^31.
3571 |. negu SFARG1LO, SFARG1LO 3572 |. negu SFARG1LO, SFARG1LO
3572 |1: 3573 |1:
@@ -3580,6 +3581,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3580 |. lui TMP1, 0x8000 3581 |. lui TMP1, 0x8000
3581 | b <1 3582 | b <1
3582 |. xor SFARG1HI, SFARG1HI, TMP1 3583 |. xor SFARG1HI, SFARG1HI, TMP1
3584 |3:
3585 | b <1
3586 |. lui SFARG1HI, 0x8000 // -0.
3583 break; 3587 break;
3584 case BC_LEN: 3588 case BC_LEN:
3585 | // RA = dst*8, RD = src*8 3589 | // RA = dst*8, RD = src*8