Mesa (main): ac/nir: fix left shift of 1 by 31 places detected by UBSAN

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Nov 25 17:11:53 UTC 2021


Module: Mesa
Branch: main
Commit: 8e3fbe7cc8e63c0dd7c849866a9408f329110750
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e3fbe7cc8e63c0dd7c849866a9408f329110750

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Wed Nov 24 14:18:47 2021 +0100

ac/nir: fix left shift of 1 by 31 places detected by UBSAN

src/amd/common/ac_nir_lower_ngg.c:1135:62: runtime error: left shift
of 1 by 31 places cannot be represented in type 'int

src/amd/common/ac_nir_lower_ngg.c:622:20: runtime error: left shift
of 1 by 31 places cannot be represented in type 'int'

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13951>

---

 src/amd/common/ac_nir_lower_ngg.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/amd/common/ac_nir_lower_ngg.c b/src/amd/common/ac_nir_lower_ngg.c
index 40db4d96b13..bdbcb613681 100644
--- a/src/amd/common/ac_nir_lower_ngg.c
+++ b/src/amd/common/ac_nir_lower_ngg.c
@@ -619,7 +619,7 @@ cleanup_culling_shader_after_dce(nir_shader *shader,
             break;
          case nir_intrinsic_load_input:
             if (state->instance_rate_inputs &
-                (1 << (nir_intrinsic_base(intrin) - VERT_ATTRIB_GENERIC0)))
+                (1u << (nir_intrinsic_base(intrin) - VERT_ATTRIB_GENERIC0)))
                uses_vs_instance_id = true;
             else
                uses_vs_vertex_id = true;
@@ -1132,7 +1132,7 @@ add_deferred_attribute_culling(nir_builder *b, nir_cf_list *original_extracted_c
                             .memory_semantics=NIR_MEMORY_ACQ_REL, .memory_modes=nir_var_mem_shared);
 
       nir_store_var(b, gs_accepted_var, nir_imm_bool(b, false), 0x1u);
-      nir_store_var(b, prim_exp_arg_var, nir_imm_int(b, 1 << 31), 0x1u);
+      nir_store_var(b, prim_exp_arg_var, nir_imm_int(b, 1u << 31), 0x1u);
 
       /* GS invocations load the vertex data and perform the culling. */
       nir_if *if_gs_thread = nir_push_if(b, nir_build_has_input_primitive_amd(b));



More information about the mesa-commit mailing list