Conversions to integers must be rounded towards zero, hence, actually
do this for all integers including 8/16 bit sources.
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18109>
case nir_op_u2u64: {
DEFAULT_CHECKS;
LValues &newDefs = convert(&insn->dest);
+ DataType stype = sTypes[0];
Instruction *i = mkOp1(getOperation(op), dType, newDefs[0], getSrc(&insn->src[0]));
- if (op == nir_op_f2i32 || op == nir_op_f2i64 || op == nir_op_f2u32 || op == nir_op_f2u64)
+ if (::isFloatType(stype) && isIntType(dType))
i->rnd = ROUND_Z;
- i->sType = sTypes[0];
+ i->sType = stype;
break;
}
// compare instructions