projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
intel/compiler: Don't cmod propagate into a saturated operation
[mesa.git]
/
src
/
intel
/
compiler
/
brw_vec4_cmod_propagation.cpp
diff --git
a/src/intel/compiler/brw_vec4_cmod_propagation.cpp
b/src/intel/compiler/brw_vec4_cmod_propagation.cpp
index 4454cdbfc94a25e153e2a18357141a10148b99d4..05e651681935f25de6f7527edec38b9b3bddecbc 100644
(file)
--- a/
src/intel/compiler/brw_vec4_cmod_propagation.cpp
+++ b/
src/intel/compiler/brw_vec4_cmod_propagation.cpp
@@
-129,6
+129,14
@@
opt_cmod_propagation_local(bblock_t *block)
scan_inst->opcode == BRW_OPCODE_CMPN)
break;
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)
/* Otherwise, try propagating the conditional. */
enum brw_conditional_mod cond =
inst->src[0].negate ? brw_swap_cmod(inst->conditional_mod)