From 89b9fcb5e7c0b3541bf66f1cd4095fce0b2e4d54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Fri, 12 Dec 2025 15:11:04 +0100 Subject: [PATCH] nir/opt_load_store_vectorize: delay aliasing test in try_vectorize_shared2() Checking for aliasing can be very expensive. Part-of: --- src/compiler/nir/nir_opt_load_store_vectorize.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/nir/nir_opt_load_store_vectorize.c b/src/compiler/nir/nir_opt_load_store_vectorize.c index 22d73bc05e5..8b1e1acdae1 100644 --- a/src/compiler/nir/nir_opt_load_store_vectorize.c +++ b/src/compiler/nir/nir_opt_load_store_vectorize.c @@ -1507,9 +1507,6 @@ try_vectorize_shared2(struct vectorize_ctx *ctx, struct entry *low, struct entry *high, struct entry *first, struct entry *second) { - if (!can_vectorize(ctx, first, second) || first->deref) - return false; - unsigned low_bit_size = get_bit_size(low); unsigned high_bit_size = get_bit_size(high); unsigned low_size = low->num_components * low_bit_size / 8; @@ -1523,6 +1520,9 @@ try_vectorize_shared2(struct vectorize_ctx *ctx, if (high->align_mul % low_size || high->align_offset % low_size) return false; + if (!can_vectorize(ctx, first, second) || first->deref) + return false; + uint64_t diff = get_offset_diff(low, high); bool st64 = diff % (64 * low_size) == 0; unsigned stride = st64 ? 64 * low_size : low_size;