Add FOLD rules for CONV.int.i8/u8/i16/u16 of KINT.

This commit is contained in:
Mike Pall 2012-10-09 21:36:56 +02:00
parent eabfdfe1aa
commit 0452e97ba0

View File

@ -598,6 +598,20 @@ LJFOLDF(kfold_conv_kintu32_num)
return lj_ir_knum(J, (lua_Number)(uint32_t)fleft->i);
}
LJFOLD(CONV KINT IRCONV_INT_I8)
LJFOLD(CONV KINT IRCONV_INT_U8)
LJFOLD(CONV KINT IRCONV_INT_I16)
LJFOLD(CONV KINT IRCONV_INT_U16)
LJFOLDF(kfold_conv_kint_ext)
{
int32_t k = fleft->i;
if ((fins->op2 & IRCONV_SRCMASK) == IRT_I8) k = (int8_t)k;
else if ((fins->op2 & IRCONV_SRCMASK) == IRT_U8) k = (uint8_t)k;
else if ((fins->op2 & IRCONV_SRCMASK) == IRT_I16) k = (int16_t)k;
else k = (uint16_t)k;
return INTFOLD(k);
}
LJFOLD(CONV KINT IRCONV_I64_INT)
LJFOLD(CONV KINT IRCONV_U64_INT)
LJFOLD(CONV KINT IRCONV_I64_U32)