mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 14:38:06 +02:00
nir: Fix validation error after nir_round_int_to_float()
CL CTS test_conversions hits a nir_validate assert than ufind_msb is 32b
or 64b:
16 %61 = @load_global (%185) (access=none, align_mul=2, align_offset=0)
32 %240 = ufind_msb %61 error: src_bit_size == 32 || src_bit_size == 64 (../src/compiler/nir/nir_validate.c:273)
Signed-off-by: Rob Clark <rob.clark@oss.qualcomm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40054>
This commit is contained in:
parent
85394f39e5
commit
ff8b688fc7
1 changed files with 4 additions and 1 deletions
|
|
@ -163,7 +163,10 @@ nir_round_int_to_float(nir_builder *b, nir_def *src,
|
|||
UNREACHABLE("unexpected rounding mode");
|
||||
} else {
|
||||
nir_def *mantissa_bit_size = nir_imm_int(b, mantissa_bits);
|
||||
nir_def *msb = nir_imax(b, nir_ufind_msb(b, src), mantissa_bit_size);
|
||||
nir_def *ufind_msb_src = src;
|
||||
if (src->bit_size < 32)
|
||||
ufind_msb_src = nir_u2u32(b, src);
|
||||
nir_def *msb = nir_imax(b, nir_ufind_msb(b, ufind_msb_src), mantissa_bit_size);
|
||||
nir_def *bits_to_lose = nir_isub(b, msb, mantissa_bit_size);
|
||||
nir_def *one = nir_imm_intN_t(b, 1, src->bit_size);
|
||||
nir_def *adjust = nir_ishl(b, one, bits_to_lose);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue