From 49a6ecb59ddfb149167e671a17110116ca5dadbc Mon Sep 17 00:00:00 2001 From: David Heidelberg Date: Tue, 10 Sep 2024 03:16:16 +0900 Subject: [PATCH] nir_lower_mem_access_bit_sizes: Assert when 0 components or bits are requested Prevent the accidental passing of 0 components or bits, as it makes no sense. Cc: mesa-stable Reviewed-by: Karol Herbst Reviewed-by: Faith Ekstrand Suggested-by: Karol Herbst Signed-off-by: David Heidelberg Part-of: (cherry picked from commit 6bf7b5bcd804f7c6e8b678b109138a1b733e4e54) --- .pick_status.json | 2 +- src/compiler/nir/nir_lower_mem_access_bit_sizes.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index d2cfb8cdd60..99148119dfd 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2454,7 +2454,7 @@ "description": "nir_lower_mem_access_bit_sizes: Assert when 0 components or bits are requested", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/compiler/nir/nir_lower_mem_access_bit_sizes.c b/src/compiler/nir/nir_lower_mem_access_bit_sizes.c index 2c840c5728e..0b31f116364 100644 --- a/src/compiler/nir/nir_lower_mem_access_bit_sizes.c +++ b/src/compiler/nir/nir_lower_mem_access_bit_sizes.c @@ -88,6 +88,8 @@ lower_mem_load(nir_builder *b, nir_intrinsic_instr *intrin, bit_size, align_mul, whole_align_offset, offset_is_const, cb_data); + assert(requested.num_components > 0); + assert(requested.bit_size > 0); assert(util_is_power_of_two_nonzero(align_mul)); assert(util_is_power_of_two_nonzero(requested.align)); if (requested.num_components == num_components && @@ -112,6 +114,8 @@ lower_mem_load(nir_builder *b, nir_intrinsic_instr *intrin, offset_is_const, cb_data); unsigned chunk_bytes; + assert(requested.num_components > 0); + assert(requested.bit_size > 0); assert(util_is_power_of_two_nonzero(requested.align)); if (align_mul < requested.align) { /* For this case, we need to be able to shift the value so we assume @@ -249,6 +253,8 @@ lower_mem_store(nir_builder *b, nir_intrinsic_instr *intrin, bit_size, align_mul, whole_align_offset, offset_is_const, cb_data); + assert(requested.num_components > 0); + assert(requested.bit_size > 0); assert(util_is_power_of_two_nonzero(align_mul)); assert(util_is_power_of_two_nonzero(requested.align)); if (requested.num_components == num_components && @@ -289,6 +295,8 @@ lower_mem_store(nir_builder *b, nir_intrinsic_instr *intrin, uint32_t chunk_bytes = requested.num_components * (requested.bit_size / 8); + assert(requested.num_components > 0); + assert(requested.bit_size > 0); assert(util_is_power_of_two_nonzero(requested.align)); if (chunk_align < requested.align || chunk_bytes > max_chunk_bytes) {