From 87fe4028c344c9c7de88acd8b9e904542434f94c Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Mon, 12 Apr 2021 16:20:06 +0200 Subject: [PATCH] gallivm: handle 16-bit input in i2b32 Fixes: dac8cb981f4 ("gallivm/nir: allow 8/16-bit conversion and comparison.") Reviewed-by: Dave Airlie Part-of: (cherry picked from commit da5f346e6c63a17352ed8aacd6b1c182a1a9971d) --- .pick_status.json | 2 +- src/gallium/auxiliary/gallivm/lp_bld_nir.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 5e713c6354f..76921afa0b0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -229,7 +229,7 @@ "description": "gallivm: handle 16-bit input in i2b32", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "dac8cb981f4f2951a14e16851d59fb8d49a3e19b" }, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_nir.c b/src/gallium/auxiliary/gallivm/lp_bld_nir.c index c1581ba6a84..38afac47de6 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_nir.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_nir.c @@ -206,7 +206,9 @@ static LLVMValueRef int_to_bool32(struct lp_build_nir_context *bld_base, LLVMBuilderRef builder = bld_base->base.gallivm->builder; struct lp_build_context *int_bld = get_int_bld(bld_base, is_unsigned, src_bit_size); LLVMValueRef result = lp_build_compare(bld_base->base.gallivm, int_bld->type, PIPE_FUNC_NOTEQUAL, val, int_bld->zero); - if (src_bit_size == 64) + if (src_bit_size == 16) + result = LLVMBuildSExt(builder, result, bld_base->int_bld.vec_type, ""); + else if (src_bit_size == 64) result = LLVMBuildTrunc(builder, result, bld_base->int_bld.vec_type, ""); return result; }