From cab995b4630cb6143a3172b44efda06ad2fa6051 Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Thu, 14 May 2020 13:18:33 +0200 Subject: [PATCH] nir: Make nir_build_deref_offset() support ptr_as_array nir_build_deref_offset() can be extended to support calculating an offset relative to a base pointer. Signed-off-by: Boris Brezillon Reviewed-by: Jason Ekstrand Part-of: --- src/compiler/nir/nir_deref.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/compiler/nir/nir_deref.c b/src/compiler/nir/nir_deref.c index c32731d156c..a5282ce128f 100644 --- a/src/compiler/nir/nir_deref.c +++ b/src/compiler/nir/nir_deref.c @@ -334,7 +334,8 @@ nir_build_deref_offset(nir_builder *b, nir_deref_instr *deref, nir_ssa_def *offset = nir_imm_intN_t(b, 0, deref->dest.ssa.bit_size); for (nir_deref_instr **p = &path.path[1]; *p; p++) { switch ((*p)->deref_type) { - case nir_deref_type_array: { + case nir_deref_type_array: + case nir_deref_type_ptr_as_array: { nir_ssa_def *index = nir_ssa_for_src(b, (*p)->arr.index, 1); int stride = type_get_array_stride((*p)->type, size_align); offset = nir_iadd(b, offset, nir_amul_imm(b, index, stride));