From b97590371a8424f735b71de301edcd35bdc4532e Mon Sep 17 00:00:00 2001 From: Danilo Krummrich Date: Wed, 17 Aug 2022 14:50:50 +0200 Subject: [PATCH] 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 Signed-off-by: Danilo Krummrich Part-of: --- src/nouveau/codegen/nv50_ir_lowering_helper.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/nouveau/codegen/nv50_ir_lowering_helper.cpp b/src/nouveau/codegen/nv50_ir_lowering_helper.cpp index a8f1660325d..ac0255220a0 100644 --- a/src/nouveau/codegen/nv50_ir_lowering_helper.cpp +++ b/src/nouveau/codegen/nv50_ir_lowering_helper.cpp @@ -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;