aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lj_opt_fold.c14
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
601LJFOLD(CONV KINT IRCONV_INT_I8)
602LJFOLD(CONV KINT IRCONV_INT_U8)
603LJFOLD(CONV KINT IRCONV_INT_I16)
604LJFOLD(CONV KINT IRCONV_INT_U16)
605LJFOLDF(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
601LJFOLD(CONV KINT IRCONV_I64_INT) 615LJFOLD(CONV KINT IRCONV_I64_INT)
602LJFOLD(CONV KINT IRCONV_U64_INT) 616LJFOLD(CONV KINT IRCONV_U64_INT)
603LJFOLD(CONV KINT IRCONV_I64_U32) 617LJFOLD(CONV KINT IRCONV_I64_U32)