diff --git a/.pick_status.json b/.pick_status.json index dd4cded98ec..32ccc64978a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -824,7 +824,7 @@ "description": "nir/uub: properly limit float support to 32bit", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/compiler/nir/nir_range_analysis.c b/src/compiler/nir/nir_range_analysis.c index 0e49ab33b58..8df8993d2b1 100644 --- a/src/compiler/nir/nir_range_analysis.c +++ b/src/compiler/nir/nir_range_analysis.c @@ -1720,8 +1720,6 @@ get_alu_uub(struct analysis_state *state, struct uub_query q, uint32_t *result, case nir_op_b32csel: case nir_op_ubfe: case nir_op_bfm: - case nir_op_fmul: - case nir_op_fmulz: case nir_op_extract_u8: case nir_op_extract_i8: case nir_op_extract_u16: @@ -1734,12 +1732,19 @@ get_alu_uub(struct analysis_state *state, struct uub_query q, uint32_t *result, case nir_op_u2u8: case nir_op_u2u16: case nir_op_u2u32: - case nir_op_f2u32: if (nir_scalar_chase_alu_src(q.scalar, 0).def->bit_size > 32) { /* If src is >32 bits, return max */ return; } break; + case nir_op_fmul: + case nir_op_fmulz: + case nir_op_f2u32: + if (nir_scalar_chase_alu_src(q.scalar, 0).def->bit_size != 32) { + /* Only 32bit floats support for now, return max */ + return; + } + break; default: return; }