From 281f426d602596f855d8fea787ad7a514365244d Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Mon, 6 Dec 2010 00:38:21 +0100 Subject: [PATCH] Add minimal set of fold rules for KINT64. --- src/lj_opt_fold.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index 6df1a08a..8ccfc6bd 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c @@ -661,6 +661,25 @@ LJFOLDF(simplify_intsub_k) return RETRYFOLD; } +LJFOLD(ADD any KINT64) +LJFOLDF(simplify_intadd_k64) +{ + if (ir_kint64(fright)->u64 == 0) /* i + 0 ==> i */ + return LEFTFOLD; + return NEXTFOLD; +} + +LJFOLD(SUB any KINT64) +LJFOLDF(simplify_intsub_k64) +{ + uint64_t k = ir_kint64(fright)->u64; + if (k == 0) /* i - 0 ==> i */ + return LEFTFOLD; + fins->o = IR_ADD; /* i - k ==> i + (-k) */ + fins->op2 = (IRRef1)lj_ir_kint64(J, -k); /* Overflow for -2^63 ok. */ + return RETRYFOLD; +} + LJFOLD(SUB any any) LJFOLD(SUBOV any any) LJFOLDF(simplify_intsub)