nir/opt_preamble: hoist reorderable SSBO loads on AGX

basically asahi version of 2f93137308 ("nir/opt_preamble: Handle
load_global_ir3"). elden ring:

Totals from 2409 (75.14% of 3206) affected shaders:
MaxWaves: 2068416 -> 2081984 (+0.66%); split: +0.74%, -0.08%
Instrs: 2439078 -> 1849792 (-24.16%)
CodeSize: 15570886 -> 12196612 (-21.67%)
Spills: 11623 -> 11678 (+0.47%); split: -0.63%, +1.10%
Fills: 9815 -> 9762 (-0.54%); split: -1.37%, +0.83%
Scratch: 31200 -> 31328 (+0.41%); split: -0.23%, +0.64%
ALU: 1154256 -> 1038680 (-10.01%); split: -10.22%, +0.21%
FSCIB: 1154256 -> 1038479 (-10.03%); split: -10.24%, +0.21%
IC: 248318 -> 237344 (-4.42%); split: -4.47%, +0.05%
GPRs: 266323 -> 254621 (-4.39%); split: -4.72%, +0.33%
Uniforms: 639557 -> 794085 (+24.16%); split: -0.07%, +24.23%

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reacted-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35559>
This commit is contained in:
Alyssa Rosenzweig 2025-06-13 15:41:01 -04:00 committed by Marge Bot
parent e99446fc5e
commit 3eeba6efdd

View file

@ -249,6 +249,7 @@ can_move_intrinsic(nir_intrinsic_instr *instr, opt_preamble_ctx *ctx)
case nir_intrinsic_load_ssbo:
case nir_intrinsic_load_ssbo_ir3:
case nir_intrinsic_load_global_ir3:
case nir_intrinsic_load_agx:
return (nir_intrinsic_access(instr) & ACCESS_CAN_REORDER) &&
can_move_srcs(&instr->instr, ctx);