From 34fe598b39c56b061619097c6e0eef2dffcc0dfb Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 4 Nov 2025 15:12:11 -0800 Subject: [PATCH] brw: Correctly generate conditional modifier for BFN Fixes: 4193895145b ("brw/cmod: Enable limited cmod propagation for BFN") Reviewed-by: Caio Oliveira Part-of: --- src/intel/compiler/brw/brw_generator.cpp | 28 ++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/intel/compiler/brw/brw_generator.cpp b/src/intel/compiler/brw/brw_generator.cpp index b5d69d7ff14..a4b8d57d88f 100644 --- a/src/intel/compiler/brw/brw_generator.cpp +++ b/src/intel/compiler/brw/brw_generator.cpp @@ -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