nv50/ir: handle U8/U16 integers converting to U64

We can't directly convert from unsigned integers smaller than 64 bit to
unsigned 64 bit integers. Hence, converting from 32 bit to 64 bit is
handled by just merging with 0. To support U8/U16 integers handle them
just the same way.

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-17 14:50:50 +02:00
parent caba679e56
commit b97590371a

View file

@ -154,9 +154,11 @@ LoweringHelper::handleCVT(Instruction *insn)
return true;
}
if (dTy == TYPE_U64 && sTy == TYPE_U32) {
if (dTy == TYPE_U64 && isUnsignedIntType(sTy) && typeSizeof(sTy) <= 4) {
insn->op = OP_MERGE;
insn->setSrc(1, bld.loadImm(bld.getSSA(), 0));
return true;
}
return true;