DUALNUM: Add integer variant of MIN/MAX.
This commit is contained in:
@@ -488,11 +488,19 @@ static void LJ_FASTCALL recff_math_pow(jit_State *J, RecordFFData *rd)
|
||||
|
||||
static void LJ_FASTCALL recff_math_minmax(jit_State *J, RecordFFData *rd)
|
||||
{
|
||||
TRef tr = lj_ir_tonum(J, J->base[0]);
|
||||
TRef tr = lj_ir_tonumber(J, J->base[0]);
|
||||
uint32_t op = rd->data;
|
||||
BCReg i;
|
||||
for (i = 1; J->base[i] != 0; i++)
|
||||
tr = emitir(IRTN(op), tr, lj_ir_tonum(J, J->base[i]));
|
||||
for (i = 1; J->base[i] != 0; i++) {
|
||||
TRef tr2 = lj_ir_tonumber(J, J->base[i]);
|
||||
IRType t = IRT_INT;
|
||||
if (!(tref_isinteger(tr) && tref_isinteger(tr2))) {
|
||||
if (tref_isinteger(tr)) tr = emitir(IRTN(IR_CONV), tr, IRCONV_NUM_INT);
|
||||
if (tref_isinteger(tr2)) tr2 = emitir(IRTN(IR_CONV), tr2, IRCONV_NUM_INT);
|
||||
t = IRT_NUM;
|
||||
}
|
||||
tr = emitir(IRT(op, t), tr, tr2);
|
||||
}
|
||||
J->base[0] = tr;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user