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) |
