nv50/ir/nir: always round towards zero for f2i/f2u

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>
This commit is contained in:
Danilo Krummrich 2022-08-12 16:54:49 +02:00
parent 109d56f612
commit 6a9825bc1b

View file

@ -2672,10 +2672,11 @@ Converter::visit(nir_alu_instr *insn)
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