From f2479a96542c639861fb40c721c07f9c53cae20a Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Mon, 20 Aug 2012 18:45:50 +0200 Subject: [PATCH] Minor fixes to FOLD rules. --- src/lj_opt_fold.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index ab8085d7..2240f5db 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c @@ -430,14 +430,14 @@ LJFOLDF(kfold_bswap64) #endif } -LJFOLD(LT KINT64 KINT) -LJFOLD(GE KINT64 KINT) -LJFOLD(LE KINT64 KINT) -LJFOLD(GT KINT64 KINT) -LJFOLD(ULT KINT64 KINT) -LJFOLD(UGE KINT64 KINT) -LJFOLD(ULE KINT64 KINT) -LJFOLD(UGT KINT64 KINT) +LJFOLD(LT KINT64 KINT64) +LJFOLD(GE KINT64 KINT64) +LJFOLD(LE KINT64 KINT64) +LJFOLD(GT KINT64 KINT64) +LJFOLD(ULT KINT64 KINT64) +LJFOLD(UGE KINT64 KINT64) +LJFOLD(ULE KINT64 KINT64) +LJFOLD(UGT KINT64 KINT64) LJFOLDF(kfold_int64comp) { #if LJ_HASFFI @@ -565,6 +565,18 @@ LJFOLDF(kfold_add_kptr) return lj_ir_kptr_(J, fleft->o, (char *)p + ofs); } +LJFOLD(ADD any KGC) +LJFOLD(ADD any KPTR) +LJFOLD(ADD any KKPTR) +LJFOLDF(kfold_add_kright) +{ + if (fleft->o == IR_KINT || fleft->o == IR_KINT64) { + IRRef1 tmp = fins->op1; fins->op1 = fins->op2; fins->op2 = tmp; + return RETRYFOLD; + } + return NEXTFOLD; +} + /* -- Constant folding of conversions ------------------------------------- */ LJFOLD(TOBIT KNUM KNUM)