pan/bi: Disallow FAU for CLPER in bi_check_fau_src

Previously this was allowing invalid forms like
"CLPER.i32.subgroup8.zero lane-id, src1" to reach bi_pack.

This fixes the assert that can be seen with
"dEQP-VK.glsl.derivate.dfdxsubgroup.*" but doesn't fix failures.

Fixes: 0acc6b564e ("pan/bi: Rework FAU lowering")
Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
Reviewed-by: Eric R. Smith <eric.smith@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36006>
This commit is contained in:
Mary Guillemard
2025-07-08 13:13:22 +02:00
committed by Marge Bot
parent 48d716a05f
commit db5ad8e3d2
@@ -2035,6 +2035,11 @@ bi_check_fau_src(bi_instr *ins, unsigned s, uint32_t *constants,
assert(s < ins->nr_srcs);
bi_index src = ins->src[s];
/* CLPER only support registers on source 0 */
if (s == 0 &&
(ins->op == BI_OPCODE_CLPER_OLD_I32 || ins->op == BI_OPCODE_CLPER_I32))
return false;
/* Staging registers can't have FAU accesses */
if (bi_is_staging_src(ins, s))
return (src.type != BI_INDEX_CONSTANT) && (src.type != BI_INDEX_FAU);