From bd88c8733aef7b5f01135ee90f9c1b7588a42271 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Thu, 3 Oct 2024 16:21:12 +0100 Subject: [PATCH] ac/nir: add ACCESS_CAN_REORDER to lowered load_global_constant fossil-db (navi21): Totals from 39 (0.05% of 79395) affected shaders: Instrs: 2619146 -> 2619273 (+0.00%); split: -0.00%, +0.01% CodeSize: 14158064 -> 14158304 (+0.00%) Latency: 17277051 -> 17274098 (-0.02%); split: -0.02%, +0.00% InvThroughput: 4242241 -> 4241746 (-0.01%); split: -0.01%, +0.00% SClause: 56514 -> 57561 (+1.85%); split: -0.02%, +1.87% Signed-off-by: Rhys Perry Reviewed-by: Georg Lehmann Part-of: --- src/amd/common/ac_nir_lower_global_access.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/amd/common/ac_nir_lower_global_access.c b/src/amd/common/ac_nir_lower_global_access.c index 50bd8161dd9..e82351fb3d0 100644 --- a/src/amd/common/ac_nir_lower_global_access.c +++ b/src/amd/common/ac_nir_lower_global_access.c @@ -70,9 +70,13 @@ static bool process_instr(nir_builder *b, nir_intrinsic_instr *intrin, void *_) { nir_intrinsic_op op; + unsigned access = 0; switch (intrin->intrinsic) { - case nir_intrinsic_load_global: case nir_intrinsic_load_global_constant: + access |= ACCESS_NON_WRITEABLE | + (nir_intrinsic_access(intrin) & ACCESS_VOLATILE ? 0 : ACCESS_CAN_REORDER); + FALLTHROUGH; + case nir_intrinsic_load_global: op = nir_intrinsic_load_global_amd; break; case nir_intrinsic_global_atomic: @@ -120,7 +124,7 @@ process_instr(nir_builder *b, nir_intrinsic_instr *intrin, void *_) new_intrin->src[addr_src_idx] = nir_src_for_ssa(addr); if (nir_intrinsic_has_access(intrin)) - nir_intrinsic_set_access(new_intrin, nir_intrinsic_access(intrin)); + nir_intrinsic_set_access(new_intrin, nir_intrinsic_access(intrin) | access); if (nir_intrinsic_has_align_mul(intrin)) nir_intrinsic_set_align_mul(new_intrin, nir_intrinsic_align_mul(intrin)); if (nir_intrinsic_has_align_offset(intrin))