ac/nir: properly handle large global access constant offsets
authorRhys Perry <pendingchaos02@gmail.com>
Thu, 14 Apr 2022 17:57:51 +0000 (18:57 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 15 Apr 2022 10:39:40 +0000 (10:39 +0000)
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Fixes: 61ac5acca3b ("radv,ac/nir: lower global access to _amd global access intrinsics")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6321
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15951>

src/amd/common/ac_nir_lower_global_access.c

index 22a3673..1249dd3 100644 (file)
@@ -144,8 +144,10 @@ process_instr(nir_builder *b, nir_instr *instr, void *_)
 
    b->cursor = nir_before_instr(&intrin->instr);
 
-   if (off_const > UINT32_MAX)
+   if (off_const > UINT32_MAX) {
       addr = nir_iadd_imm(b, addr, off_const);
+      off_const = 0;
+   }
 
    nir_intrinsic_instr *new_intrin = nir_intrinsic_instr_create(b->shader, op);