mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-10 03:50:13 +01:00
nir: add more intrinsics to nir_intrinsic_can_reorder
Including nir_intrinsic_load_global. fossil-db (navi21): Totals from 2725 (3.43% of 79395) affected shaders: MaxWaves: 71972 -> 71964 (-0.01%); split: +0.01%, -0.02% Instrs: 2831052 -> 2819902 (-0.39%); split: -0.45%, +0.06% CodeSize: 15047548 -> 14973072 (-0.49%); split: -0.57%, +0.08% VGPRs: 108864 -> 108856 (-0.01%); split: -0.02%, +0.01% SpillSGPRs: 906 -> 926 (+2.21%) SpillVGPRs: 196 -> 1092 (+457.14%) Scratch: 729088 -> 741376 (+1.69%) Latency: 16621317 -> 16586551 (-0.21%); split: -0.34%, +0.13% InvThroughput: 4169987 -> 4164876 (-0.12%); split: -0.23%, +0.11% VClause: 63247 -> 63471 (+0.35%); split: -0.21%, +0.56% SClause: 56978 -> 55276 (-2.99%); split: -3.50%, +0.51% Copies: 252545 -> 252495 (-0.02%); split: -0.98%, +0.96% Branches: 91378 -> 91388 (+0.01%); split: -0.03%, +0.04% PreSGPRs: 112753 -> 126850 (+12.50%); split: -0.48%, +12.98% PreVGPRs: 90617 -> 90708 (+0.10%) VALU: 1709034 -> 1709368 (+0.02%); split: -0.01%, +0.03% SALU: 463554 -> 462253 (-0.28%); split: -0.57%, +0.29% VMEM: 115952 -> 116272 (+0.28%); split: -0.21%, +0.49% SMEM: 129097 -> 120538 (-6.63%); split: -6.64%, +0.01% 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:
parent
c925730779
commit
80b76ba692
1 changed files with 8 additions and 12 deletions
|
|
@ -2195,21 +2195,17 @@ void nir_rewrite_image_intrinsic(nir_intrinsic_instr *instr,
|
|||
static inline bool
|
||||
nir_intrinsic_can_reorder(nir_intrinsic_instr *instr)
|
||||
{
|
||||
if (nir_intrinsic_has_access(instr) &&
|
||||
nir_intrinsic_access(instr) & ACCESS_VOLATILE)
|
||||
return false;
|
||||
if (nir_intrinsic_has_access(instr)) {
|
||||
enum gl_access_qualifier access = nir_intrinsic_access(instr);
|
||||
if (access & ACCESS_VOLATILE)
|
||||
return false;
|
||||
if (access & ACCESS_CAN_REORDER)
|
||||
return true;
|
||||
}
|
||||
|
||||
if (instr->intrinsic == nir_intrinsic_load_deref) {
|
||||
nir_deref_instr *deref = nir_src_as_deref(instr->src[0]);
|
||||
return nir_deref_mode_is_in_set(deref, nir_var_read_only_modes) ||
|
||||
(nir_intrinsic_access(instr) & ACCESS_CAN_REORDER);
|
||||
} else if (instr->intrinsic == nir_intrinsic_load_ssbo ||
|
||||
instr->intrinsic == nir_intrinsic_bindless_image_load ||
|
||||
instr->intrinsic == nir_intrinsic_image_deref_load ||
|
||||
instr->intrinsic == nir_intrinsic_image_load ||
|
||||
instr->intrinsic == nir_intrinsic_ald_nv ||
|
||||
instr->intrinsic == nir_intrinsic_load_sysval_nv) {
|
||||
return nir_intrinsic_access(instr) & ACCESS_CAN_REORDER;
|
||||
return nir_deref_mode_is_in_set(deref, nir_var_read_only_modes);
|
||||
} else {
|
||||
const nir_intrinsic_info *info =
|
||||
&nir_intrinsic_infos[instr->intrinsic];
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue