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 <pendingchaos02@gmail.com>
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31904>
This commit is contained in:
Rhys Perry 2024-10-03 16:21:12 +01:00 committed by Marge Bot
parent 0c7830eb85
commit bd88c8733a

View file

@ -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))