aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2010-12-06 00:38:21 +0100
committerMike Pall <mike>2010-12-06 00:38:21 +0100
commit281f426d602596f855d8fea787ad7a514365244d (patch)
tree3dd722ea40c3adf64aa40d5751c098aa420cc175 /src
parent588fa0481fff746b5a866dd8b90ddd00618da71d (diff)
downloadluajit-281f426d602596f855d8fea787ad7a514365244d.tar.gz
luajit-281f426d602596f855d8fea787ad7a514365244d.tar.bz2
luajit-281f426d602596f855d8fea787ad7a514365244d.zip
Add minimal set of fold rules for KINT64.
Diffstat (limited to 'src')
-rw-r--r--src/lj_opt_fold.c19
1 files changed, 19 insertions, 0 deletions
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)
661 return RETRYFOLD; 661 return RETRYFOLD;
662} 662}
663 663
664LJFOLD(ADD any KINT64)
665LJFOLDF(simplify_intadd_k64)
666{
667 if (ir_kint64(fright)->u64 == 0) /* i + 0 ==> i */
668 return LEFTFOLD;
669 return NEXTFOLD;
670}
671
672LJFOLD(SUB any KINT64)
673LJFOLDF(simplify_intsub_k64)
674{
675 uint64_t k = ir_kint64(fright)->u64;
676 if (k == 0) /* i - 0 ==> i */
677 return LEFTFOLD;
678 fins->o = IR_ADD; /* i - k ==> i + (-k) */
679 fins->op2 = (IRRef1)lj_ir_kint64(J, -k); /* Overflow for -2^63 ok. */
680 return RETRYFOLD;
681}
682
664LJFOLD(SUB any any) 683LJFOLD(SUB any any)
665LJFOLD(SUBOV any any) 684LJFOLD(SUBOV any any)
666LJFOLDF(simplify_intsub) 685LJFOLDF(simplify_intsub)