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