mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-14 00:38:20 +02:00
The liveness analysis treated any output-pack write (D.l / D.h) as a partial definition, refusing to mark the variable as defined in the block. That extended live ranges all the way to the top of the program for every f16 temporary, artificially increasing register pressure. D.l/h only modifies the written bits, leaving the unwritten half bits preserved. So a pack write is a full definition whenever no consumer ever observes the unwritten half, or when both halves are written before the variable is used. This scans every instruction into a per-temp read-flag array (TEMP_READ_LO / TEMP_READ_HI, with FULL = LO | HI) by inspecting each source's input unpack. And recognizes two patterns as full definitions: * Both PACK_L and PACK_H written unconditionally in the same block. * The instruction's pack writes the half that covers every observed read of the variable across the program (the unwritten half is never read). Assisted-by: Claude Opus 4.7 Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41810> |
||
|---|---|---|
| .. | ||
| amd | ||
| android_stub | ||
| asahi | ||
| broadcom | ||
| c11 | ||
| compiler | ||
| drm-shim | ||
| egl | ||
| etnaviv | ||
| freedreno | ||
| gallium | ||
| gbm | ||
| getopt | ||
| gfxstream | ||
| glx | ||
| gtest | ||
| imagination | ||
| imgui | ||
| intel | ||
| kosmickrisp | ||
| loader | ||
| mesa | ||
| microsoft | ||
| nouveau | ||
| panfrost | ||
| poly | ||
| tool | ||
| util | ||
| virtio | ||
| vulkan | ||
| x11 | ||
| .clang-format | ||
| meson.build | ||