From 8e8fb2ebaa3677352ad7dac0ff8b9e42aa18d2ea Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Mon, 2 Mar 2026 01:40:42 +0100 Subject: [PATCH] nir: fix nir_alu_type_range_contains_type_range for fp16 to int The special value "Inf" doesn't fit into an int and therefore we have to clamp regardless of whether all the other values would fit. And because f2u32 and f2u64 define out-of-range conversions as UB in nir, we need to clamp. This change should have no effect for non saturating conversions. Fixes "conversions long_sat_*half" CL CTS tests Cc: mesa-stable Suggested-by: Rob Clark Reviewed-by: Rob Clark Reviewed-by: Erik Faye-Lund Part-of: --- src/compiler/nir/nir_conversion_builder.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/compiler/nir/nir_conversion_builder.h b/src/compiler/nir/nir_conversion_builder.h index a27440e842c..d1ae0f636ef 100644 --- a/src/compiler/nir/nir_conversion_builder.h +++ b/src/compiler/nir/nir_conversion_builder.h @@ -210,11 +210,6 @@ nir_alu_type_range_contains_type_range(nir_alu_type a, nir_alu_type b) a_bit_size > b_bit_size) return true; - /* 16-bit floats fit in 32-bit integers */ - if (a_base_type == nir_type_int && a_bit_size >= 32 && - b == nir_type_float16) - return true; - /* All signed or unsigned ints can fit in float or above. A uint8 can fit * in a float16. */