diff options
author | Mike Pall <mike> | 2012-10-09 21:36:56 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-10-09 21:36:56 +0200 |
commit | 0452e97ba0c06dbcf956ec46817e4a71012d87cc (patch) | |
tree | cbe107844a4a97be6ced54e7f10583c0fe6e3b0e | |
parent | eabfdfe1aa3b4b9c37b99137e6d5fb7cadbd47e9 (diff) | |
download | luajit-0452e97ba0c06dbcf956ec46817e4a71012d87cc.tar.gz luajit-0452e97ba0c06dbcf956ec46817e4a71012d87cc.tar.bz2 luajit-0452e97ba0c06dbcf956ec46817e4a71012d87cc.zip |
Add FOLD rules for CONV.int.i8/u8/i16/u16 of KINT.
-rw-r--r-- | src/lj_opt_fold.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index c1e30511..23199c43 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c | |||
@@ -598,6 +598,20 @@ LJFOLDF(kfold_conv_kintu32_num) | |||
598 | return lj_ir_knum(J, (lua_Number)(uint32_t)fleft->i); | 598 | return lj_ir_knum(J, (lua_Number)(uint32_t)fleft->i); |
599 | } | 599 | } |
600 | 600 | ||
601 | LJFOLD(CONV KINT IRCONV_INT_I8) | ||
602 | LJFOLD(CONV KINT IRCONV_INT_U8) | ||
603 | LJFOLD(CONV KINT IRCONV_INT_I16) | ||
604 | LJFOLD(CONV KINT IRCONV_INT_U16) | ||
605 | LJFOLDF(kfold_conv_kint_ext) | ||
606 | { | ||
607 | int32_t k = fleft->i; | ||
608 | if ((fins->op2 & IRCONV_SRCMASK) == IRT_I8) k = (int8_t)k; | ||
609 | else if ((fins->op2 & IRCONV_SRCMASK) == IRT_U8) k = (uint8_t)k; | ||
610 | else if ((fins->op2 & IRCONV_SRCMASK) == IRT_I16) k = (int16_t)k; | ||
611 | else k = (uint16_t)k; | ||
612 | return INTFOLD(k); | ||
613 | } | ||
614 | |||
601 | LJFOLD(CONV KINT IRCONV_I64_INT) | 615 | LJFOLD(CONV KINT IRCONV_I64_INT) |
602 | LJFOLD(CONV KINT IRCONV_U64_INT) | 616 | LJFOLD(CONV KINT IRCONV_U64_INT) |
603 | LJFOLD(CONV KINT IRCONV_I64_U32) | 617 | LJFOLD(CONV KINT IRCONV_I64_U32) |