intel/compiler: Don't cmod propagate into a saturated operation
[mesa.git] / src / intel / compiler / brw_vec4_cmod_propagation.cpp
index 4454cdbfc94a25e153e2a18357141a10148b99d4..05e651681935f25de6f7527edec38b9b3bddecbc 100644 (file)
@@ -129,6 +129,14 @@ opt_cmod_propagation_local(bblock_t *block)
                 scan_inst->opcode == BRW_OPCODE_CMPN)
                break;
 
+            /* From the Sky Lake PRM Vol. 7 "Assigning Conditional Mods":
+             *
+             *    * Note that the [post condition signal] bits generated at
+             *      the output of a compute are before the .sat.
+             */
+            if (scan_inst->saturate)
+               break;
+
             /* Otherwise, try propagating the conditional. */
             enum brw_conditional_mod cond =
                inst->src[0].negate ? brw_swap_cmod(inst->conditional_mod)