brw: Correctly generate conditional modifier for BFN

Fixes: 4193895145 ("brw/cmod: Enable limited cmod propagation for BFN")
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38251>
This commit is contained in:
Ian Romanick
2025-11-04 15:12:11 -08:00
committed by Marge Bot
parent 904ba2878f
commit 34fe598b39
+26 -2
View File
@@ -1418,8 +1418,32 @@ brw_generator::generate_code(const brw_shader &s,
brw_eu_inst *last = &p->store[last_insn_offset / 16];
if (inst->conditional_mod)
brw_eu_inst_set_cond_modifier(p->devinfo, last, inst->conditional_mod);
if (inst->conditional_mod) {
if (inst->opcode != BRW_OPCODE_BFN) {
brw_eu_inst_set_cond_modifier(p->devinfo, last, inst->conditional_mod);
} else {
unsigned cc;
switch (inst->conditional_mod) {
case BRW_CONDITIONAL_NONE:
cc = 0;
break;
case BRW_CONDITIONAL_Z:
cc = 1;
break;
case BRW_CONDITIONAL_G:
cc = 2;
break;
case BRW_CONDITIONAL_L:
cc = 3;
break;
default:
UNREACHABLE("Invalid cmod for BFN.");
}
brw_eu_inst_set_boolean_func_cond_modifier(p->devinfo, last, cc);
}
}
}
/* When enabled, insert sync NOP after every instruction and make sure