From e9dc3df868d97ad88360131bada45732eb8535e7 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Mon, 12 Apr 2021 15:36:59 +0100 Subject: [PATCH] nir/loop_unroll: fix is_indirect_load() with load_global load_global only has one source. Signed-off-by: Rhys Perry Reviewed-by: Jason Ekstrand Fixes: dfe429eb414 ("nir/loop_unroll: unroll more aggressively if it can improve load scheduling") Part-of: --- src/compiler/nir/nir_opt_loop_unroll.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_opt_loop_unroll.c b/src/compiler/nir/nir_opt_loop_unroll.c index b3ec353097c..c4c76742d79 100644 --- a/src/compiler/nir/nir_opt_loop_unroll.c +++ b/src/compiler/nir/nir_opt_loop_unroll.c @@ -757,12 +757,14 @@ is_indirect_load(nir_instr *instr) nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr); if ((intrin->intrinsic == nir_intrinsic_load_ubo || - intrin->intrinsic == nir_intrinsic_load_ssbo || - intrin->intrinsic == nir_intrinsic_load_global) && + intrin->intrinsic == nir_intrinsic_load_ssbo) && !nir_src_is_const(intrin->src[1])) { return true; } + if (intrin->intrinsic == nir_intrinsic_load_global) + return true; + if (intrin->intrinsic == nir_intrinsic_load_deref || intrin->intrinsic == nir_intrinsic_store_deref) { nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]);