mesa/src/panfrost
Romaric Jodin 7dc4f28507 pan/bi: schedule simple iterators to avoid extra move
Try to move iterator as close to the end of the block as possible. The
goal is to avoid the iterator being used after being updated, to
prevent the need for an extra move instruction.

shader-db report on `Mali-G725`:
```
total instrs in shared programs: 720530 -> 716482 (-0.56%)
instrs in affected programs: 231842 -> 227794 (-1.75%)
helped: 3804
HURT: 1
helped stats (abs) min: 1.0 max: 8.0 x̄: 1.06 x̃: 1
helped stats (rel) min: 0.14% max: 6.25% x̄: 2.75% x̃: 2.86%
HURT stats (abs)   min: 1.0 max: 1.0 x̄: 1.00 x̃: 1
HURT stats (rel)   min: 0.05% max: 0.05% x̄: 0.05% x̃: 0.05%
95% mean confidence interval for instrs value: -1.08 -1.04
95% mean confidence interval for instrs %-change: -2.79% -2.71%
Instrs are helped.

total cycles in shared programs: 35295.80 -> 35295.55 (<.01%)
cycles in affected programs: 3.50 -> 3.25 (-7.14%)
helped: 8
HURT: 0
helped stats (abs) min: 0.03125 max: 0.03125 x̄: 0.03 x̃: 0
helped stats (rel) min: 6.90% max: 7.41% x̄: 7.15% x̃: 7.15%
95% mean confidence interval for cycles value: -0.03 -0.03
95% mean confidence interval for cycles %-change: -7.38% -6.92%
Cycles are helped.

total fma in shared programs: 5054.34 -> 5054.34 (0.00%)
fma in affected programs: 0 -> 0
helped: 0
HURT: 0

total cvt in shared programs: 4707.69 -> 4644.44 (-1.34%)
cvt in affected programs: 1471.28 -> 1408.03 (-4.30%)
helped: 3804
HURT: 1
helped stats (abs) min: 0.015625 max: 0.125 x̄: 0.02 x̃: 0
helped stats (rel) min: 0.37% max: 12.50% x̄: 6.01% x̃: 6.67%
HURT stats (abs)   min: 0.015625 max: 0.015625 x̄: 0.02 x̃: 0
HURT stats (rel)   min: 0.13% max: 0.13% x̄: 0.13% x̃: 0.13%
95% mean confidence interval for cvt value: -0.02 -0.02
95% mean confidence interval for cvt %-change: -6.07% -5.94%
Cvt are helped.

total sfu in shared programs: 1878.25 -> 1878.25 (0.00%)
sfu in affected programs: 0 -> 0
helped: 0
HURT: 0

total v in shared programs: 2353 -> 2353 (0.00%)
v in affected programs: 0 -> 0
helped: 0
HURT: 0

total t in shared programs: 5530 -> 5530 (0.00%)
t in affected programs: 0 -> 0
helped: 0
HURT: 0

total ls in shared programs: 27975 -> 27975 (0.00%)
ls in affected programs: 0 -> 0
helped: 0
HURT: 0

total code size in shared programs: 6386560 -> 6289664 (-1.52%)
code size in affected programs: 508544 -> 411648 (-19.05%)
helped: 757
HURT: 0
helped stats (abs) min: 128.0 max: 128.0 x̄: 128.00 x̃: 128
helped stats (rel) min: 0.83% max: 33.33% x̄: 31.09% x̃: 33.33%
95% mean confidence interval for code size value: -128.00 -128.00
95% mean confidence interval for code size %-change: -31.57% -30.60%
Code size are helped.

total threads in shared programs: 14698 -> 14698 (0.00%)
threads in affected programs: 0 -> 0
helped: 0
HURT: 0

total loops in shared programs: 166 -> 166 (0.00%)
loops in affected programs: 0 -> 0
helped: 0
HURT: 0

total spills in shared programs: 37 -> 37 (0.00%)
spills in affected programs: 0 -> 0
helped: 0
HURT: 0

total fills in shared programs: 111 -> 111 (0.00%)
fills in affected programs: 0 -> 0
helped: 0
HURT: 0
```

Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36021>
2025-08-07 15:09:56 +00:00
..
ci panvk: Use indirect path for indexed draw on JM 2025-08-04 12:12:55 +00:00
clc nir/precompiled: add shader stage option to nir_precompiled_build_variant 2025-07-09 13:14:41 +01:00
compiler pan/bi: schedule simple iterators to avoid extra move 2025-08-07 15:09:56 +00:00
drm-shim panfrost: Fix group priorities in drm-shim 2025-02-05 13:30:29 +00:00
ds pan: Use a consistent pan_ prefix across src/panfrost/* 2025-05-21 14:58:20 +02:00
genxml build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
lib all: rename gl_shader_stage to mesa_shader_stage 2025-08-06 10:28:40 +08:00
libpan panvk: Parallelize min max index search on JM 2025-08-04 12:12:56 +00:00
midgard all: rename gl_shader_stage_uses_workgroup to mesa_shader_stage_uses_workgroup 2025-08-06 10:28:41 +08:00
perf build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
shared build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
tools pan: Use a consistent pan_ prefix across src/panfrost/* 2025-05-21 14:58:20 +02:00
util panvk: rewrite pan_nir_lower_static_noperspective 2025-08-07 10:33:36 +00:00
vulkan panvk: fix a NULL pointer dereference in occlusion queries 2025-08-07 11:58:53 +00:00
.clang-format panvk: Add basic infrastructure for shader variants 2025-07-21 16:52:44 +00:00
meson.build panfrost: Move genxml out of pan/lib 2025-05-09 09:33:38 +00:00