summaryrefslogtreecommitdiff
path: root/src/compiler/nir/nir_opt_load_store_vectorize.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/nir/nir_opt_load_store_vectorize.c')
-rw-r--r--src/compiler/nir/nir_opt_load_store_vectorize.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/compiler/nir/nir_opt_load_store_vectorize.c b/src/compiler/nir/nir_opt_load_store_vectorize.c
index 147b88c3594..370366a25df 100644
--- a/src/compiler/nir/nir_opt_load_store_vectorize.c
+++ b/src/compiler/nir/nir_opt_load_store_vectorize.c
@@ -812,6 +812,16 @@ vectorize_loads(nir_builder *b, struct vectorize_ctx *ctx,
if (first != low && nir_intrinsic_has_base(first->intrin))
nir_intrinsic_set_base(first->intrin, nir_intrinsic_base(low->intrin));
+ if (nir_intrinsic_has_range_base(first->intrin)) {
+ uint32_t low_base = nir_intrinsic_range_base(low->intrin);
+ uint32_t high_base = nir_intrinsic_range_base(high->intrin);
+ uint32_t low_end = low_base + nir_intrinsic_range(low->intrin);
+ uint32_t high_end = high_base + nir_intrinsic_range(high->intrin);
+
+ nir_intrinsic_set_range_base(first->intrin, low_base);
+ nir_intrinsic_set_range(first->intrin, MAX2(low_end, high_end) - low_base);
+ }
+
first->key = low->key;
first->offset = low->offset;